version: "3.9" networks: frontend: external: true services: doormile_agents: build: context: . dockerfile: Dockerfile image: doormile-agents:latest container_name: doormile_agents restart: unless-stopped environment: # NATS — event bus. The agents connect with NATS_HOST/NATS_PORT (NATS_URL # is informational), so both must be passed through or every connection # falls back to localhost. - NATS_URL=${NATS_URL} - NATS_HOST=${NATS_HOST} - NATS_PORT=${NATS_PORT} - NATS_USER=${NATS_USER} - NATS_PASSWORD=${NATS_PASSWORD} # Redis — GEO queries, miler presence - REDIS_HOST=${REDIS_HOST} - REDIS_PORT=${REDIS_PORT} - REDIS_PASSWORD=${REDIS_PASSWORD} # Postgres — booking history, outcome tracking - DB_HOST=${DB_HOST} - DB_PORT=${DB_PORT} - DB_NAME=${DB_NAME} - DB_USER=${DB_USER} - DB_PASSWORD=${DB_PASSWORD} # Go backend — internal API calls - GO_API_BASE_URL=${GO_API_BASE_URL} - INTERNAL_API_KEY=${INTERNAL_API_KEY} # AI layer — decision engine - AI_LAYER_BASE_URL=${AI_LAYER_BASE_URL} - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} # Agent behaviour. Outward-facing actions stay gated unless explicitly enabled. - DISPATCH_AGENT_AUTONOMOUS=${DISPATCH_AGENT_AUTONOMOUS:-false} - EXPRESS_AGENT_AUTONOMOUS=${EXPRESS_AGENT_AUTONOMOUS:-false} - EXCEPTION_AGENT_AUTONOMOUS=${EXCEPTION_AGENT_AUTONOMOUS:-false} - DISPATCH_REALERT_EVERY=${DISPATCH_REALERT_EVERY:-100} - LLM_MODEL=${LLM_MODEL:-claude-opus-4-8} # Logging - LOG_LEVEL=${LOG_LEVEL:-INFO} volumes: - ./logs:/app/logs networks: - frontend deploy: resources: limits: cpus: "1.0" memory: 512M reservations: cpus: "0.25" memory: 128M