Skip to content
ColliePWA

05/Documentation

Commands

Every collie verb, putting collie on your PATH, and the Herdr actions that mirror the verbs on a Herdr-managed install

Every verb uses the format collie <verb>. This is the canonical syntax across all installations, implemented directly in the binary (cli/). Before adding collie to your PATH (below), run bin/collie <verb> from the repository root. On a Herdr-managed installation, these same verbs register as Herdr actions (below) with identical behavior.

If the host runs multiple instances, prepend COLLIE_INSTANCE=<name> to every verb. See Multiple Collie instances on one host.

VerbCommandWhat it does
Startcollie startBuild if needed, serve, print the URL
Stopcollie stopPause the bridge; removes nothing
Restartcollie restartStop, then start
Statuscollie statusThe Collie is running banner + URLs
URLcollie urlPrint the tailnet URL
QRcollie qrThe same URL as a scannable code
Versioncollie versionThe running version (0.x.y+sha)
Updatecollie updateStage the newest release of your major, flip to it, restart and verify (--check preflights, --status reports, --major crosses one)
Rollbackcollie update --rollbackPut the previous version back (not on a Herdr-managed checkout, which has none staged)
Uninstallcollie uninstallRemove the service; keep .env and the install
Paircollie pairPrint an 8-character code and a QR code, good for 10 minutes; scan the QR code to open Settings → Paired devices with the code filled in, or enter the code manually to get it paired
Devicescollie devices list · collie devices revoke <label>List / revoke paired devices
Linkcollie link · collie unlinkPut collie on your PATH (below)
Logscollie logsTail the journal / log file
Voicecollie stt setup · stt test · stt status · stt offConfigure / check / disable voice input
Push keyscollie push-keysGenerate the VAPID keypair into your .env
Push testcollie push-testSend one notification to prove it works

The CLI also includes build, serve, unserve, doctor, and pack … for less frequent tasks.

Both start and status output the Collie is running banner: a health mark and the version, then a service, a local and a tailnet line. First run shows it in full, including what a failed health check prints instead. The reported version reads from the served bundle stamp, reflecting the active build.

Ink or plain text. The start, status, doctor, pack add, and pack status commands render an interactive terminal UI when stdout is a TTY. Passing --plain, or redirecting output to a pipe, file, systemd journal, or CI runner, falls back to raw line output.

Put collie on your PATH

Run collie link to publish ~/.local/bin/collie:

bin/collie link          # ~/.local/bin/collie → <checkout>/bin/collie
collie status            # from anywhere
bin/collie unlink        # take the name back down

It creates a symlink to the checkout's binary, so future collie build updates take effect immediately without extra steps (ADR 0021). The command replaces existing links from other Collie checkouts and prints which one it overwrote. It refuses to overwrite non-Collie files at that path. unlink removes the symlink only if it targets your current checkout.

If ~/.local/bin is missing from your PATH, link warns you and exits. It never edits your shell profile. Run collie doctor to check the path-link line and see which checkout the bare collie command resolves to.

Herdr actions

Applies only to a Herdr-managed install created with herdr plugin install AltanS/collie or herdr plugin link. Herdr is one of three multiplexers Collie supports. These actions map directly to the adapter: each action forwards the verb to the same collie binary documented in the table above. On binary installs created via scripts/install.sh, plugin actions do not exist, and collie <verb> is the only syntax.

Collie registers these actions in herdr-plugin.toml. Invoke them with herdr plugin action invoke <id> --plugin herdr.collie, or view them with herdr plugin action list --plugin herdr.collie:

<id>Equivalent verbWhat it does
startcollie startBuild if needed, start the service, tailscale serve, print URL + banner
stopcollie stopPause the bridge; removes nothing
restartcollie restartstop + start
statuscollie statusThe Collie is running banner — readiness ✓/⚠, version, URLs
urlcollie urlPrint the tailnet URL
versioncollie versionPrint the running version (0.x.y+sha)
updatecollie updateAdvance the checkout (pull, or fetch + re-detach) + rebuild + restart
uninstallcollie uninstallTear down the service (keeps .env + checkout)
push-keyscollie push-keysWrite a VAPID keypair into the .env the service reads
push-testcollie push-testPush one notification to every subscribed device

qr, pair, devices, link, logs, and stt have no corresponding plugin action because they require a terminal, positional arguments, or both. Run them as collie <verb>.

Herdr actions return Herdr's JSON envelope instead of the terminal banner. View the action's captured stdout with herdr plugin log list --plugin herdr.collie, or run collie <verb> directly to print output inline. Output from herdr plugin list --json reflects the version cached during plugin link, not the active version. For linked clones, update re-links automatically to fix the cache. You can force this with herdr plugin link "$(pwd)". Herdr ≥0.8.0 re-reads the manifest from disk on each invocation.

Note. scripts/collie-ctl.sh <verb> remains supported. It operates as a bootstrap shim: it locates Bun, compiles bin/collie if the checkout lacks it, and passes along argv. A freshly linked clone uses this path to build its initial binary. Herdr actions continue to point to this script because Herdr <0.8.0 freezes the action definitions cached at install time (ADR 0006). Each verb is implemented once inside the compiled binary in cli/.

Edit this page on GitHub