Quickstart
From a fresh install to your first landed mission.
You need vexillum, Claude Code (the default commander; Pi and OpenCode work too, see Pi as the commander and OpenCode as the commander) and herdr installed. See Install.
1. Prepare your project
From the root of a git repository:
vx initinit changes files of yours, so it tells you which ones and asks first. Step by step:
-
Where the block goes. If the project has no
AGENTS.md,initproposes putting the vexillum block inCLAUDE.mdinstead of creating anAGENTS.md:This project has no AGENTS.md. Put the vexillum block in CLAUDE.md instead of creating an AGENTS.md? [Y/n]The default is yes (
CLAUDE.mdis created if it does not exist). Answernto create anAGENTS.mdinstead. When the project already has anAGENTS.md, the question is not asked and the block goes there. See The AGENTS.md slot. -
The notice. It lists the files of yours it is about to change, then vexillum's own files:
vx init will change these files of yours in /path/to/project: CLAUDE.md create it with the vexillum block .claude/settings.json add the sentinel Stop hook It also writes vexillum's own files: .vexillum/config.json; .vexillum/.gitignore; .vexillum/models.json; .claude/skills/ (vexillum, forum and muster, you are asked first). Continue? [Y/n]Answer
nand nothing is changed. -
The AGENTS.md slot. The commander core is written between markers in the file you chose (
CLAUDE.mdby default, orAGENTS.md), in the language it detects there. You confirm or override the language. -
The CLAUDE.md import. Only when the block is in
AGENTS.md:CLAUDE.mdgets the line@AGENTS.mdso Claude Code sees the block. An existingCLAUDE.mdis edited only after a second question. -
The skills.
Install the vexillum, forum and muster skills? [Y/n]. Yes writes them to.claude/skills/. -
models.json..vexillum/models.jsonis written with the default model and effort profiles. An existing one is never overwritten. -
The sentinel hook. An async
Stophook in.claude/settings.json(a one-line command that runsvx sentinel awaitand findsvxwithout relying on yourPATH) lets the sentinel wake the commander. Existing settings and hooks are merged, never overwritten.
It also creates ~/.vexillum/ if it is missing, and running init again changes nothing that is already in place.
Without a terminal (scripts, CI) init asks nothing and changes nothing unless you pass --yes:
| Flag | Effect |
|---|---|
--yes, -y | Accept every question, including putting the block in CLAUDE.md when there is no AGENTS.md, editing an existing CLAUDE.md and installing the skills. |
--skills | Install the skills without asking. |
--no-skills | Do not install the skills, without asking. |
--lang en|es | Language of the block, instead of detecting it. |
vexillum installs per project only: run init in each project you want to orchestrate.
Commit the scaffold early
vx land refuses to run while your checkout is dirty, and a fresh init leaves new files uncommitted. Commit AGENTS.md (if you have one), CLAUDE.md, .claude/ and .vexillum/ before you dispatch your first mission.
2. Check the environment
vx doctorEverything required should read [ok].
3. Start the commander inside herdr
Open a herdr pane, cd into the project and start your commander (Claude Code by default). vx dispatch needs HERDR_WORKSPACE_ID, which herdr sets in the panes it manages; outside one it refuses to dispatch.
4. Ask for work
Soldiers have full host access
A soldier runs with full permissions (Claude Code with --dangerously-skip-permissions, Pi, which has no permission prompts, or OpenCode with --auto), as your OS user, with no container or sandbox. Landing a mission is the approval gate: nothing reaches your project's real history until you approve it. Never dispatch against a repository or machine where reading credentials would be a problem.
> dispatch a soldier to fix the flaky login testThe commander runs vx dispatch "fix the flaky login test" --kind mission, which prints the task id, the camp branch (vexillum/<task-id>), and status=running. The first dispatch also starts the sentinel in the background.
You can keep talking to the commander while the soldier works. That is the magic of vexillum.
5. Hear back
When the soldier settles (done or blocked), the sentinel wakes the commander, which reports to you. To look yourself:
vx status6. Land it
When the mission is done, review it and tell the commander to land it. It runs:
vx land <task-id>That fast-forwards your checkout to the mission's branch and returns the camp to the pool. If you want a reviewed pull request instead, see Land vs ship.