Skip to main content
Most deployable Lerian services expose the same three operational HTTP endpoints — /health, /readyz, and /version — on their main application port. Orchestrators such as Kubernetes use them to decide when a service is alive, when it can receive traffic, and which build is running. This is the standard probe contract, not a guarantee for every service: some components — workers and sidecars — expose only a subset. The per-service coverage table below is authoritative for exceptions.

The probe endpoints

The spellings are exactly /health and /readyz — not /healthz or /livez. All three probes are registered on the main application port, before the authentication middleware (they are public probes), and are excluded from access logs and request tracing.

The /readyz response body

/readyz returns a JSON document describing overall readiness and each dependency check.
Status vocabulary is a closed set:
  • Overall status: healthy or unhealthy.
  • Per-check status: up, down, degraded, skipped, n/a.
/readyz returns HTTP 200 only when overall status is healthy. If any check is down or degraded, it returns HTTP 503.

Startup and shutdown behavior

The probes are wired so an orchestrator never routes traffic to a service that cannot serve it.
  • Startup self-probe. /readyz returns 503 (“server not ready”) until the listener is up and dependencies are reachable — so a starting pod is not added to a load balancer prematurely, even if /health already answers 200.
  • Graceful drain. On SIGTERM, the service flips /readyz to 503 for a drain window (about 12 seconds) while /health stays 200. Orchestrators stop routing new traffic during the window, then the process exits once in-flight work drains. The window is tunable via READYZ_DRAIN_DELAY_SEC (some services use READYZ_DRAIN_GRACE_SECONDS).
  • Deployment mode. The active DEPLOYMENT_MODE is echoed in the /readyz body. In saas mode, a dependency reached without TLS fails the readiness (and boot) check; in byoc it is recommended but not enforced.

Multi-tenant readiness

When multi-tenancy is enabled, the service adds an auth-gated per-tenant readiness probe:
It runs the readiness checks against a single tenant’s resolved connections. The global /readyz reports tenant-scoped checks as n/a and points to the per-tenant route.

Per-service coverage

Every service below exposes /health (liveness) and /readyz (readiness) on its main port. The table lists default ports, the multi-tenant probe where it applies, and the two path deviations.
Multi-tenant readyz is marked Yes where the service registers GET /readyz/tenant/{id}; it appears when multi-tenancy is enabled. A means no dedicated per-tenant probe is registered for that service.Ports are compose/.env.example defaults and can be overridden per deployment — see Default network ports. Varies marks a service whose default port depends on deployment configuration.