Reverse proxy in front
serve speaks plain HTTP on its published port and puts nothing in front of it —
terminate TLS at your own reverse proxy or load balancer and forward to that
port. The Studio and the /api surface share one origin, so there is nothing to
split.
Some features need the public origin spelled out rather than inferred:
connectors accept an OAuth redirect only when its origin
is in CONNECTORS_REDIRECT_URI_ALLOWLIST, and the OIDC accounts provider needs an
https public base URL. See TLS and the front door.
Backups
The application state lives in Postgres and Redis, and in the two persistent mounts (the config directory and the plugin prefix). Back up all of them.- Datastores — snapshot the Postgres and Redis volumes on your own schedule; the image holds no state.
- Stored platform state — the runtime exports its own state (access-control
policies, presets, and whatever else plugins register) as a backup document
with
tai backup export. See Back up and restore. - Config — keep
config/manifest.ymland the plugin prefix, so a restored server boots with the same manifest and the same runtime-installed plugins.
Health probes
The server exposes two unauthenticated routes for orchestrators and load balancers:
Both are served public by the app’s own route-level declaration — no manual
allowlisting, and listing them in an always-public prefix is rejected at boot as a
conflict. The bundle’s serve healthcheck already probes
/health. See
Liveness and readiness.
Observability
tai metrics serves the Prometheus multiprocess endpoint on its own port; on
Kubernetes it runs as a native sidecar in both Deployments. Query traces and
aggregate metrics with tai obs. See Observe.
See also
- Deploy — transports, workers, access control at deploy.
- Manage a fleet — the worker census and fleet-wide operations.

