Date: 2026-07-09
Version: Metis v0.2.0
Environment: macOS, Docker Compose v2
docker compose -f docker-compose.yml config --quiet
docker compose build coordinator node-a node-b| Service | Image | Health check | Status |
|---|---|---|---|
| coordinator | metis:latest | GET /health |
✅ Config valid |
| node-a | metis:latest | GET /health |
✅ Config valid |
| node-b | metis:latest | GET /health |
✅ Config valid |
docker-compose.yml— coordinator + 2 worker nodes onmetis-netdocker-compose.prod.yml— production profile with read-only rootfs- Config mounts:
config/docker-cluster.yaml,config/docker-runtime.yaml - Volumes:
metis-memory,metis-config
GET /health returns:
{
"status": "ok",
"service": "metis",
"version": "0.2.0",
"nodes": [],
"circuit_breakers": [],
"knowledge_entries": 0
}With distributed config, nodes lists worker status from cluster registry.
- API keys — set in
.env(not committed):DEEPSEEK_API_KEY,METIS_API_KEY - Local models — use
--profile local-modelsfor Ollama sidecar - MCP — ecosystem presets require separate package install in container
# Validate configs
metis config validate -c config/docker-runtime.yaml
# Unit tests (no Docker required)
pytest tests/test_docker_config.py -q
# Full stack (requires API keys in .env)
docker compose up -d
curl -sf http://localhost:8080/health | jq .
docker compose down- Read-only container filesystem with
tmpfson/tmp— trace and knowledge data persist viametis-memoryvolume - Production mode sets
METIS_PRODUCTION=true— Bearer auth required for/v1/feedbackand/v1/traces/{id}