Health endpoint
The runner serves GET /healthz on the configured health port. The response is 200 OK whenever the process is alive, whatever state the poll loop is in, so an HTTP probe on this endpoint detects a dead process only. The JSON body describes current state:
{
"status": "ok",
"runner_id": "ccrunner_...",
"active_sessions": 2,
"last_poll_at": "2026-03-31T18:04:11.220Z",
"last_poll_age_ms": 842
}Use last_poll_age_ms as a liveness signal in custom probes; a value that grows unbounded indicates the poll loop is stuck. Both last_poll_at and last_poll_age_ms are null until the first poll completes.
The orchestrator serves its own /healthz on its health port. Its endpoint always returns 200, and the body carries a connected field reporting whether the most recent poll succeeded, plus per-state spawn-queue counts in queue_counts. Gate readiness and alerting on connected rather than the status code.
When the SCM connector is configured, the orchestrator's /healthz body also carries scm_connector_connected and a scm_connector object with connected, last_connected_at, last_error, reconnects, and requests_forwarded. Both fields are null when --scm-connector-host isn't set.