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.
Services
Section titled “Services”crabbox-coordinator
Acceptance plan
Section titled “Acceptance plan”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 |