Skip to main content
fleet-rlm ships as a single FastAPI process that exposes the /api/* SSE surface described in the HTTP API reference. There is no bundled web UI; the maintained client is pi-tui.

Architecture in production

A production deploy needs:
  • fleet-rlm processuv run fleet-rlm serve-api (equivalent to uv run fleet web).
  • Daytona — Sandbox provider (FLEET_DAYTONA_API_KEY).
  • Postgres at the canonical Alembic head — FLEET_DATABASE_URL.
  • LLM provider — OpenCode Go (interactive profiles) or Databricks AI Gateway (managed profile).
  • MLflow (optional) — tracing backend. The daytona-managed profile requires managed Unity Catalog inputs.
Fleet has no caller authentication. Backend launchers default to binding 127.0.0.1 and reject non-loopback hosts unless --allow-non-loopback-bind is passed. In production, terminate TLS and enforce access control at a reverse proxy in front of Fleet on a private interface.

Environment configuration

Select the runtime policy in config/fleet.toml:
Then set only the variables named by that profile:
.env.production
See the configuration reference for the complete matrix.

Initialize the database

Fleet never applies migrations at startup. Bring the database to the canonical Alembic head before starting the backend:

Run the backend

To bind a non-loopback interface behind a proxy, pass the deliberate opt-in:
The /api/settings endpoint still rejects non-loopback clients when the main API is exposed. Route settings edits through pi-tui /settings on a loopback client.

Health probes

Two unauthenticated endpoints are designed for orchestrators and load balancers:

Reverse proxy notes

  • Terminate TLS at the proxy and forward to Fleet on a private interface.
  • Disable response buffering. The Turn stream is Server-Sent Events; buffered proxies will delay data-status heartbeats and Runtime Events.
  • The Turn stream emits a transient data-status chunk every runtime.heartbeat_seconds while preparation resolves. Set the proxy read timeout above that heartbeat.

Verify the deploy

Run the Daytona doctor before load-testing a real Turn:
Then hit the readiness endpoint:

See also

Last modified on August 13, 2026