Skip to main content
Most deployable Lerian services expose the same three operational HTTP endpoints on their main application port: /health, /readyz, and /version. Orchestrators such as Kubernetes use them to decide when a service is alive, when it can receive traffic, and which build it runs. 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 sit on the main application port, before the authentication middleware. They are public probes, and they stay out of 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 prevent an orchestrator from routing 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. A load balancer therefore does not receive a starting pod 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 /readyz body reports the active DEPLOYMENT_MODE. In saas mode, a dependency reached without TLS fails the readiness (and boot) check. In byoc, TLS is a recommendation, not a requirement.

Multi-tenant readiness

When you enable multi-tenancy, 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 shows Yes where the service registers GET /readyz/tenant/{id}. The route appears when you enable multi-tenancy. A — means the service registers no dedicated per-tenant probe.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.