name: subpool services: subpool: image: ${SUBPOOL_IMAGE:-public.ecr.aws/cloudpilotai/subpool:latest} pull_policy: always restart: unless-stopped depends_on: postgres: condition: service_healthy environment: SUBPOOL_API_LISTEN_ADDRESS: ":8080" SUBPOOL_CONSOLE_LISTEN_ADDRESS: ":8081" SUBPOOL_PUBLIC_URL: ${SUBPOOL_PUBLIC_URL:-http://localhost:8081} SUBPOOL_DATABASE_URL: postgres://${POSTGRES_USER:-subpool}:${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB:-subpool}?sslmode=disable SUBPOOL_ADMIN_USERNAME: ${SUBPOOL_ADMIN_USERNAME:?Set SUBPOOL_ADMIN_USERNAME} SUBPOOL_ADMIN_PASSWORD: ${SUBPOOL_ADMIN_PASSWORD:?Set SUBPOOL_ADMIN_PASSWORD} SUBPOOL_TRUSTED_PROXY_CIDRS: ${SUBPOOL_TRUSTED_PROXY_CIDRS:-} SUBPOOL_CREDENTIAL_KEY: ${SUBPOOL_CREDENTIAL_KEY:?Set SUBPOOL_CREDENTIAL_KEY} SUBPOOL_API_KEY_HMAC_KEY: ${SUBPOOL_API_KEY_HMAC_KEY:?Set SUBPOOL_API_KEY_HMAC_KEY} SUBPOOL_CODEX_QUOTA_ROUTING: ${SUBPOOL_CODEX_QUOTA_ROUTING:-false} SUBPOOL_RESET_NOTICE_ENABLED: ${SUBPOOL_RESET_NOTICE_ENABLED:-false} SUBPOOL_RESET_NOTICE_MCP_URL: ${SUBPOOL_RESET_NOTICE_MCP_URL:-} SUBPOOL_RESET_NOTICE_MCP_AUTHORIZATION: ${SUBPOOL_RESET_NOTICE_MCP_AUTHORIZATION:-} SUBPOOL_RESET_NOTICE_MCP_TOOL: ${SUBPOOL_RESET_NOTICE_MCP_TOOL:-slack__slack_send_message} SUBPOOL_RESET_NOTICE_CHANNEL: ${SUBPOOL_RESET_NOTICE_CHANNEL:-} SUBPOOL_GESTA_USAGE_REPORT_URL: ${SUBPOOL_GESTA_USAGE_REPORT_URL:-} SUBPOOL_GESTA_USAGE_REPORT_TOKEN: ${SUBPOOL_GESTA_USAGE_REPORT_TOKEN:-} SUBPOOL_REPORT_PEOPLE: ${SUBPOOL_REPORT_PEOPLE:-} SUBPOOL_RESPONSES_WS_ENABLED: ${SUBPOOL_RESPONSES_WS_ENABLED:-true} SUBPOOL_RESPONSES_WS_FORCE_HTTP_BRIDGE: ${SUBPOOL_RESPONSES_WS_FORCE_HTTP_BRIDGE:-false} SUBPOOL_UPSTREAM_RESPONSE_HEADER_TIMEOUT: ${SUBPOOL_UPSTREAM_RESPONSE_HEADER_TIMEOUT:-3m} SUBPOOL_MAX_REQUEST_BODY_BYTES: ${SUBPOOL_MAX_REQUEST_BODY_BYTES:-268435456} SUBPOOL_MAX_INFLIGHT_REQUEST_BODY_BYTES: ${SUBPOOL_MAX_INFLIGHT_REQUEST_BODY_BYTES:-1073741824} SUBPOOL_REQUEST_BODY_READ_TIMEOUT: ${SUBPOOL_REQUEST_BODY_READ_TIMEOUT:-5m} SUBPOOL_COPILOT_CLIENT_ID: ${SUBPOOL_COPILOT_CLIENT_ID:-Iv1.b507a08c87ecfe98} SUBPOOL_COPILOT_API_BASE: ${SUBPOOL_COPILOT_API_BASE:-https://api.githubcopilot.com} SUBPOOL_COPILOT_TOKEN_EXCHANGE_URL: ${SUBPOOL_COPILOT_TOKEN_EXCHANGE_URL:-https://api.github.com/copilot_internal/v2/token} SUBPOOL_ANTIGRAVITY_CLIENT_ID: ${SUBPOOL_ANTIGRAVITY_CLIENT_ID:-} SUBPOOL_ANTIGRAVITY_CLIENT_SECRET: ${SUBPOOL_ANTIGRAVITY_CLIENT_SECRET:-} SUBPOOL_ANTIGRAVITY_BASE_URL: ${SUBPOOL_ANTIGRAVITY_BASE_URL:-https://cloudcode-pa.googleapis.com} SUBPOOL_ANTIGRAVITY_USER_AGENT: ${SUBPOOL_ANTIGRAVITY_USER_AGENT:-antigravity/hub/2.23.0 windows/amd64} ports: - "${SUBPOOL_PORT:-8080}:8080" - "${SUBPOOL_CONSOLE_PORT:-8081}:8081" healthcheck: test: ["CMD", "wget", "-q", "--spider", "http://127.0.0.1:8080/healthz"] interval: 10s timeout: 3s retries: 5 start_period: 15s security_opt: - no-new-privileges:true postgres: image: postgres:17-alpine restart: unless-stopped environment: POSTGRES_USER: ${POSTGRES_USER:-subpool} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD} POSTGRES_DB: ${POSTGRES_DB:-subpool} volumes: - subpool-postgres:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"] interval: 5s timeout: 3s retries: 10 security_opt: - no-new-privileges:true volumes: subpool-postgres: