Back-office Agents
Back-office Agents turns a business document into an accounting entry, with a person in the
loop. A document comes in, its fields are extracted, checked and matched against your records,
someone with the right role approves, the result is posted to accounting, and every step is
written to a tamper-evident audit trail. The first workflow is supplier invoice processing
(invoice_v1).
The platform lives in
agents/backoffice-agents/
of the CEDM specification repository.
What makes it different
- Behaviour is YAML. Workflows, prompts, extraction schemas, connectors, roles, policies and
per-tenant overrides live in
config/agents/. Changing a threshold, or adding a workflow built from existing steps, needs no Rust, only a restart. - A mistake stops boot. A typo, an unknown step type, a dangling reference, a disallowed model license, or a payment reachable without an approval each refuse to start the server, naming the file or node.
- Approvals are real. Who may decide is a role, the person who started a run cannot approve it (four-eyes), only the fields the workflow marks editable can be changed, and a run waiting for a decision survives a restart.
- Posting happens once. Calls to accounting go through an idempotency key reserved before the call, so a replayed decision, a second worker or a retry never posts twice.
- Open source throughout. Every dependency, model and service is under an OSI-approved license, and CI holds that with a license gate that runs first.
How it is built
| Part | What it is |
|---|---|
| Backend | One Loco.rs application: HTTP server, PostgreSQL job queue, scheduler, tasks and CLI, plus framework-free library crates behind traits. |
| Workflow engine | graph-flow graphs, compiled at boot from the YAML and a registry of Rust task kinds. |
| Frontend | CopilotKit v2 on Next.js, talking AG-UI 1.0 over server-sent events. |
| Models | Any OpenAI-compatible endpoint (vLLM in production); a fixture model for tests and demos. |
| Documents | docling-serve for parsing; a plain_text parser for tests and demos. |
| Storage | PostgreSQL with pgvector: business data, checkpoints, approvals, the audit log and the queue. |
Where to go next
| If you want to… | Read |
|---|---|
| See it work in five minutes, without a GPU | Quick start |
| Understand the moving parts | How it fits together, then Concepts |
| Approve an invoice in the web app | Using the web app |
| Change what a workflow does | Writing a workflow and the definition reference |
| Give one customer different rules | Tenants |
| Connect a real accounting system | Connectors and exactly-once posting |
| Call it from your own client | HTTP and AG-UI |
| Run it in production | Running in production and Troubleshooting |
| Add a new kind of step | Extending it in Rust |
| Know what is not built yet | Project status |
| Read the original design | Architecture and build plan |
Unfamiliar term? See the Glossary.