Multi-agent fleet management for OpenClaw, Claude Code, Codex, Cursor, Windsurf, Gemini CLI, and custom agent stacks
One CLI to monitor, manage, and orchestrate your entire AI agent fleet.
π Read the story behind this β
Quick Start β’ Commands β’ Patterns β’ Configuration β’ Docs
Fleet brings OpenClaw, Claude Code, Codex, Cursor, Windsurf, Gemini CLI, and custom agent stacks into one multi-agent fleet management CLI to orchestrate, monitor, judge reliability, and route intelligently across any runtime with delta tracking.
Dispatch work, steer live sessions, track outcomes, and keep OpenClaw gateways, HTTP workers, Docker workers, and local processes accountable from one CLI. Built for every operator running more than one agent or runtime.
Built for AI agents to manage AI agents. Works on any system π¦
π Visibility: Know which agents are up, which CI is red, what changed overnight. One command, full picture.
π Delta tracking: SITREP remembers the last run. Only shows what changed. No noise.
π§ Safe setup: fleet init detects running gateways and creates a locked local config. Symlink and shell PATH writes are explicit opt-in flags.
π§© Modular: Each command is a separate file. Adding a new command means dropping a .sh file in lib/commands/. No monolith, no framework.
β‘ Agent native: Designed to be used by agents, not just humans. The SKILL.md teaches OpenClaw and other coding agents how to manage a fleet with explicit approvals for high impact actions. Dependency installation steps are operator-action references for every supported platform.
π¦ Pattern library: Solo empire, dev team, research lab. Pre built configs for common setups.
- Why Fleet?
- Quick Start
- Commands
- Patterns
- Configuration
- Environment Variables
- Architecture
- For AI Agents
- Requirements
- Roadmap
- Contributing
- Support
# Install via ClawHub
clawhub install fleet
# Or via skills.sh for OpenClaw, Claude Code, Codex, Cursor, Windsurf, Gemini CLI, and shell capable agents
npx skills add oguzhnatly/fleet
# Or clone directly
git clone https://github.com/oguzhnatly/fleet.git
fleet/bin/fleet init # creates locked config and detects gateways
# Optional after review: fleet/bin/fleet init --link
# Check your fleet
fleet agents
fleet health
fleet sitrep| Command | Description |
|---|---|
fleet task <agent> "<prompt>" --yes |
Dispatch a task after operator approval, stream response live |
fleet steer <agent> "<message>" --yes |
Send a mid-session correction after operator approval, with policy injection when enabled |
fleet watch <agent> |
Live session tail: polls every 3s, shows new messages as they arrive |
fleet parallel "<task>" --dry-run |
Decompose into subtasks for review before confirmed dispatch |
fleet kill <agent> --yes |
Send a graceful stop signal after operator approval |
fleet log |
Append-only structured log of all dispatches and outcomes |
fleet policy |
Show optional operator constitution rules applied to dispatched tasks |
| Command | Description |
|---|---|
fleet health |
Health check all gateways, endpoints, and configured runtimes |
fleet agents |
Show agent fleet with live status and latency, plus configured runtimes |
fleet sitrep [hours] |
Full SITREP with delta tracking across agents, CI, runtimes |
fleet audit |
Check for misconfigurations and risks |
| Command | Description |
|---|---|
fleet policy |
Show configured constitution status, scope, and rules |
fleet policy enable / fleet policy disable |
Toggle constitution injection |
fleet policy require / fleet policy optional |
Require valid constitution coverage before dispatch, or relax back to prompt only mode |
fleet policy add "<rule>" |
Add a rule and enable the constitution |
fleet policy rm <index> / fleet policy clear |
Remove one rule or clear all rules |
fleet policy title "<title>" |
Customize the rule block title |
fleet policy scope task,parallel,steer |
Choose which commands receive the rule block |
fleet policy preview <agent> "<prompt>" |
Preview the exact task prompt after constitution injection |
Set constitution.enabled in config or use fleet policy add to prepend custom rules to fleet task, fleet parallel, and fleet steer dispatches. Use fleet policy require to block scoped dispatches when the constitution is disabled or empty. This is useful for team rules such as required tests, repository instructions, or no history rewrite unless the operator declares an emergency.
| Command | Description |
|---|---|
fleet adapters |
List registered adapters and their bindings to agents and runtimes |
fleet runtime add <name> <type> |
Register a new runtime (openclaw, http, docker, process) |
fleet runtime test <name> |
One-off probe of a runtime or agent (health + info + version) |
fleet runtime list |
Live status of every runtime, probed in parallel |
fleet runtime rm <name> |
Remove a runtime from the config |
| Command | Description |
|---|---|
fleet ci [filter] |
GitHub CI status across all repos |
fleet skills |
List installed ClawHub skills |
| Command | Description |
|---|---|
fleet backup |
Backup gateway configs, cron jobs, and sanitized Fleet config |
fleet restore --yes |
Restore from latest backup after operator approval |
fleet init |
Setup with gateway detection, optional --link or --path |
fleet update |
Check releases, install only with --install and approval |
High impact commands support --yes for automation, but use it only when the current operator instruction explicitly approves the action. fleet audit checks config permissions, inline tokens, placeholder tokens, missing tokenEnv values, and backup state.
See command output examples
Fleet Task
ββββββββββ
Agent coder (port 48520)
Type code
Task ID a1b2c3d4
Timeout 30m
add pagination to /api/spots, cursor-based, include tests
ββββββββββββββββββββββββββββββββββββββββ
I'll add cursor-based pagination to the /api/spots endpoint.
Starting with the database query layer...
[streams response in real time until complete]
ββββββββββββββββββββββββββββββββββββββββ
β
Task complete (a1b2c3d4)
Fleet Steer
βββββββββββ
Agent coder
Session fleet-coder
also add a max_limit cap of 100 per page
ββββββββββββββββββββββββββββββββββββββββ
Good call. Adding MAX_LIMIT = 100 guard at the top of the handler...
ββββββββββββββββββββββββββββββββββββββββ
β
Steered.
Watching coordinator
ββββββββββββββββββββ
Session: main: polling every 3s: Ctrl+C to stop
Connecting to coordinator session...
Last 3 message(s):
coordinator (strategic-default) 15:10 UTC
Running fleet sitrep...
you 15:23 UTC
build the pricing page
coordinator (strategic-default) 15:24 UTC
On it. Reading the Stripe config first...
Fleet Parallel
ββββββββββββββ
Task: research competitor pricing and build a pricing page with tiers
Execution plan:
1. researcher [research]
Research phase: research competitor pricing and build a pricing page with tiers
2. coder [code]
Implementation: research competitor pricing and build a pricing page with tiers
ββββββββββββββββββββββββββββββββββββββββ
2 subtask(s) ready to dispatch in parallel.
βΉοΈ Dry run complete. Remove --dry-run to execute.
Fleet Log 3 entries
i9j0k1l2 coder code pending β€·1 steer
2026-03-01 15:30 refactor auth middleware to use JWT RS256 instead of HS256
e5f6g7h8 researcher research success 8m43s
2026-03-01 15:10 analyze top 3 competitor pricing models in the surf social space
a1b2c3d4 coder code success 12m17s
2026-03-01 15:10 add pagination to /api/spots endpoint with cursor-based approach...
Fleet Log 2 entries
a1b2c3d4 coder code success 12m17s
2026-03-01 15:10 add pagination to /api/spots endpoint with cursor-based approach...
Fleet Kill
ββββββββββ
Agent coder
Session fleet-coder
β
Agent coder acknowledged stop signal.
β
Kill signal sent to coder.
Agent Fleet
βββββββββββ
β¬’ coordinator coordinator strategic-default :48391 online 13ms
β¬’ coder implementation coding-default :48520 online 8ms
β¬’ reviewer code-review coding-default :48540 online 9ms
⬑ deployer deployment coding-default :48560 unreachable
β¬’ qa quality-assurance coding-default :48580 online 7ms
Fleet Audit
βββββββββββ
Configuration
β
Config file exists at ~/.fleet/config.json
β
Config permissions: 600
β
All agent tokens configured
β
No placeholder tokens found
Agents
β
All 5 agents online
β
Main gateway healthy (:48391)
CI
β
gh CLI available
β
All CI green
Resources
β
Memory usage: 43%
β
Disk usage: 7%
Backups
β
Last backup: 2 day(s) ago
All clear: 11 checks passed, 0 warnings
CI Status
βββββββββ
frontend (myorg/frontend)
β
Update homepage (main) passed 2h ago
β
Fix footer (main) passed 4h ago
backend (myorg/backend)
β Add endpoint (main) failed 1h ago
β
Fix auth (main) passed 3h ago
Fleet Health Check
ββββββββββββββββββ
β
coordinator (:48391) 12ms
Endpoints
β
website (200) 234ms
β
api (200) 89ms
β docs UNREACHABLE
Services
β
openclaw-gateway
Fleet supports any agent organization pattern. Four common ones:
One brain, many hands. The indie hacker setup.
Coordinator (strategic)
/ | \
Coder Reviewer Deployer
(coding) (coding) (coding)
Team leads managing specialized developers.
Orchestrator (strategic)
/ | \
FE Lead BE Lead QA Lead
(review) (review) (review)
/ \ | |
Dev1 Dev2 Dev1 Tester
(coding)(coding)(coding) (coding)
Specialized agents for knowledge work.
Director (strategic)
/ | \ \
Scraper Analyst Writer Fact Check
(coding) (review) (review) (coding)
Fleet can optionally prepend a customizable operator constitution to every dispatched task. This is a prompt level guardrail for coding agents that read the task text. It does not replace the operating system, git, or CI protections.
{
"constitution": {
"enabled": true,
"title": "Operator Constitution",
"mode": "prepend",
"required": true,
"applyTo": ["task", "parallel", "steer"],
"rules": [
"Read project instructions before editing files",
"Run verification before reporting completion",
"Do not rewrite shared git history unless the operator explicitly declares an emergency"
]
}
}Use fleet policy to inspect rules, fleet policy add "Run tests before reporting completion" to customize them, fleet policy require to block dispatch without valid rules, fleet policy scope task,parallel,steer to choose coverage, and fleet policy preview coder "fix login tests" to see the exact prompt before dispatch.
Mix OpenClaw agents with Docker containers, HTTP services, and OS processes in one config.
Coordinator
/ | \
Coder Reviewer Deployer via OpenClaw adapter
|
billing-api (HTTP) via HTTP adapter
postgres (Docker) via Docker adapter
tailscaled (Process) via Process adapter
See docs/patterns.md for detailed guides and examples/ for configs.
Fleet reads ~/.fleet/config.json. Create one with fleet init or manually:
{
"workspace": "~/workspace",
"gateway": {
"port": 48391,
"name": "coordinator"
},
"agents": [
{ "name": "coder", "port": 48520, "role": "implementation", "model": "coding-default" },
{ "name": "reviewer", "port": 48540, "role": "code review", "model": "coding-default" }
],
"endpoints": [
{ "name": "website", "url": "https://myapp.com" },
{ "name": "api", "url": "https://api.myapp.com/health" }
],
"repos": [
{ "name": "frontend", "repo": "myorg/frontend" },
{ "name": "backend", "repo": "myorg/backend" }
]
}Everything is configurable. No hardcoded ports, models, or names. Your fleet, your way.
Register any target under the runtimes key. Each entry needs an adapter field:
{
"runtimes": [
{ "name": "billing-api", "adapter": "http", "url": "https://billing.example.com/health" },
{ "name": "postgres", "adapter": "docker", "container": "postgres" },
{ "name": "tailscaled", "adapter": "process", "process": "tailscaled" },
{ "name": "secondary", "adapter": "openclaw", "port": 48490 }
]
}Add a runtime from the CLI without editing JSON:
fleet runtime add billing-api http --url=https://billing.example.com/health
fleet runtime add postgres docker --container=postgres
fleet runtime add tailscale process --process=tailscaled
fleet runtime test billing-api # one-off probe
fleet runtime list # live status of all runtimes
fleet adapters # list registered adapters and bindingsSee docs/configuration.md for the full schema.
| Variable | Description | Default |
|---|---|---|
FLEET_CONFIG |
Config file path | ~/.fleet/config.json |
FLEET_LOG |
Dispatch log path | ~/.fleet/log.jsonl |
FLEET_WORKSPACE |
Workspace override | Config value |
FLEET_STATE_DIR |
State persistence | ~/.fleet/state |
FLEET_ADAPTER_TIMEOUT |
Max seconds per adapter probe | 6 |
FLEET_ADAPTERS_DIR |
Drop-in directory for custom adapters | ~/.fleet/adapters |
NO_COLOR |
Disable ANSI color output | (unset) |
FLEET_NO_UPDATE_CHECK |
Skip background GitHub release check | (unset) |
fleet/
βββ bin/fleet # Entry point
βββ lib/
β βββ core/ # Config, output, state, trust, adapter dispatcher
β β βββ adapters.sh # v4 adapter registry, dispatcher, parallel probe helper
β β βββ config.sh # JSON config loader
β β βββ output.sh # Colors, formatting, HTTP helpers
β β βββ state.sh # Delta state persistence
β β βββ trust.sh # v3 trust scoring engine
β βββ adapters/ # v4 cross-runtime adapters (one file per runtime type)
β β βββ openclaw.sh # OpenClaw gateway probe (verified)
β β βββ http.sh # Generic HTTP probe (verified)
β β βββ docker.sh # Docker container state and health (verified when CLI present)
β β βββ process.sh # OS process via pgrep (inferred)
β βββ commands/ # One file per command
β βββ adapters.sh # v4: list adapters and bindings
β βββ agents.sh # Agent fleet status
β βββ audit.sh # Misconfiguration checker
β βββ backup.sh # Config backup/restore
β βββ ci.sh # GitHub CI integration
β βββ health.sh # Endpoint and runtime health checks
β βββ init.sh # Interactive setup
β βββ kill.sh # Graceful agent stop
β βββ log.sh # Append-only dispatch log
β βββ parallel.sh # Parallel task decomposition
β βββ runtime.sh # v4: runtime add, test, list, rm
β βββ score.sh # v3 score command
β βββ sitrep.sh # Structured status reports
β βββ skills.sh # ClawHub skill listing
β βββ steer.sh # Mid-session corrections
β βββ task.sh # Task dispatch to agents
β βββ trust.sh # v3 trust command
β βββ update.sh # Self-upgrade
β βββ watch.sh # Live session tail
βββ templates/configs/ # Config templates
βββ examples/ # Architecture pattern examples
β βββ solo-empire/
β βββ dev-team/
β βββ research-lab/
β βββ cross-runtime/ # v4: mixed openclaw, http, docker, process targets
βββ docs/ # Documentation
βββ tests/ # Integration tests
βββ SKILL.md # ClawHub agent instructions
βββ .github/workflows/ # CI pipeline
Modular by design. Each command is a separate file. Add your own by dropping a .sh file in lib/commands/.
Fleet ships with a SKILL.md that AI coding agents can read. It is designed for OpenClaw, Claude Code, Codex, Cursor, Windsurf, Gemini CLI, and custom agent stacks, and any shell capable coding agent or editor. Install it and your coordinator automatically knows how to manage the fleet:
clawhub install fleet # OpenClaw agents
npx skills add oguzhnatly/fleet # OpenClaw, Claude Code, Codex, Cursor, Windsurf, Gemini CLI, and shell capable agentsThe agent reads the skill file, learns the commands, and can run read-only health checks during heartbeat cycles. High impact commands require explicit approval.
| Dependency | Version | Notes |
|---|---|---|
| bash | 4+ | macOS ships 3.2, run brew install bash |
| python3 | 3.10+ | No pip packages needed |
| curl | any | Pre installed on most systems |
| OpenClaw | any | Gateway support required |
| gh CLI | any | Optional, for CI commands |
Fleet is being built in stages. Each version makes it more active, more intelligent, and more universal.
Visibility layer. Monitoring, delta SITREP, CI status, backup, audit. Fleet can see the entire operation.
Fleet stops being observational and becomes directive.
-
fleet log: append-only structured log of everything dispatched and received (built first, foundation for everything else) -
fleet task <agent> "<prompt>": dispatch a task to any agent from the CLI, with timeout and result capture -
fleet watch <agent>: live log tail from a specific agent session -
fleet steer <agent> "<message>": send a mid-session correction to a running agent -
fleet kill <agent>: graceful session end -
fleet parallel "<task>": break a high-level task into subtasks, assign to agents, run in parallel (with--dry-runto review decomposition before executing)
Fleet learns which agents actually deliver, not just which ones are alive.
-
fleet trust: trust matrix for all agents with scores, trends, and task counts -
fleet score [<agent>]: per-task-type reliability breakdown: code, review, research, deploy, qa; with--typefilter - Reliability formula:
quality_score Γ speed_multiplier: quality degrades per steer, speed penalizes slow agents - 72h rolling window: recent tasks count 2Γ, 7-day tasks count 1Γ, older tasks count 0.5Γ (configurable via
trust.windowHours) - Reliability-weighted routing for
fleet parallel: dispatches to highest-trust agent per task type, not just whoever is idle - Trust summary line appended to every
fleet sitrepoutput - v3.5: cross-validation:
fleet scorechecks code/deploy successes against GitHub CI activity within 1h, flags unverified tasks
OpenClaw remains the primary stack for Fleet, and v4 extends orchestration, monitoring, reliability judging, routing, and delta tracking across Claude Code, Codex, Cursor, Windsurf, Gemini CLI, and custom agent stacks.
- Pluggable adapter interface: six-function contract (
describe,verified,required,health,info,version) every runtime implements - Built-in adapters: OpenClaw (verified), HTTP (any /health endpoint, verified), Docker (container state and health, verified when CLI present), Process (pgrep-based, inferred and labeled as such)
-
fleet adapters: lists registered adapters with verified vs inferred status, plus the binding from each agent and runtime entry to its adapter -
fleet runtime add <name> <type>: registers a new runtime without editing config manually -
fleet runtime test <name>: one-off health, info, and version probe against a named adapter for debugging, with animated spinner -
fleet runtime list/fleet runtime rm: parallel probe of every runtime, and removal by name - User adapter directory: drop a custom
<type>.shinto~/.fleet/adapters/(orFLEET_ADAPTERS_DIR) and it is auto-loaded -
fleet agents,fleet health,fleet sitrepnow surface runtimes alongside agents, with delta tracking on runtime status changes - Optional operator constitution: prepend customizable rules to task, parallel, and steer dispatches, preview them before execution, and optionally require valid rules before dispatch
- Backward compatible: existing configs default to OpenClaw adapter, zero migration needed
Fleet becomes an embeddable data source, not just a CLI.
-
fleet serve: start fleet as a local HTTP server (localhost only by default) -
fleet status: show if server is running, on what port, and uptime - REST API:
GET /agents,/sitrep,/trust,/log,/ciandPOST /task,/steer - All responses are structured JSON with stable field names
- External tools, dashboards, and CI pipelines can consume fleet data without shelling out
- Foundation for a future cloud sync tier (local free, cloud paid)
Issues and PRs welcome. See CONTRIBUTING.md for guidelines.
Built by a solo operation, for solo operations.
If Fleet is useful to you, consider supporting its development:
