Skip to main content

Which file is read

docker compose reads the root .env and nothing else. It passes that file to the backend and the agent containers, and passes the VITE_ values to the frontend as build arguments. The per-service files exist for running one service by hand: A value in the wrong file gives you a stack that works one way and not the other. Start with the root file.

Required

Nothing runs without these six. Console mode needs the last three only.

Identity

The service token

One secret with two names. The agent sends BACKEND_API_TOKEN, the backend checks it against AGENT_SERVICE_TOKEN. Set them with openssl rand -hex 32. Without the pair the worker keeps its own LiveKit credentials and the Calls page stays empty.

Console and API

The three VITE_ values are baked into the frontend bundle at image build time. Changing one needs docker compose up -d --build, never restart.

Database and environment

Compose has a working default for each, so the root .env only needs them when you point at a Postgres that is not the bundled one. AGENT_PROMPT_FILE is set literally in docker-compose.yml and is not overridable there. It has to name the mounted prompts directory, and pointing it elsewhere writes a persona the worker never reads.

Optional