Skip to content

Configuration

Fleet is configured through .fleet/config.yml in your repository root. Created by fleet init.

.fleet/config.yml
commander:
model: claude-opus-4-5 # LLM for commander planning (BYOK)
poll_interval_minutes: 5 # How often commander checks ship progress
max_concurrent_ships: 8 # Maximum number of active ships
execution:
strategy: mapreduce # sequential | mapreduce
stall_threshold_min: 30 # Mark ship dead after this many minutes
unresponsive_threshold_min: 10 # Mark ship stale after this many minutes
shadow_dispatch: false # Enable parallel re-dispatch for stalled ships
shadow_delay_min: 15 # Minutes before shadow dispatch triggers
heartbeat:
interval_seconds: 60 # Ship heartbeat push interval
squash_on_complete: true # Squash heartbeat commits on mission completion
merge:
ci_required: true # Require CI pass before auto-merge
auto_rebase: true # Attempt rebase on merge conflicts
brief:
mode: static # static | llm — FLEET_CONTEXT.md generation mode
resources:
max_missions_per_ship: 1 # Max concurrent missions per ship
mission_timeout_min: 120 # Mission timeout in minutes
notifications:
webhooks:
- url: https://hooks.slack.com/services/xxx
format: slack # json | slack
events: # Optional filter (all events if omitted)
- pr-merged
- ci-failed
- all-missions-complete
ships:
- id: ship-a
adapter: claude-code # claude-code | codex | aider | opencode | gemini | cursor | amp | a2a
- id: ship-b
adapter: codex
KeyTypeDefaultDescription
modelstringclaude-opus-4-5LLM model for planning and coordination
poll_interval_minutesnumber5How often the commander checks for updates
max_concurrent_shipsnumber8Maximum number of active ships
KeyTypeDefaultDescription
strategystringmapreducesequential or mapreduce
stall_threshold_minnumber30Minutes before a ship is marked dead
unresponsive_threshold_minnumber10Minutes before a ship is marked stale
shadow_dispatchbooleanfalseRe-dispatch stalled missions to another ship
shadow_delay_minnumber15Minutes before shadow dispatch activates
KeyTypeDefaultDescription
interval_secondsnumber60Heartbeat push interval in seconds
squash_on_completebooleantrueSquash heartbeat commits when mission completes
KeyTypeDefaultDescription
ci_requiredbooleantrueRequire CI pass before auto-merge
auto_rebasebooleantrueAttempt rebase on merge conflicts
KeyTypeDefaultDescription
modestringstaticstatic (file analysis) or llm (AI-powered summary)
KeyTypeDefaultDescription
max_missions_per_shipnumber1Maximum concurrent missions per ship
mission_timeout_minnumber120Mission timeout in minutes
KeyTypeDescription
urlstringWebhook endpoint URL
formatstringjson (raw event) or slack (Slack message format)
eventsstring[]Optional filter — only send these event types
EventDescription
mission-completedA ship finished its mission
pr-createdCommander created a PR for a completed mission
pr-mergedPR was merged into main
ci-failedCI checks failed on a mission branch
ship-stalledA ship stopped sending heartbeats
shadow-dispatchedCommander re-dispatched a stalled mission
conflict-detectedFile conflicts detected between branches
all-missions-completeAll missions in the fleet are done

Each entry in ships defines a machine in the fleet.

KeyTypeDescription
idstringUnique identifier for this ship
adapterstringCoding agent adapter: claude-code, codex, aider, opencode, gemini, cursor, amp, or a2a