fleet-rlm treats observability as a first-class runtime concern. Every public Runtime Event is projected as a bounded child span on the active Turn trace, streamed to clients as a typed SSE chunk, and captured in committed history. The live view, the reconciled view, and the committed view stay aligned.
This page describes what you see, where it comes from, and how it is bounded. For the environment names and profile bindings, see Configuration.
Surfaces at a glance
Runtime Event projection
The centralizedEventRecorder in src/fleet_rlm/observability/tracing.py projects every typed public Runtime Event as a Turn.progress.<event-kind> child span under the active Turn trace. The projection covers:
- RLM reasoning summaries.
- Generated code.
- Interpreter output.
- Tool inputs and Tool outputs.
- Status and progress events.
- Structured results.
- Streamed text.
- The committed final answer.
SSE Runtime Event categories
Clients subscribe to Runtime Events through the SSE stream onPOST /api/sessions/{session_id}/turns. The pi-tui timeline and the web UI both render the same categories:
data-statusfor transient preparation, heartbeat, and cancelled parts.- Reasoning parts, code parts, and output text or delta parts.
- Tool invocation views with bounded allowlisted metadata. No learning bodies, no provider paths, and no raw error strings are surfaced.
data-usagefor the turn-level usage summary.artifact.created*chunks that precede the terminalrun.completed.finishfollowed by[DONE]on a normal terminal.abortas the only chunk after cancellation. There is nofinish, nodata-usage, and no checkpoint metadata after it.
Cancellation observability
A cancelled attempt closes the live SSE stream with a singleabort chunk. After settlement, Fleet writes a bounded tombstone to committed history so GET /api/sessions/{session_id}/turns still shows the attempt. The tombstone contains:
- The original user input.
- One assistant message carrying only a
cancelleddata-statuspart. - Observed usage.
- The closed text
Turn cancelled.
MLflow policy
Trace policy lives in the[mlflow] section of config/fleet.toml. This is non-secret TOML policy, not environment configuration. Ambient environment variables cannot override sampling or content bounds.
Fleet enables MLflow DSPy inference autologging for the selected experiment. Compile and evaluator traces stay disabled so live Turn observability is not disturbed by offline optimization runs.
FastAPI lifespan owns one explicit tracing startup attempt and one shutdown flush. Application construction performs no external MLflow probe, so an unavailable setup marks that lifespan inactive rather than poisoning later lifespans.
Tracking destinations by profile
The tracking target follows the selected profile.
For the interactive profiles,
fleet cli starts or reuses a local MLflow server. It checks that GET /version matches the installed MLflow, runs one worker, keeps SQLite metadata under .fleet_rlm/mlflow/mlflow.db, and writes artifacts to .fleet_rlm/mlflow/artifacts. It never stops a reused process.
For the managed profile, set the Unity Catalog destination through these environment names:
FLEET_MLFLOW_EXPERIMENT_NAMEFLEET_MLFLOW_TRACE_CATALOGFLEET_MLFLOW_TRACE_SCHEMAFLEET_MLFLOW_TRACE_TABLE_PREFIXFLEET_MLFLOW_TRACING_SQL_WAREHOUSE_ID
fleet web and fleet-rlm serve-api do not supervise a local MLflow server. Start the configured tracking server separately before serving Turns that need to be traced. See CLI for the supervised startup contract.
Backend logs
Backend and owned MLflow process output land in timestamped files under.fleet_rlm/logs/. Two symlinks point to the active files:
.fleet_rlm/logs/latest.logfor the backend..fleet_rlm/logs/mlflow-latest.logfor the supervised MLflow server.
rlm.verbose setting controls native DSPy host logs only. It does not control the typed Runtime Events projected through SSE or the terminal client. If you need more detail in the timeline, adjust the event projection, not rlm.verbose.
Health probes
Two unauthenticated probes report process status:GET /healthreturns liveness.GET /readyreturns readiness. When a critical dependency is missing,/readyreturns503with the same body payload so supervisors and load balancers see one shape.
Doctor diagnostics
uv run fleet doctor daytona runs a bounded environment probe for the Daytona profiles. It checks:
- Settings loading and profile resolution.
- Database connectivity and Alembic head alignment.
- Provider authentication for the selected models.
- Volume visibility for the configured Workspace Volume.
- Scoped mounting of that Volume.
- Interpreter execution inside a disposable Sandbox.
finally. It creates no Fleet domain rows, prints only bounded diagnostic categories, and points to corrective actions when a check fails.
For guided remediation, see Troubleshooting.
See also
Configuration
Profiles, MLflow policy fields, and managed destination environment names.
HTTP and SSE API
Turn SSE contract,
abort semantics, and cancelled tombstones.CLI
fleet cli supervision of the local MLflow server and fleet doctor daytona.Troubleshooting
Reading backend logs, health probes, and doctor output when Turns misbehave.