services: goclaw: image: ghcr.io/nextlevelbuilder/goclaw:full restart: unless-stopped environment: - GOCLAW_GATEWAY_TOKEN=${GOCLAW_GATEWAY_TOKEN:?required} - GOCLAW_ENCRYPTION_KEY=${GOCLAW_ENCRYPTION_KEY:?required} - GOCLAW_POSTGRES_DSN=postgres://${POSTGRES_USER:-goclaw}:${POSTGRES_PASSWORD:-goclaw}@db:5432/${POSTGRES_DB:-goclaw}?sslmode=disable - GOCLAW_HOST=0.0.0.0 - GOCLAW_PORT=18790 - GOCLAW_CONFIG=/app/data/config.json - GOCLAW_SKILLS_DIR=/app/data/skills - GOCLAW_AUTO_UPGRADE=${GOCLAW_AUTO_UPGRADE:-true} # - GOCLAW_MINIMAX_API_KEY=${GOCLAW_MINIMAX_API_KEY:-} # - GOCLAW_TTS_MINIMAX_API_KEY=${GOCLAW_TTS_MINIMAX_API_KEY:-} # - GOCLAW_TTS_MINIMAX_GROUP_ID=${GOCLAW_TTS_MINIMAX_GROUP_ID:-} # - GOCLAW_TRACE_VERBOSE=${GOCLAW_TRACE_VERBOSE:-0} volumes: - goclaw-data:/app/data - goclaw-workspace:/app/workspace depends_on: db: condition: service_healthy healthcheck: test: ["CMD-SHELL", "wget -qO- http://localhost:18790/health || exit 1"] interval: 30s timeout: 5s retries: 3 start_period: 60s extra_hosts: - host.docker.internal:host-gateway init: true security_opt: - no-new-privileges:true cap_drop: - ALL cap_add: - SETUID - SETGID - CHOWN tmpfs: - /tmp:rw,noexec,nosuid,size=256m deploy: resources: limits: memory: 1G cpus: '2.0' pids: 200 # PostgreSQL 18 with pgvector, for agent memory and the knowledge vault. db: image: pgvector/pgvector:pg18 restart: unless-stopped environment: POSTGRES_USER: ${POSTGRES_USER:-goclaw} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-goclaw} POSTGRES_DB: ${POSTGRES_DB:-goclaw} volumes: - db-data:/var/lib/postgresql healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-goclaw} -d ${POSTGRES_DB:-goclaw}"] interval: 5s timeout: 5s retries: 10 volumes: goclaw-data: goclaw-workspace: db-data: