Skip to content

crabbox-coordinator

Version 2026.250.0200
Repo box/github.com/opencharly/pod-crabbox:v2026.250.1019

The Crabbox Node.js/PostgreSQL coordinator (https://github.com/openclaw/crabbox, https://github.com/openclaw/crabbox/tree/main/worker/node) as a supervised service. Clones the pinned upstream tag, builds the Node runtime in-image (npm ci –include=dev + build:node + prune — the same recipe as the upstream worker/Dockerfile.node incl. the noVNC vendor step; the devDeps are needed AT BUILD (esbuild), so ci forces them in despite the candy’s NODE_ENV=production runtime env; runtime stays slim via npm prune –omit=dev), and runs node dist-node/server.mjs under supervisord at priority 20 (after the postgresql service’s 10), listening on port 8080 with /v1/health and /v1/ready container probes. The runtime start wrapper assembles DATABASE_URL from deploy-provided POSTGRES_* env (supervisord cannot expand variables), creating the crabbox/crabbox_jobs schemas on startup. Auth is deploy-time: shared-token (CRABBOX_SHARED_TOKEN + _OWNER) or GitHub OAuth — the candy ships none by default. This is the LOCAL, single-replica deployment (upstream flags the Node runtime as newly shipped; exact-tag pin + in-beds proof, no production-cloud cutover claims). Coordinator v0.51.0+ must pair with the v0.51.0 CLI (brokered lease cleanup records cleanupCompletedAt, upstream #1901). The observable, verifiable effect — the built runtime at a fixed path, the supervised service, and live /v1/health + /v1/ready 200s backed by a real PostgreSQL — is exactly what the plan block asserts.

  • crabbox-coordinator

This candy’s plan: — the runnable spec charly check executes against a live deployment. check: steps are idempotent probes; run: steps change state.

Intent Step
run clone the pinned upstream coordinator source (git from layer-gh)
run install the worker’s dependencies INCLUDING dev (esbuild needs them at build; NODE_ENV=production from the candy env would otherwise drop them)
run build the Node runtime (dist-node/server.mjs)
run prune dev dependencies for the slim runtime
run write the runtime start wrapper (assembles DATABASE_URL from deploy env)
check the built Node coordinator runtime is present at the fixed path
check the coordinator start wrapper is installed and executable
check the running coordinator’s /v1/health liveness endpoint responds 200 (node runtime container probe)
check the running coordinator’s /v1/ready readiness endpoint responds 200
check the crabbox-coordinator runs as a supervised service