Skip to main content

Project status

What is built, what is not yet, and where the build departs from the architecture plan. Taken from the platform's README.

Where this differs from the plan​

Each was decided against the published sources (Nov 2026):

  • No rig. rig 0.46 needs Rust 1.97.1 and its API is still moving. crates/llm calls the OpenAI-compatible API directly for completions too, which the plan already did for structured output and embeddings. A rig-backed LlmProvider can be added beside it.
  • Template tags. Loco 1.3 renders <%= get_env(...) %> (YAML-safe) and only warns on {{ }}. Definition files use the same tag, rendered by our own loader, so runtime placeholders such as {{ session_id }} stay untouched — the plan's open question about Tera. Quote the tag (key: '<%= ... %>'): an empty default otherwise parses as YAML null.
  • Terminal nodes. A graph-flow task with no outgoing edge pauses rather than ends, so every non-terminal node must have an edge and invoice_v1 ends post with a done node. The compiler enforces this, and refuses any path that reaches a requires_approval connector action without passing a human.approval node.
  • Token forwarding. CopilotKit's runtime accepts an agents factory that receives the request, so each HttpAgent is built with the caller's Authorization header.
  • Added: GET /api/runs/{thread} (status, state and open interrupt of a run started by an upload); approval edits restricted to the card's editable fields; PII hashing of pii.hash_fields at extraction; interrupt ids per approval node ({thread}:{node}).

Not built yet​

Phases 4–6 of the plan's roadmap and parts of 2–3: real accounting adapters (QuickBooks, Xero, Odoo) and the MCP connector; the per-tenant rate-limit layer from policies.yaml; trace redaction; the eval set (evals/); sign-in through an identity provider; collections_v1; tools wired into the model; long steps handed to the worker mid-request; the container images have not been built here.

Checks​

cargo fmt --all --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace # no database needed
cargo test -p bo-app --test http -- --ignored --test-threads=1 # needs PostgreSQL + pgvector
LOCO_ENV=development cargo run -p bo-app -- task config_validate
cargo deny check licenses bans advisories sources
cd web && bun run build && bun run type-check

CI runs all of these (.github/workflows/backoffice-agents.yml), license gate first. .github/workflows/website.yml builds the documentation site.