* Broker GitHub integration token for computer git/gh Use the Integrations GitHub MCP secret for supervisor broker sessions so home and project computers can clone private repos without PAT prompts. Add rakazo git/gh shims, push policy, deploy image rebuild, and tests. Co-authored-by: cynarAI <cynarAI@users.noreply.github.com> * ci: retrigger product checks after runner timeout Co-authored-by: cynarAI <cynarAI@users.noreply.github.com> * ci: run product change detection on GitHub-hosted runners Co-authored-by: cynarAI <cynarAI@users.noreply.github.com> * style: format deployment-github-token Co-authored-by: cynarAI <cynarAI@users.noreply.github.com> * ci: self-hosted change detection with timeout and fail-open gate Keep Detect product changes on evoo-ci with a 10-minute cap, continue-on-error filtering, and a fail-open product flag when detection fails. Downstream jobs and Product CI treat a failed or timed-out changes job as full product impact. Add job timeouts on remaining self-hosted ci jobs. Co-authored-by: cynarAI <cynarAI@users.noreply.github.com> * fix: continueRun tests and broker home path guard - Skip broker workspace resolution when computer homeKey is absent - Add shared continue-run Prisma/home/secretStore test stubs - Update computer PATH expectation and evo-deploy command sequence - Remove unused executor imports flagged by Biome Co-authored-by: cynarAI <cynarAI@users.noreply.github.com> * style: Biome format and import order for broker CI Co-authored-by: cynarAI <cynarAI@users.noreply.github.com> * fix: compose YAML, typecheck for broker stubs and GitHub hint Co-authored-by: cynarAI <cynarAI@users.noreply.github.com> * ci: retrigger Product CI after compose and typecheck fixes Co-authored-by: cynarAI <cynarAI@users.noreply.github.com> * ci: retry Product CI queue Co-authored-by: cynarAI <cynarAI@users.noreply.github.com> * ci: give self-hosted Web E2E a 45m job timeout Co-authored-by: cynarAI <cynarAI@users.noreply.github.com> * ci: extend Web E2E job timeout to 60m on self-hosted runners Co-authored-by: cynarAI <cynarAI@users.noreply.github.com> * fix: keep github-broker-token off the core browser barrel Export broker HMAC helpers only from @rakazo/core/node/github-broker-token so Vite does not pull node:crypto into the web client and break Playwright signup. Co-authored-by: cynarAI <cynarAI@users.noreply.github.com> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>
153 lines
5.5 KiB
YAML
153 lines
5.5 KiB
YAML
services:
|
|
postgres:
|
|
image: ${POSTGRES_IMAGE:-postgres:16}
|
|
environment:
|
|
# USER/PASSWORD/DB apply only on first pgdata init. Keep existing values in
|
|
# .env, or ALTER ROLE / rename in place. Recreate pgdata only after backup
|
|
# (or when the volume is disposable); down -v deletes all DB state.
|
|
POSTGRES_USER: ${POSTGRES_USER:-rakazo}
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env}
|
|
POSTGRES_DB: ${POSTGRES_DB:-rakazo}
|
|
volumes:
|
|
- pgdata:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-rakazo} -d ${POSTGRES_DB:-rakazo}"]
|
|
interval: 3s
|
|
timeout: 5s
|
|
retries: 20
|
|
|
|
supervisor:
|
|
build:
|
|
context: ../..
|
|
dockerfile: infra/sandboxes/supervisor/Dockerfile
|
|
environment:
|
|
DATA_DIR: /data
|
|
SUPERVISOR_HOST: "0.0.0.0"
|
|
SUPERVISOR_PORT: "7091"
|
|
DOCKER_SOCKET: /var/run/docker.sock
|
|
RAKAZO_COMPUTER_IMAGE: rakazo/computer:local
|
|
RAKAZO_COMPUTER_MEMORY: ${RAKAZO_COMPUTER_MEMORY:-2g}
|
|
RAKAZO_COMPUTER_CPUS: ${RAKAZO_COMPUTER_CPUS:-2}
|
|
RAKAZO_COMPUTER_PIDS_LIMIT: ${RAKAZO_COMPUTER_PIDS_LIMIT:-2048}
|
|
SANDBOX_COMMAND_TIMEOUT_MS: ${SANDBOX_COMMAND_TIMEOUT_MS:-300000}
|
|
SANDBOX_TEAM_SCREEN_LIMIT: ${SANDBOX_TEAM_SCREEN_LIMIT:-0}
|
|
SANDBOX_SUPERVISOR_TOKEN: ${SANDBOX_SUPERVISOR_TOKEN:?Set SANDBOX_SUPERVISOR_TOKEN in .env}
|
|
SANDBOX_GITHUB_BROKER_URL: ${SANDBOX_GITHUB_BROKER_URL:-http://host.docker.internal:7091/internal/github-broker}
|
|
SANDBOX_SCREEN_NETWORK: isolated
|
|
LOG_LEVEL: ${LOG_LEVEL:-info}
|
|
LOG_FORMAT: ${LOG_FORMAT:-}
|
|
AXIOM_TOKEN: ${AXIOM_TOKEN:-}
|
|
AXIOM_DATASET: ${AXIOM_DATASET:-}
|
|
AXIOM_EDGE: ${AXIOM_EDGE:-}
|
|
AXIOM_EDGE_URL: ${AXIOM_EDGE_URL:-}
|
|
ports:
|
|
- "127.0.0.1:7091:7091"
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
- ../../data:/data
|
|
depends_on:
|
|
computer:
|
|
condition: service_completed_successfully
|
|
|
|
computer:
|
|
image: rakazo/computer:local
|
|
build:
|
|
context: ../sandboxes/computer
|
|
command: ["true"]
|
|
restart: "no"
|
|
|
|
data-init:
|
|
image: ${BUSYBOX_IMAGE:-busybox:1}
|
|
command: ["chown", "-R", "1000:1000", "/data"]
|
|
restart: "no"
|
|
volumes:
|
|
- ../../data:/data
|
|
|
|
api:
|
|
build:
|
|
context: ../..
|
|
dockerfile: infra/compose/Dockerfile
|
|
command: ["bash", "-lc", "pnpm --filter @rakazo/db exec prisma migrate deploy && pnpm --filter @rakazo/api start"]
|
|
env_file:
|
|
- ../../.env
|
|
environment:
|
|
DATABASE_URL: postgres://${POSTGRES_USER:-rakazo}:${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env}@postgres:5432/${POSTGRES_DB:-rakazo}
|
|
API_HOST: "0.0.0.0"
|
|
DATA_DIR: /data
|
|
SANDBOX_SUPERVISOR_URL: http://supervisor:7091
|
|
SANDBOX_GITHUB_BROKER_URL: ${SANDBOX_GITHUB_BROKER_URL:-http://host.docker.internal:7091/internal/github-broker}
|
|
WAKEUP_DRIVER: graphile
|
|
SANDBOX_PROVIDER: docker
|
|
CLOUD_AGENT_PROVIDER: ${CLOUD_AGENT_PROVIDER:-none}
|
|
CLOUD_AGENT_SPACE_ID: ${CLOUD_AGENT_SPACE_ID:-}
|
|
CURSOR_API_KEY: ${CURSOR_API_KEY:-}
|
|
AGENT_RUNTIME: pi
|
|
# Optional egress proxy (Mainland / corporate). Empty = unset; either case works.
|
|
HTTP_PROXY: ${HTTP_PROXY:-${http_proxy:-}}
|
|
HTTPS_PROXY: ${HTTPS_PROXY:-${https_proxy:-}}
|
|
NO_PROXY: ${NO_PROXY:-${no_proxy:-}}
|
|
http_proxy: ${http_proxy:-${HTTP_PROXY:-}}
|
|
https_proxy: ${https_proxy:-${HTTPS_PROXY:-}}
|
|
no_proxy: ${no_proxy:-${NO_PROXY:-}}
|
|
ports:
|
|
- "127.0.0.1:3100:3100"
|
|
volumes:
|
|
- ../../data:/data
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
data-init:
|
|
condition: service_completed_successfully
|
|
|
|
worker:
|
|
build:
|
|
context: ../..
|
|
dockerfile: infra/compose/Dockerfile
|
|
command: ["pnpm", "--filter", "@rakazo/worker", "start"]
|
|
env_file:
|
|
- ../../.env
|
|
environment:
|
|
BETTER_AUTH_SECRET: ""
|
|
DATABASE_URL: postgres://${POSTGRES_USER:-rakazo}:${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD in .env}@postgres:5432/${POSTGRES_DB:-rakazo}
|
|
DATA_DIR: /data
|
|
SANDBOX_SUPERVISOR_URL: http://supervisor:7091
|
|
SANDBOX_GITHUB_BROKER_URL: ${SANDBOX_GITHUB_BROKER_URL:-http://host.docker.internal:7091/internal/github-broker}
|
|
WAKEUP_DRIVER: graphile
|
|
SANDBOX_PROVIDER: docker
|
|
CLOUD_AGENT_PROVIDER: ${CLOUD_AGENT_PROVIDER:-none}
|
|
CLOUD_AGENT_SPACE_ID: ${CLOUD_AGENT_SPACE_ID:-}
|
|
CURSOR_API_KEY: ${CURSOR_API_KEY:-}
|
|
SCREEN_PROXY_SECRET: ""
|
|
AGENT_RUNTIME: pi
|
|
# Optional egress proxy (Mainland / corporate). Empty = unset; either case works.
|
|
HTTP_PROXY: ${HTTP_PROXY:-${http_proxy:-}}
|
|
HTTPS_PROXY: ${HTTPS_PROXY:-${https_proxy:-}}
|
|
NO_PROXY: ${NO_PROXY:-${no_proxy:-}}
|
|
http_proxy: ${http_proxy:-${HTTP_PROXY:-}}
|
|
https_proxy: ${https_proxy:-${HTTPS_PROXY:-}}
|
|
no_proxy: ${no_proxy:-${NO_PROXY:-}}
|
|
volumes:
|
|
- ../../data:/data
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
data-init:
|
|
condition: service_completed_successfully
|
|
|
|
web:
|
|
build:
|
|
context: ../..
|
|
dockerfile: infra/compose/Dockerfile
|
|
command: ["pnpm", "--filter", "@rakazo/web", "preview", "--host", "0.0.0.0", "--port", "5173"]
|
|
environment:
|
|
API_PROXY_TARGET: http://api:3100
|
|
SCREEN_PROXY_SECRET: ${SCREEN_PROXY_SECRET:?Set SCREEN_PROXY_SECRET in .env}
|
|
RAKAZO_HOST: ${RAKAZO_HOST:-localhost}
|
|
ports:
|
|
- "127.0.0.1:5173:5173"
|
|
depends_on:
|
|
- api
|
|
|
|
volumes:
|
|
pgdata:
|