Skip to content

Health and readiness

Liveness (/up)

Laravel’s built-in health route at GET /up confirms the PHP application process is running. It does not verify Postgres or the embedding provider.

Readiness (/health/ready)

GET /health/ready

  • No authentication (for load balancers, Forge, Kubernetes).
  • 200 when all checks pass.
  • 503 when any check fails (body still includes per-check detail).

Response

json
{
  "ready": true,
  "checks": {
    "database": { "ok": true },
    "embedding": { "ok": true }
  }
}

On failure:

json
{
  "ready": false,
  "checks": {
    "database": { "ok": true },
    "embedding": { "ok": false, "error": "..." }
  }
}

Checks

CheckWhat it verifies
databasePostgres reachable (SELECT 1)
embeddingLaravel AI embedding provider returns a non-empty vector for a short probe string (OPENBRAIN_READINESS_PROBE_TEXT, default openbrain-readiness-check)

Poll at a reasonable interval (e.g. every 30s) — each request invokes the embedding provider.

MCP

openbrain_health runs the same checks and returns the same JSON shape. MCP requires Bearer authentication on /mcp in production (see authentication.md).