Fleet 2.9.1 is out.See what's new →
FleetFleet
Fleetctl for developers

Run a fleet of coding agents.
Beyond a session view.

You write the ticket. Fleet executes the saved workflow you designed — so agents running through Claude Code or OpenCode can open a PR, review it, and pass it through a governed merge step without hidden handoffs. Models include Claude, Codex, Grok, and whatever else those harnesses support.

$ curl -fsSL https://fleetctl.ai/install | sh
terminal
$ fleet up
✓ worker ready · 3 agent types synced
$ # run the saved Ship a feature workflow…
Refine → done
Develop → PR #42 opened
Review → pass
Approve → awaiting approval
Merge → merged ✓

Configure the worker locally, build the workflow visually

YAML declares repositories, agents, and types. The dashboard declares steps, dependencies, retries, and approval gates.

# .fleet/config.yaml
types:
  - name: developer
    model: claude-sonnet
  - name: reviewer
    model: claude-opus       # judgment-heavy → stronger model
  - name: release-manager
    model: claude-sonnet

agents:
  - name: backend-dev
    role: developer
  - name: code-reviewer
    role: reviewer
  - name: release-manager
    role: release-manager

Use efficient models for routine types and a stronger model where judgment matters. Then bind those types to steps in a saved workflow. See the full walkthrough in the step-by-step guide.

What you'd build by hand vs. what Fleet handles

You can wire this together yourself with tmux and worktrees. Here's what you'd be signing up to maintain.

The DIY approach

  • Open a terminal per agent and a worktree per branch
  • Notice when one agent finishes and manually tell the next to start
  • Relay context between agents by reading output and re-prompting
  • Cap how long each agent runs by babysitting sessions yourself
  • Hope nobody's agent deletes tests to make them pass
  • Reconstruct what happened from git history when something breaks

With Fleet

  • Each agent gets its own tmux session and worktree automatically
  • A code step opens a PR; the next review step receives the real diff
  • Context moves across explicit dependency edges and persisted run state
  • Per-agent run-time budgets with hard ceilings
  • A separate risk model auto-quarantines a drifting agent before it ships
  • Every decision written to an audit trail you can query with fleet log

Fleetctl API documentation

Authentication, endpoints, and example requests on this page — not a marketing shell.

Fleetctl is not Claude Code, not OpenCode, and not FleetView. The locally installed binary runs Claude Code or OpenCode against your repositories. Hosted Streamable HTTP MCP is https://app.fleetctl.ai/mcp. Local stdio MCP is fleet mcp serve. Any MCP client can connect.

Authentication

Public discovery on fleetctl.ai (/openapi.json, /api/health, /api/v1/health, /api/catalog) needs no credential. Hosted MCP and control-plane writes use OAuth — there are no long-lived raw API keys. Humans start a free tier at app.fleetctl.ai, then run fleet login or the dashboard OAuth prompt. Workloads generate a registration code in the dashboard and run fleet admin register, which issues the client credential. Resource metadata: /.well-known/oauth-protected-resource.

Endpoints

  • GET /openapi.json — OpenAPI 3.1, unique operationIds, typed JSON schemas
  • GET /api/v1/health — unauthenticated health JSON (alias /api/health)
  • GET /api/v1/catalog — developer resource catalog
  • GET /api/does-not-exist — RFC 9457 application/problem+json with code, detail, and resolution
  • GET /.well-known/mcp.json — Streamable HTTP MCP manifest
  • /docs/api-reference/ — versioning, deprecation, RateLimit, and auth
  • /developers/ — name-based Fleetctl developer index

Example requests

# Public discovery — no credential
curl -sS https://fleetctl.ai/openapi.json
curl -sS https://fleetctl.ai/api/v1/health
curl -sS https://fleetctl.ai/api/does-not-exist
# RFC 9457 application/problem+json: code, detail, resolution
# Hosted MCP after OAuth
curl -sS https://fleetctl.ai/.well-known/mcp.json
curl -fsSL https://fleetctl.ai/install | sh

Frequently asked questions

Do I have to replace Claude Code, Codex, or OpenCode?

No. Fleet orchestrates the agents you already use. Coding work runs through Claude Code or OpenCode, including models those harnesses support such as Claude, Codex, and Grok. Fleet starts their sessions, routes work between them, and adds governance — it is not its own coding model.

Do I need Docker?

No. Fleet installs as a local binary on your machine or server, with no container runtime. It uses SQLite, tmux, git, the GitHub CLI, and Claude Code or OpenCode, and connects to the hosted dashboard after registration.

How many agents can I run?

Fleet does not price by agent or role. The free tier includes 500 hosted workflow starts. Business is $299/org/month or $2,990/year with unlimited users and repositories and 25,000 monitored starts. A start counts when its first step is durably authorized even if it later fails; internal steps and same-run retries or resumes do not add usage. Paid allowances do not trigger automatic overage charges or interruption, there is no published per-start overage price, and model-provider fees are separate.

Is it open source?

Fleet is a paid product with a free tier. The binary is free to install and inspect. New hosted workflow starts on Free use the 500-start allowance. A start is recorded at durable first-step authorization even if the workflow later fails; internal steps and same-run retries or resumes do not add usage. Model-provider fees are separate.

Is Fleet the same as Claude Code's FleetView?

No. Claude Code's agent view (the claude agents command, sometimes called FleetView) lists agent sessions. Those sessions still run with host credentials unless you jail them. Fleet is a separate workflow control plane: it starts Claude Code or OpenCode inside a Linux jail, then runs saved multi-step work — retries, approvals, artifacts, budgets, and merge rules.

How do I prove agents cannot escape?

Run fleet doctor, then go test -count=1 -run TestAcceptance_CompromisedAgentHasNoAlternateEgressPath ./internal/sandbox/. A passing run prints TCP_DENIED and SECRET_DENIED. Write-up: https://fleetctl.ai/security/#containment.

Need to convince your lead?

The business case — cost, governance, and audit trails — laid out for engineering leaders.

The case for Fleet

A note on access

The binary is free to install and inspect; starting agents requires a license. Sign up free and you'll get a registration code for your dashboard.

Start free