Docker Compose
Local development stack
Section titled “Local development stack”The checked-in local-development stack lives at docker-compose.yml in the q15 repo and uses templates under deploy/compose/.
Interface
Section titled “Interface”| File | Purpose |
|---|---|
deploy/compose/agent-config.yaml |
Structured agent config |
deploy/compose/proxy-policy.yaml |
Structured proxy policy |
deploy/compose/secrets/ |
Local Docker secret files (from *.example templates) |
deploy/compose/auth/ |
Local OpenAI auth state (from auth.json.example) |
- Initialize secrets
Terminal window make compose-secrets-init - Edit secret files under
deploy/compose/secrets/(remove.examplesuffix) - Edit auth at
deploy/compose/auth/auth.json - Start the stack
Terminal window make compose-up
Image-first deployment
Section titled “Image-first deployment”For production, use the image-first Compose example at deploy/compose/docker-compose.image-first.yml:
make compose-secrets-initQ15_IMAGE_TAG=sha-<short-sha> docker compose -f deploy/compose/docker-compose.image-first.yml up -dThe image-first example:
- Uses
image:only (no local builds) - Requires
Q15_IMAGE_TAGapplied to all three services - Mounts persistent named volumes for all required paths
- Mounts config, policy, and auth at the exact runtime paths the binaries expect
Persistent volumes
Section titled “Persistent volumes”| Volume | Mount | Purpose |
|---|---|---|
q15_workspace |
/workspace |
Durable project tree |
q15_memory |
/memory |
Agent memory |
q15_skills |
/skills |
Skill artifacts |
q15_exec_nix_store |
/nix |
Nix store (keeps packages warm across sessions) |
q15_qdrant_storage |
Qdrant storage | Embedding vectors (when enabled) |