Quickstart
From a fresh checkout to a chatting agent with its first trace.
Prerequisites: Node 22, pnpm, Docker for the backing services, and uv for the source-processing service.
Create your .env
Every app reads one file at the repo root. Copy the template:
cp .env.example .envThe defaults point at the local services started in the next step. Fill in:
MINIO_ACCESS_KEYandMINIO_SECRET_KEY— any values; the local RustFS storage starts with them.QDRANT_URL(andQDRANT_API_KEYif your server needs one) — Qdrant holds knowledge vectors and isn't part of the local stack: use Qdrant Cloud or a local server athttp://127.0.0.1:6333.AI_GATEWAY_API_KEY— see step 4.
Secrets left empty fall back to development-only defaults with a warning.
Start the backing services
deploy/infra runs MongoDB (with Search and Vector Search), Redis, and RustFS
(S3-compatible storage):
cd deploy/infra
docker compose --env-file ../../.env up -dData lives under DOCKER_DATA_DIR (default /mnt/c/DockerData). Its
rustfs, redis, mongodb, mongodb-config, and mongot subfolders must
exist before the first up.
Run the apps
# from the repo root
pnpm install
# terminal 1: the API (http://localhost:8000)
pnpm start:dev
# terminal 2: the worker — runs every background job
pnpm start:worker
# terminal 3: the web UI (http://localhost:3000)
pnpm start:web:devWithout the worker nothing queued ever runs: no ingestion, syncs, scheduled runs, or evaluation runs. See Background work.
Knowledge ingestion also needs the source-processing service, a separate
Python repo that reads the same .env when checked out beside this one:
# in ../SourceProcessing
uv sync
uv run python main.py # http://localhost:9100Check the API is up: GET http://localhost:8000/api/health, and
GET /api/health/ready for whether it can serve.
Give it a model key
Agents call real models. A new organization starts on the Free plan, whose
models run through the Vercel AI Gateway, so set AI_GATEWAY_API_KEY in
.env and restart the API and worker. Direct vendor keys (OPENAI_API_KEY,
ANTHROPIC_API_KEY, GOOGLE_AI_KEY) are optional; plans with bring-your-own
keys can also add providers under Settings → Model Providers — see
Model providers.
Without a provider for the model, the chat is refused with
Model "<name>" is not available: no provider is configured for it.
Create your first agent
Open Agents and create one — blank, or from the Templates tab. Give it a name, instructions, and at least one model; the default model is the one new chats start on. Then open the agent and send a message.
You now have a turn. Everything below is about understanding it.
Open the trace
Go to Tracing. Your turn is the top row of Traces: expand it to see the span chain, and click a row or span to open its drawer, which lists that span's logs with a toggle for the whole trace. The Logs tab shares the agent and time window you picked on Traces; Metrics keeps its own.