Skip to main content

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).