Why this exists
Cloudbox has two proof layers:
- Computer proof — the runner started, became ready, and responded.
- Work proof — the repo cloned, commands ran, verification passed, and an artifact returned.
Runner readiness checks the first layer directly.
Built-in script
CLOUDBOX_E2E_URL=https://YOUR-CLOUDBOX.workers.dev \
CLOUDBOX_API_TOKEN=$CLOUDBOX_API_TOKEN \
node scripts/proof-runner-readiness.mjs
The script writes:
artifacts/RUNNER_READINESS.md
It verifies:
- the API returns
ok: true - the artifact contains the nonce written by the command
runnerReceiptsincludesrunner.container.ready
Reading runner receipts
A healthy run includes events like:
[
{ "type": "runner.container.start", "alreadyRunning": false },
{ "type": "runner.container.ready_attempt", "attempt": 1, "ok": true },
{ "type": "runner.container.ready", "attempt": 1, "elapsedMs": 1306 },
{ "type": "runner.response", "status": 200 }
]
If the runner cannot listen on the exposed port, the response should include runner.container.not_ready instead of failing mysteriously.
When to run it
Run runner readiness:
- after deploying Cloudbox
- nightly from GitHub Actions
- before sharing a demo link
- after changing
runner/,src/runner-do.ts, orsrc/runner-lifecycle.ts