openclaw/docker-compose.yml
2026-01-29 07:12:20 -08:00

133 lines
2.9 KiB
YAML

version: '3.8'
services:
# --- UI & Dashboard ---
dashboard:
build:
context: ./dashboard
container_name: clawdhub
restart: unless-stopped
ports:
- "3000:3000"
environment:
- VITE_CLAWDBOT_API=http://clawdbot:18789
- VITE_OPENPOKE_API=http://openpoke:8000
- VITE_AGENT_ZERO_API=http://agentzero:8080
networks:
- clawd-mesh
depends_on:
- clawdbot
- openpoke
- agentzero
# --- Agent Runtimes ---
# Clawdbot (The Headless Runtime)
# Uses the official image or builds from source
clawdbot:
image: ghcr.io/clawdbot/clawdbot:latest
container_name: clawdbot
volumes:
- ./data/clawdbot:/var/lib/clawdbot
- /var/run/docker.sock:/var/run/docker.sock # Needs docker access for tools
environment:
- CLAWDBOT_PORT=18789
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
networks:
- clawd-mesh
# OpenPoke (The Proactive Assistant)
# Requires Postgres and Redis
openpoke:
image: ghcr.io/composiohq/open-poke:latest
container_name: openpoke
ports:
- "8000:8000"
environment:
- DATABASE_URL=postgresql://user:password@postgres:5432/poke
- REDIS_URL=redis://redis:6379
depends_on:
- postgres
- redis
networks:
- clawd-mesh
# Agent Zero (The Autonomous Agent)
agentzero:
image: agentzero/agent-zero:latest
container_name: agentzero
privileged: true # Needs root for OS control
ports:
- "8080:8080"
volumes:
- ./data/agentzero_memory:/app/memory
networks:
- clawd-mesh
# --- Infrastructure & Observability ---
postgres:
image: postgres:15-alpine
- "${CLAWDBOT_GATEWAY_PORT:-18789}:18789"
- "${CLAWDBOT_BRIDGE_PORT:-18790}:18790"
init: true
restart: unless-stopped
command:
[
"node",
"dist/index.js",
"gateway",
"--bind",
"${CLAWDBOT_GATEWAY_BIND:-lan}",
"--port",
"${CLAWDBOT_GATEWAY_PORT:-18789}"
]
moltbot-cli:
image: ${CLAWDBOT_IMAGE:-moltbot:local}
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: poke
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- clawd-mesh
redis:
image: redis:alpine
networks:
- clawd-mesh
prometheus:
image: prom/prometheus
volumes:
- ./observability/prometheus.yml:/etc/prometheus/prometheus.yml
ports:
- "9090:9090"
networks:
- clawd-mesh
grafana:
image: grafana/grafana
ports:
- "3001:3000"
networks:
- clawd-mesh
# Tailscale (Optional - Uncomment to join mesh)
# tailscale:
# image: tailscale/tailscale
# network_mode: host
# privileged: true
# environment:
# - TS_AUTHKEY=${TS_AUTHKEY}
# - TS_STATE_DIR=/var/lib/tailscale
networks:
clawd-mesh:
driver: bridge
volumes:
postgres_data: