Docker Compose Deployment
Run BMAD agents locally with Docker Compose.
Prerequisites
- Docker Engine 24+ with Compose V2
- 4 GB+ RAM available
- An OpenRouter API key
Setup
Step 1: Clone the Repository
git clone https://github.com/t4tarzan/agent0-bmad-k8.git
cd agent0-bmad-k8
Step 2: Configure API Keys
Create the .env.live file with your API keys:
cat > .env.live << 'EOF'
API_KEY_OPENROUTER=sk-or-v1-your-openrouter-key
OPENAI_API_KEY=sk-your-openai-key-for-embeddings
EOF
Step 3: Configure the Agent .env
Create the mounted .env that Agent Zero reads internally:
mkdir -p a0-dotenv
cat > a0-dotenv/.env << 'EOF'
AUTH_LOGIN=admin
AUTH_PASSWORD=your-secure-password
A0_SET_mcp_server_token=your-api-token
A0_SET_chat_model_provider=openrouter
A0_SET_chat_model_name=moonshotai/kimi-k2.5
A0_SET_util_model_provider=openrouter
A0_SET_util_model_name=google/gemini-2.5-flash-preview
A0_SET_embed_model_provider=openai
A0_SET_embed_model_name=text-embedding-3-small
API_KEY_OPENROUTER=sk-or-v1-your-openrouter-key
OPENAI_API_KEY=sk-your-openai-key
EOF
Step 4: Start Agents
# Live demo config (5 agents)
docker compose -f docker-compose.live.yml up -d
# Full BMAD team (9 agents)
docker compose -f docker-compose.bmad.yml up -d
Agents take ~60 seconds to initialize. Check status:
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" | grep bmad
Compose Files
| File | Agents | Ports | Use Case |
|---|---|---|---|
docker-compose.live.yml | 5 | 50001–50005 | Live demo, lighter resource usage |
docker-compose.bmad.yml | 9 | 50001–50009 | Full BMAD team, complete workflow |
Live Demo Agents (5)
| Container | Agent | Port |
|---|---|---|
bmad-live-orchestrator | BMAD (Orchestrator) | 50001 |
bmad-live-analyst | Mary (Analyst) | 50002 |
bmad-live-pm | John (PM) | 50003 |
bmad-live-architect | Fred (Architect) | 50004 |
bmad-live-dev | Dana (Developer) | 50005 |
Volumes
shared-projects— shared between all agents for collaboration artifacts./agents/bmad-{role}/— per-agent profile (prompts, settings, skills)./a0-dotenv/.env— mounted to/a0/.envin each container
Starting the GMeet Interface
# Backend
cd gmeet/backend
npm install
node server.js # Runs on ports 4000 (API) and 4001 (WS)
# Frontend (separate terminal)
cd gmeet/frontend
npm install
npm run dev # Runs on port 5174 with hot reload
Stopping
# Stop containers (preserves volumes)
docker compose -f docker-compose.live.yml down
# Stop and remove volumes
docker compose -f docker-compose.live.yml down -v
Logs and Debugging
# All containers
docker compose -f docker-compose.live.yml logs -f
# Specific agent
docker logs -f bmad-live-orchestrator
# Check agent health
for port in 50001 50002 50003 50004 50005; do
echo -n "Port $port: "
curl -s -o /dev/null -w "%{http_code}" http://localhost:$port/
echo
done