Skip to main content
GET
/
health
Liveness and basic configuration probe.
curl --request GET \
  --url http://localhost:3774/health
{
  "version": "0.1.0",
  "health": "healthy",
  "runtime": {
    "storage_backend": "Supabase",
    "bus_backend": "EffectPubSub",
    "planner": {
      "model": "openrouter/anthropic/claude-sonnet-4.6",
      "provider": "openrouter",
      "model_id": "anthropic/claude-sonnet-4.6",
      "temperature": 0.3,
      "top_p": null,
      "max_steps": 10
    },
    "recipe_count": 2,
    "did_signing_enabled": true,
    "hydra_integrated": true
  },
  "application": {
    "name": "@bindu/gateway",
    "session_mode": "stateful",
    "gateway_did": "did:bindu:ops_at_example_com:gateway:f72ba681-f873-324c-6012-23c4d5b72451",
    "gateway_id": "f72ba681-f873-324c-6012-23c4d5b72451",
    "author": "ops_at_example_com"
  },
  "system": {
    "node_version": "v22.22.1",
    "platform": "darwin",
    "architecture": "arm64",
    "environment": "development"
  },
  "status": "ok",
  "ready": true,
  "uptime_seconds": 2.4
}

Response

200 - application/json

Gateway is up. Response body describes the process — version, identity, configured planner model, recipe count, uptime. The 200 status is informational, not a health gate: read status and ready in the body to distinguish healthy from degraded.

Detailed gateway health payload. Shape aligned with the per-agent Bindu health (the one a bindufy()-built agent returns), adapted for the coordinator role: gateway_id/gateway_did replace the agent-side penguin_id/agent_did, and runtime reports gateway-specific knobs (planner model, recipe count, DID-signing status) instead of the agent's task-manager fields.

version
string
required

Gateway package version, from gateway/package.json.

Example:

"0.1.0"

health
enum<string>
required

Overall classification.

  • healthy: every boot invariant satisfied, planner model resolves.
  • degraded: non-critical subsystem missing (reserved — no current signals trigger this).
  • unhealthy: a required invariant is broken (e.g. no planner model configured).
Available options:
healthy,
degraded,
unhealthy
runtime
object
required
application
object
required
system
object
required
status
enum<string>
required

Two-state mirror of healthok when healthy, error when unhealthy. Provided for operators that prefer binary.

Available options:
ok,
error
ready
boolean
required

Liveness gate. True when every boot invariant is satisfied. Use this for k8s readiness probes via a jq post-processor.

uptime_seconds
number
required

Seconds since gateway process boot (float, 2 decimal places).

Example:

23.3