User guide
Everything fleetsmith does, and how to use it well. If you have not installed
it yet, start with the quick start.
Vocabulary #
| Term | Means |
|---|---|
| Fleet | The whole team of agents, described by one fleet.yaml |
| Agent | A named specialist: role, goal, capabilities, skills, outgoing edges |
| Skill | A methodology an agent loads on demand — the how, separate from the who |
| Handoff | An edge carrying an artifact and acceptance criteria from one agent to the next |
| Pattern | The fleet's topology: pipeline, fanout, generate-verify, supervisor, expert-pool |
| Target | A CLI the spec compiles to: Claude Code, opencode, goose |
| Cortex | The RelataDB instance backing the enterprise grid |
| Actor | You, on the grid — derived from your git email |
Command reference #
Run fleetsmith with no arguments for this list at any time.
Core
| Command | What it does |
|---|---|
init [name] --pattern <p> [--domain "…"] [--out fleet.yaml] | Scaffold a spec from a pattern and a domain description |
validate <fleet.yaml> | Schema plus design-smell lint. Blocks parallel writers and truncating skill descriptions |
build <fleet.yaml> [--target …] [--out DIR] [--dry-run] [--force] | Compile into a directory. --target all emits all three |
install <fleet.yaml> [--target …] [--scope project|user] [--into DIR] | Compile and place the output where the tools discover it |
patterns | The five patterns with one-line descriptions |
version | Version of core, and of the enterprise package if loaded |
Quality
| Command | What it does |
|---|---|
qa <fleet.yaml> [--built DIR] [--target …] [--installed] | The verification battery, against compiled output |
eval <fleet.yaml> [--stage 1|2|3] [--baseline FILE] [--calibrate] | Trigger discrimination against a held-out corpus |
eval … --judge | Model-scored quality. Advisory — gates nothing |
eval … --exec [--target T] [--repeat N] | Live sessions. Also advisory |
health <fleet.yaml> [--json FILE] | A read of the fleet's own run telemetry |
Change
| Command | What it does |
|---|---|
evolve <fleet.yaml> [--budget N] [--apply] [--model M] | Propose improvements on a branch |
evolve … --review [--accept BRANCH | --reject BRANCH --reason R] | The human gate. Nothing promotes without it |
patch <fleet.yaml> --ops ops.json [--dry-run] | Typed, reviewable mutations instead of hand-editing YAML |
protected <fleet.yaml> [--check-diff BASE] | What evolution may not touch — and whether a diff touched it |
playbook <fleet.yaml> add|helpful|harmful|dedupe|show <agent> | Curate an agent's accumulated working notes |
migrate-workspace <fleet.yaml> [--dry-run] | Move an older single-tier _fleet/ to shared + local |
Enterprise needs fleetsmith-ee
| Command | What it does |
|---|---|
grid init | Once per checkout. The one grid verb that fails loudly rather than degrading |
grid sync [--watch] | Push your projection, pull everyone else's |
grid overlaps [--git-only] | Cross-developer file and task collisions |
grid import <path> --kind meeting|discussion|decision|spec | Ingest org context. Without --apply it is a dry run that touches no network |
grid knowledge <query> [--as-of DATE] [--purpose p] | Bi-temporal recall across the team |
grid propose|approve|publish <hash> | The org-approval state machine |
grid audit [--actor a] [--since t] [--why <id>] | Who read what, for which purpose |
grid token rotate | Rotate your own bearer token |
Build vs install #
build writes the compiled harness to a directory you name.
install compiles and then places the files where the tools actually look.
| Scope | Goes to | Use for |
|---|---|---|
--scope project (default) | The target app repo | A fleet that belongs to one codebase |
--scope user | Your user-global tool config | Agents and skills you want on every project |
--dry-run lists every file that would be written. Use it the first time you
point install at a repo that already has a .claude/.
Keeping it good #
A harness degrades quietly: an agent stops being delegated to, a skill stops firing, the spec drifts from what was compiled. These four commands are how you notice.
qa #
fleetsmith build fleet.yaml --target all --out ./dist
fleetsmith qa fleet.yaml --built ./dist
Checks the compiled output, not the spec's intentions: spec gate, per-target
compile, handoff graph against the real generated files, capability leaks, loop bounds,
and drift between the spec and what was emitted. --installed runs it
against an installed harness instead of a build directory.
eval #
fleetsmith eval fleet.yaml --stage 1 # 3 fleets, fast
fleetsmith eval fleet.yaml --stage 3 # the full corpus
Trigger discrimination: given a prompt that should invoke a skill, does it — and given one that should not, does it stay quiet. The ladder is staged so the fast stage can run on every commit. There is a measured noise floor and a paired baseline comparison, so a two-point move is not read as a win.
--judge and --exec add model-scored quality and live sessions.
Both are explicitly advisory and gate nothing — every gate in this
system is deterministic.
evolve #
fleetsmith evolve fleet.yaml --budget 3
fleetsmith evolve fleet.yaml --review
fleetsmith evolve fleet.yaml --review --accept fleet-gen/4
fleetsmith evolve fleet.yaml --review --reject fleet-gen/5 --reason "widens capability for no reason"
Observe, evaluate, mutate, validate, promote. Proposals land on a branch, must clear
both qa and eval, and then wait for a human. Rollback is
git revert fleet-gen/<n>.
Only artifacts evolution itself generated. The validator, the QA battery, the eval
corpus and the tests are hard-coded off limits — enforced in-process
and in CI, because a control living inside the agent's own runtime is
reachable by inputs that influence the agent. Check any diff with
fleetsmith protected fleet.yaml --check-diff main.
playbook & health #
fleetsmith playbook fleet.yaml add risk-reviewer "Check the migration file before the model code"
fleetsmith playbook fleet.yaml helpful risk-reviewer <id>
fleetsmith playbook fleet.yaml harmful risk-reviewer <id>
fleetsmith playbook fleet.yaml dedupe risk-reviewer
fleetsmith health fleet.yaml
A playbook is an agent's accumulated working notes, curated by marking entries helpful
or harmful rather than by rewriting prose. health reads the run telemetry
the handover gate is already producing — gate verdicts, retries, human corrections — and
tells you which agents are struggling.
Day to day #
Once a fleet is running, the loop is short:
- Work. Agents write handoffs into
_fleet/local/handoffs/and rows intoLEDGER.md. - When something is worth keeping, promote it into
_fleet/shared/knowledge/by pull request. That review is the only path into team knowledge. - Periodically run
qaand the fastevalstage — ideally in CI, on every pull request. - When the fleet's shape is wrong rather than its content, edit
fleet.yamland rebuild. Never hand-edit generated files: the next build overwrites them, andqareports the drift in the meantime.
Generated files are outputs. If you find yourself editing
.claude/agents/*.md directly, the change belongs in the spec — or in a
playbook entry, if it is a working note rather than a role change.
Grid commands enterprise #
Every grid verb degrades. grid init is the single exception: it exits
non-zero when nothing is configured, because it is meant to be run once, deliberately,
not from automation that should degrade quietly.
fleetsmith grid sync --watch
Runs continuously — on an SSE doorbell if the engine emits one, a five-minute interval fallback, local ledger and handoff file changes, and run start and end. Exits cleanly on SIGINT and SIGTERM.
fleetsmith grid overlaps
fleetsmith grid overlaps --git-only
Writes OVERLAPS.md. The --git-only form needs no cortex, no
grid configuration and no network access at all — file-level overlaps synthesised
straight from local git branches. That is the open-source answer to the same question.
fleetsmith grid import ./meetings --kind meeting # dry run
fleetsmith grid import ./meetings --kind meeting --apply
fleetsmith grid knowledge "why did we drop the queue" --as-of 2026-06-01
Imports are provenance-tracked and bi-temporal — business time is the meeting date, not
the ingest date — so --as-of answers "what did we know then" and
--as-recorded answers "what did we believe we knew then". Without a cortex,
knowledge degrades to filtering committed
_fleet/shared/knowledge/ frontmatter directly.
fleetsmith grid audit --actor alice --since 2026-08-01
fleetsmith grid audit --why <item-id>
--why explains why a specific item was returned to someone. It has no
degraded counterpart — with no cortex, audit falls back to local run events
only.
In CI #
The installer is non-interactive whenever no terminal is attached, so no flags are strictly required — but pin the version in CI.
- name: Install Infinia Harness
run: |
curl -fsSL https://infinia-harness.adid.dev/install.sh \
| sh -s -- --version 0.7.0 --yes
. ~/.fleetsmith/env.sh
- name: Gate the harness
run: |
. ~/.fleetsmith/env.sh
fleetsmith validate fleet.yaml
fleetsmith build fleet.yaml --target all --out ./dist
fleetsmith qa fleet.yaml --built ./dist
fleetsmith eval fleet.yaml --stage 1
fleetsmith protected fleet.yaml --check-diff origin/main
--stage 1 is the fast rung of the eval ladder and is the right one for
every-commit CI; save the full corpus for a nightly job. Nothing here needs a cortex, so
the same workflow runs unchanged for both editions.