Why this exists

Cloudbox has two proof layers:

  1. Computer proof — the runner started, became ready, and responded.
  2. 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
  • runnerReceipts includes runner.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, or src/runner-lifecycle.ts