Skip to main content
fleet-rlm is the RLM-native backend behind Qredence’s Fleet product. It runs one dspy.RLM per Turn against a Daytona Sandbox with a workspace-scoped durable Volume, streams typed Runtime Events over FastAPI Server-Sent Events, and persists committed Turn history and Artifacts through Alembic-managed Postgres. The maintained development client is the pi-tui workspace under tools/fleet-tui/. There is no Fleet-shipped web UI: the earlier browser workspace and dual runtime were removed in the dev-0.7 cutover.

What it is

  • A backend, not an app. src/fleet_rlm/ exposes a small /api/* surface (Sessions, Turns, Attachments, Artifacts, Volume, Skills, Runs) and one SSE Turn stream.
  • RLM-first orchestration. One Turn = one fresh native dspy.RLM run. Root delegation uses Python, native sub-LM queries, or one level of isolated child RLMs according to a cheapest-sufficient ladder.
  • Daytona-backed execution. Every Turn acquires an Interpreter Lease against a Daytona Sandbox and mounts a workspace-scoped Volume. Workspace Memory is durable across Runs and Sandbox replacement.
  • Native scrollback client. pi-tui streams the AI SDK UI message stream and does not own a model, provider key, or Sandbox.

Who it’s for

Operators and researchers who want a certified, policy-driven RLM runtime — with idempotent Turns, durable Artifacts, workspace-scoped Memory, and native DSPy tracing — behind a small SSE HTTP contract they can drive from pi-tui or their own client.

Two runtime surfaces

Supervised backend + pi-tui

uv run fleet cli starts the backend, waits for readiness, then launches pi-tui in the foreground. Requires Node 22.19+ and pnpm.

Backend only

uv run fleet web or uv run fleet-rlm serve-api --port 8000 runs the FastAPI SSE surface without a client. Bind to 127.0.0.1 unless you opt in with --allow-non-loopback-bind.

Policy-selected profiles

Fleet is strict about non-secret runtime policy. config/fleet.toml declares named profiles and [config] default_profile selects which one runs. The shipped default is daytona-recursive; other options include daytona, daytona-managed, and the benchmark profiles.
  • daytona and daytona-recursive route through OpenCode Go with FLEET_OPENCODE_GO_API_KEY and FLEET_OPENCODE_GO_BASE_URL.
  • daytona-managed and the benchmark profiles route through the Databricks AI Gateway with DATABRICKS_TOKEN and FLEET_DATABRICKS_AI_GATEWAY_BASE_URL.
  • Every profile requires FLEET_DAYTONA_API_KEY, and durable deployments require FLEET_DATABASE_URL at the canonical Alembic head.
See the configuration reference for the full env matrix.

Where to go next

Quickstart

Install fleet-rlm, pick a profile, and stream a Turn in a few minutes.

Architecture

Turn coordinator, RLM runner, Run lifecycle, and Daytona substrate.

Recursive RLM

Root delegation ladder, one-level child recursion, and shared budgets.

Daytona runtime

Sandbox lifecycle, Workspace Volume Scope, and Interpreter Leases.

HTTP API

POST /api/sessions/{id}/turns, SSE stream contract, and error envelopes.

CLI reference

fleet cli, fleet doctor daytona, fleet web, and fleet-rlm serve-api.

Source of truth

When the docs disagree with the code, trust the code:
  • Backend routes and SSE contract: src/fleet_rlm/api/.
  • Turn lifecycle: src/fleet_rlm/chat/.
  • Daytona execution: src/fleet_rlm/daytona/.
  • Non-secret runtime policy: config/fleet.toml.
  • Canonical HTTP schema: openapi.yaml.
Last modified on August 13, 2026