Get started

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 init

init changes files of yours, so it tells you which ones and asks first. Step by step:

  1. Where the block goes. If the project has no AGENTS.md, init proposes putting the vexillum block in CLAUDE.md instead of creating an AGENTS.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.md is created if it does not exist). Answer n to create an AGENTS.md instead. When the project already has an AGENTS.md, the question is not asked and the block goes there. See The AGENTS.md slot.

  2. 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 n and nothing is changed.

  3. The AGENTS.md slot. The commander core is written between markers in the file you chose (CLAUDE.md by default, or AGENTS.md), in the language it detects there. You confirm or override the language.

  4. The CLAUDE.md import. Only when the block is in AGENTS.md: CLAUDE.md gets the line @AGENTS.md so Claude Code sees the block. An existing CLAUDE.md is edited only after a second question.

  5. The skills. Install the vexillum, forum and muster skills? [Y/n]. Yes writes them to .claude/skills/.

  6. models.json. .vexillum/models.json is written with the default model and effort profiles. An existing one is never overwritten.

  7. The sentinel hook. An async Stop hook in .claude/settings.json (a one-line command that runs vx sentinel await and finds vx without relying on your PATH) 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:

FlagEffect
--yes, -yAccept every question, including putting the block in CLAUDE.md when there is no AGENTS.md, editing an existing CLAUDE.md and installing the skills.
--skillsInstall the skills without asking.
--no-skillsDo not install the skills, without asking.
--lang en|esLanguage 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 doctor

Everything 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 test

The 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 status

6. 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.

On this page