Upgrading
One command updates the vx binary and then refreshes each project's scaffold.
vx upgrade does two things, in this order: it updates the vx binary itself, then it refreshes the files vexillum scaffolded into the current project, using the new binary so its templates are the ones that apply.
vx upgradeTo see what a version brings, read its notes on the GitHub releases page. That page is the only place release notes live.
The binary
How vx was installed decides what upgrade does. It resolves the path of the running executable and picks one of three cases:
| Installed with | What upgrade does |
|---|---|
Homebrew (the binary lives under a Homebrew Cellar) | Runs brew upgrade vexillum. |
| The install script (a direct download) | Downloads the release archive for your OS and architecture from GitHub Releases, verifies its sha256 checksum against the release's checksums.txt, and replaces the executable atomically: the new file is written next to the old one and then renamed over it, keeping its file mode. |
| Anything else, such as a build from source or a renamed binary | Refuses, and tells you how to reinstall. |
upgrade stops, with the binary untouched, when the checksum does not match, when the release has no archive for your platform, or when the directory that holds vx is not writable. For the last case it tells you to reinstall into a directory you own: run the install script with VX_INSTALL_DIR set to it.
When vx is already on the latest release it leaves the binary alone, and upgrade never downgrades. It still refreshes the project's scaffold.
A sentinel that is already running notices that its binary was replaced and retires, and the next command that needs one starts it from the new binary. You do not restart it yourself. See Sentinel.
Channels
--channel picks which releases upgrade follows. There are two:
| Channel | Follows |
|---|---|
stable (the default) | The latest full release. |
canary | The latest pre-release whose tag contains -canary.. |
vx upgrade --channel canaryA Homebrew install only follows stable. To follow canary, install a canary build with the install script instead, and use the command above to keep it current. See Release channels. To go back to the stable releases, run vx upgrade --channel stable: it installs the latest stable release once that is newer than the version you have.
Check without changing anything
vx upgrade --checkprints the version that is available on the channel and changes nothing: not the binary, not the project.
A project's scaffold
A new binary may ship a newer commander core, newer skills or a newer hook. After the binary step, upgrade refreshes the project you ran it in. Outside an initialized project it only updates the binary.
The refresh works like init: it lists the files of yours it will change and asks first (Continue? [Y/n]). Then it:
- Writes or updates the vexillum block in the file that holds it (
AGENTS.md, orCLAUDE.mdwhen the block lives there) and, when the block is inAGENTS.md, makes sureCLAUDE.mdimports it. A block you edited is not overwritten:upgradeprints the diff between yours and the current template. A malformed block is not touched until you confirm the repairs it lists, and the file is saved to.vexillum/AGENTS.md.backup(or.vexillum/CLAUDE.md.backup) first. See The AGENTS.md slot; - Refreshes the installed skills that are unchanged since vexillum wrote them (a content hash per skill is kept in
.vexillum/config.json) and reports the ones you edited. See Skills; - Keeps the sentinel
Stophook current, so it findsvxeven when it is not on thePATHof the hook's shell (the command also tries~/.local/bin, Homebrew and/usr/local/bin). Your ownStophooks are kept. See Sentinel; - Creates
.vexillum/models.jsonif it is missing. An existing one is never overwritten: it is yours. Seemodels.json.
Without a terminal the refresh asks nothing and changes nothing unless you pass --yes.
To refresh only the scaffold and leave the binary alone, for example offline or in a script, run:
vx upgrade --scaffold-onlyFlags
| Flag | Effect |
|---|---|
--channel stable|canary | Release channel to follow. The default is stable. |
--check | Print the available version and change nothing. |
--scaffold-only | Refresh the scaffold and leave the binary alone. |
--yes, -y | Accept every question, including the repairs to a malformed block (the file is backed up first). |
--force | Overwrite what you edited: the vexillum block or an edited skill. A backup is saved first: .vexillum/agents-md-slot.backup.md for the block, .vexillum/backups/skills/<name>/ for a skill. |
--lang en|es | Language of the block, instead of keeping the block's current language or detecting it. |
--skills | Also install the skills that are missing. |
--no-skills | Leave the skills alone: no install, no refresh. |
See the vx upgrade reference.