2. Quick start without a GPU
The demo environment runs the whole platform with no model server and no document parser. A
fixture model stands in for the LLM: it always "extracts" the same invoice (INV-1001 from
ACME Supplies, 120.00 GBP). Uploads are read as plain text. Everything else is real: the
workflow engine, approvals, roles, the audit trail, checkpoints and the queue.
You need: Rust 1.94 or newer, Bun 1.4, and PostgreSQL 16 or newer with the pgvector
extension (postgresql-16-pgvector on Debian and Ubuntu).
2.1 Create the database and demo users
cd agents/backoffice-agents
createdb bo_demo
LOCO_ENV=demo cargo run -p bo-app -- db migrate
LOCO_ENV=demo cargo run -p bo-app -- task seed_demo
seed_demo creates a tenant called demo, two users and a vendor, then prints a sign-in token for
each user (shortened here):
tenant `demo` (99be256c-76a9-5fa7-b778-e310b90ad172)
vendor ACME Supplies Ltd (tax id GB123)
clerk: clerk@demo.test (96ffd89e-9397-5834-94b3-c9b7c7d0a2eb)
token: eyJ0eXAiOiJKV1QiLCJhbGci…
approver: approver@demo.test (2ea44f3c-b0d9-5fa3-8b8f-a1e0eca3d1f9)
token: eyJ0eXAiOiJKV1QiLCJhbGci…
Tokens expire in 86400 s. Paste one into the web app, or send it as `Authorization: Bearer <token>`.
You can run it again at any time; it changes nothing that already exists. User ids are fixed per
tenant, so tokens printed earlier keep working. Options: tenant:<slug> (default demo) and
expiration:<seconds> (default 86400).
2.2 Start the backend and the web app
# terminal 1 — backend on :8080 (HTTP server and queue workers)
LOCO_ENV=demo cargo run -p bo-app -- start --server-and-worker
# terminal 2 — web app on :3000
cd web
bun install --omit optional
BO_AGENT_URL=http://localhost:8080 bun run dev
Open http://localhost:3000. To use real models instead, run with LOCO_ENV=development and
point VLLM_CHAT_URL, VLLM_EMBED_URL and DOCLING_URL at your servers (see
§12).