Prerequisites
- Python 3.13 and uv.
- Daytona API key for Sandbox execution.
- A provider credential. The default
daytona-recursiveprofile uses OpenCode Go (FLEET_OPENCODE_GO_API_KEY,FLEET_OPENCODE_GO_BASE_URL); the managed and benchmark profiles use the Databricks AI Gateway. - A Postgres URL (
FLEET_DATABASE_URL) for durable deployments. Local SQLite is only suitable for development. - Node 22.19+ and pnpm if you want to run the supervised backend plus
pi-tuiviafleet cli.
1. Install fleet-rlm
Clone the repository and sync the extras:2. Choose a profile
Non-secret runtime policy lives inconfig/fleet.toml. Confirm the desired profile in [config] default_profile before starting the backend:
The
pi-tui /profiles command rewrites default_profile for the next restart. See the generated profile matrix for the exact environment names and token caps each profile expects.
3. Configure environment variables
Only variables named by the selected profile are read; process exports win over.env values.
.env
FLEET_MLFLOW_EXPERIMENT_NAME, FLEET_MLFLOW_TRACE_CATALOG, FLEET_MLFLOW_TRACE_SCHEMA, FLEET_MLFLOW_TRACE_TABLE_PREFIX, and FLEET_MLFLOW_TRACING_SQL_WAREHOUSE_ID.
4. Initialize the database
Fleet never applies migrations at startup. Bring the configured database to the canonical Alembic head before running the backend:uv run alembic check.
5. Prepare the Daytona snapshot
Verify the required Daytona base snapshot exists so recursive delegations skip the per-run image pull:uv run fleet doctor daytona for a bounded probe of settings, database head, provider auth, Volume visibility, mount scoping, and interpreter execution before you diagnose a real Turn.
6. Start Fleet
Pick one runtime surface:127.0.0.1 and reject non-loopback binds unless --allow-non-loopback-bind is passed. Backend and MLflow output stream to .fleet_rlm/logs/; latest.log and mlflow-latest.log point to the active files.
Forward arguments to pi-tui after --:
7. Stream a Turn from the API
Every Turn requires anIdempotency-Key. The stream begins immediately with a transient data-status chunk, then emits Runtime Events, and closes with finish + [DONE].
PUT /api/runs/{run_id}/cancellation. Cancelled attempts persist a bounded tombstone in committed history.
Next steps
Installation
Install from source and pin the pi-tui workspace.
Configuration reference
Full
config/fleet.toml and environment matrix.HTTP API
Turn streaming contract and error envelope.
Troubleshooting
Common startup, Daytona, and database errors.