Concepts

Missions and scouts

The two kinds of task, and the states a task moves through.

Two kinds

MissionScout
Purposechange code, deliver something to landinvestigate and report back
Writes to its campyes, commits on its branchnever commits or pushes
Deliverscommits on vexillum/<task-id>, landed with land or opened as a PR with shipa markdown report
Done meansit produced commits ahead of its baseits report file exists

vx dispatch defaults to --kind mission. A scout writes its report to ~/.vexillum/projects/<repo>-<hash>/reports/<agent-name>-<task-id>.md, outside the camp, so it survives strike. Never use a scout for work that must change code.

--model and --effort are passed straight to the CLI of the profile's harness (claude unless the profile names pi or opencode); vexillum checks that the harness accepts the value, by shape only for the models of Pi and OpenCode (see models.json). Choosing them is the commander's job, from the profiles in models.json (--profile). See also AGENTS.md and rules.

Task states

StatusMeaning
pendingcreated, not started yet
runningthe soldier is working
blockedthe soldier asked a question and is waiting; the question is in the task's decision. See Blocked and interrupted
donesettled with proof of completion
failedsettled unsuccessfully
interruptedvexillum lost the soldier itself (its herdr pane vanished), not necessarily because it failed; work already committed is still in the camp
unconfirmedthe soldier went idle without proof of completion and without a valid declared pause, so vexillum cannot tell success from stuck; a human needs to look
shippedpushed through the tribunal pipeline and opened as a real pull request; the soldier and its camp stay open on purpose until the PR is merged. See Land vs ship
struckan interrupted or failed task whose camp was returned to the pool with strike; nothing is left to watch, re-prompt or re-dispatch. A done or shipped task keeps its status when struck

done is never inferred from idleness alone. For a mission vexillum requires a new commit ahead of the camp's base; for a scout, the report file. Every dispatch prompt states the deliverable. A mission is told to commit on its own branch, ahead of its base, and to close with a final delivered: <summary> line; a scout is told its report path. Soldiers are also told never to pause on a background job: long commands run in the foreground (a foreground tool call is capped at about 10 minutes in Claude Code, and the other harnesses set their own timeout), so a command that can take longer is split or flagged in the final message instead of backgrounded. A soldier that has to wait on something external it cannot run in the foreground can declare a pause in pauses/<agent-name>.md so a quiet turn is not mistaken for completion. When it wakes it must finish the deliverable before ending its turn: deleting the pause file is not finishing, and a turn that ends that way becomes unconfirmed.

On this page