Skip to main content
Fleet RLM installs two equivalent entry points, fleet and fleet-rlm. Run them with uv run from the repository.
Invalid configuration, including an invalid flag value such as --port 0, exits with fleet: error: invalid configuration: … before Fleet starts anything.

MLflow backend

Every command accepts --mlflow local|databricks. Without the flag, Fleet uses [mlflow] mode from config/fleet.toml, which defaults to local. You never select the backend in .env. Environment variables override values only inside the selected backend. uv run fleet cli databricks is shorthand for uv run fleet cli --mlflow databricks. Combining databricks with --mlflow local is an error. The --mlflow env option is retired.

fleet cli

Start the API server, wait for it to become ready, and open the terminal client. Fleet stops the services it started when you exit.
  • If a healthy API server already runs on the configured port, Fleet reuses it only when its MLflow backend, tracking URI, experiments, and trace location match. --url performs the same check. A mismatch aborts the connection. Stop the existing server or set a different FLEET_PORT.
  • If a service exits or misses --startup-timeout, the launch aborts and reports its log. Logs are .fleet/logs/server.log and .fleet/logs/mlflow.log.
  • On exit, Fleet stops the API server first to flush traces, then the MLflow server it owns. Services it reused keep running.
  • Ctrl+C during startup or in the client exits with status 130 after cleanup.

Setup checklist

When fleet cli starts its own server on a loopback address, it first checks your setup. It verifies four sections: Models, Database, MLflow, and Daytona. When every check passes without warnings, Fleet starts the services and opens the client. Otherwise it opens the setup checklist, where you fill in missing settings and save them to .env. See Setup checklist. When standard input isn’t a terminal, Fleet runs the checks without the checklist. If a check fails, it prints “Fleet setup needs attention” with each section’s status and exits with status 1. Run fleet cli in an interactive terminal to fix it. If setup can’t start, Fleet prints Could not complete setup and writes details to .fleet/logs/setup.log. Fleet skips the checklist when you pass --url or reuse a server that’s already running. See Use the terminal for slash commands.

fleet web

Serve the terminal client in a browser. Like fleet cli, it runs the setup checklist, starts the API server and local MLflow, and stops them when you exit. It then prints Fleet RLM Lite web app: <url>.
To bind the web listener to a non-loopback host, set FLEET_ALLOW_NON_LOOPBACK_BIND=true and FLEET_WEB_AUTH_TOKEN to a secret of at least 32 non-whitespace characters. Fleet then accepts a terminal connection only when it carries an Authorization: Bearer <token> header, so put an authenticating proxy in front of the listener that adds the header. Every terminal connection must also come from the origin of --public-url, or of the listener address when you don’t set it.

fleet serve

Start only the FastAPI server.
Fleet rejects a non-loopback bind address unless FLEET_ALLOW_NON_LOOPBACK_BIND=true. The API has no caller authentication, so expose it only behind a separately secured boundary. fleet serve doesn’t start MLflow. With the local backend, the server doesn’t start if MLflow is unreachable. Keep fleet cli running, or start MLflow with the same port and storage:
The eval, optimize, and trace commands also need a running tracking server. With the local backend, they exit with an error if it’s unreachable.

fleet eval

Create evaluation datasets, label traces, and score live runs.

fleet eval dataset

Create the synthetic evaluation dataset. Fleet RLM 0.8.1 removed the --oolong and --longcot flags. Oolong-synth and LongCoT benchmarks now run from development notebooks in a Fleet RLM source checkout. Their traces stay out of the curated optimization dataset.

fleet eval run

Run synthetic cases against a live server and score them. The server must trace into the selected evaluation experiment.

fleet eval label

Write gold labels onto a trace. Partial updates keep existing expectations.

fleet optimize

Evaluate a Session’s reviewed examples and compile a GEPA candidate. This command calls live models and Daytona.
Optimization needs at least eight approved examples from three source groups, captured with replay enabled, including at least one critical holdout example (fleet eval label ... --critical). A passing candidate stays inactive until you approve it. --max-metric-calls bounds the search only. Reflection, judging, and the three final validation passes are additional work. A candidate covers the Turn program’s instructions and the instructions Fleet gives child agents, with separate policies for children that can delegate further and children that can’t. Runtime limits and tool allowlists still come from your configuration, not the candidate. Each rollout runs in its own isolated Sandbox. If Fleet can’t confirm that a rollout’s Sandbox was cleaned up, it stops the run and treats its evidence as invalid. To run optimization on a running server instead, use /optimize in the terminal or the experiments routes.

fleet trace verify

Flush pending trace exports and confirm that one stored trace is readable with its spans.
With the Databricks backend, the command also checks that the experiment is bound to the configured Unity Catalog schema and table prefix.
Last modified on November 8, 2026