Fleet tuning
The coder fleet is the pool of containers ARDS spawns to run tasks. In v1, you almost never need to tune it — the defaults are sized for the typical tester workload. This page exists so you can if you want to.
Where to look
- LLM Config → Tools tab — the fleet's home since the surfaces were consolidated. It holds the Fleet Defaults (default tool, variant, model, concurrency, turn budget), per-tool configuration with a live count of active instances, per-variant Resource Limits, and the container registries. The old Fleet Resources page now lands here automatically. LLM Config is on the All features index (the "…" entry at the bottom of the sidebar).
- Fleet Profiles page — named configuration sets layered on top of the system defaults. It has no sidebar entry; open
/fleet/profilesdirectly. - Coder Fleet page — live operations, not configuration: a Coder Monitor tab (running coders) and a Queue Dashboard tab (what's waiting). Diagnostic reading only.
What you can tune
On the Tools tab of LLM Config:
- Fleet Defaults — Default Tool, Default Variant, Default Model, Max Concurrent (default 3) and Max Turns (default 30). Increase concurrency if you have a big mission with parallelisable tasks; decrease to throttle spend (each coder uses tokens independently).
- Tool Configurations — one card per coder tool, with an enable toggle and API key. Each card shows how many instances are active right now.
- Resource Limits, per variant (
standard/browser/android) — Memory, CPU, shared memory (SHM) and Max Instances. Increase memory only if a task page shows out-of-memory kills in the logs; browser and Android variants need the SHM allowance.
Model fallback chains are not a fleet setting — they live in LLM configuration. For workflow runs, dispatch-time preset bindings take precedence — see Presets.
Profiles
The Fleet Profiles page manages named configuration sets with sparse overlays: a profile only stores the fields that differ from its parent; everything else is inherited. One profile ships seeded — System defaults (marked with an S badge; it can't be deleted). There are no other built-in presets.
- Buttons: New Profile, Clone, Delete, Save Profile, Preview Resolved.
- Profile fields: a description, an optional Parent Profile, the defaults (Default Tool —
claude,copilot,codex,gemini,aider,octofriend,junieorcustom; Default Variant —standard,browser,android; Default Model; Max Concurrent; Max Turns), profile-level environment variables, and a read-only view of per-tool overrides. - Resolution runs system defaults → parent profile → profile → per-project overrides; provenance badges next to each field show where the resolved value came from, and Preview Resolved shows the final merged configuration.
Profiles apply per project, and binding a profile to a project is currently API-only — there is no button in the UI for it. Until a binding is made, every project runs on the system defaults.
Fleet profiles vs workflow presets
The names rhyme; the jobs don't. A fleet profile configures how coders run for a project: which coder tool and variant, the default model, how many run at once, the turn budget. A workflow preset is a bundle of model and provider choices bound to a workflow, resolved at dispatch time — the most specific scope wins, and it beats whatever model was authored on the canvas. Tune coders here; tune what a workflow's nodes talk to in Presets.
When to worry about the fleet
- Tasks queue forever before running → Max Concurrent (Fleet Defaults) or the variant's Max Instances is too low for your workload. Bump it on the Tools tab.
- Tasks die with "out of memory" → raise the variant's memory limit on the Tools tab.
- Spend doubled overnight → check the Default Model in Fleet Defaults and remember that more concurrency means more parallel token spend.
When to leave it alone
If you're doing 1–3 missions a week of moderate scope, the shipped defaults are correctly sized. Tuning further usually doesn't pay back.
The Tools tab also exposes some operator-grade controls (Docker registries, image discovery). Don't touch those unless an operator told you to — they're there for platform-team use, not testers.