@mu-crew/mu 3.2.0 → 3.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/AGENTS.md +203 -599
  2. package/README.md +76 -327
  3. package/dist/cli.js.map +1 -1
  4. package/dist/extension/mu-pi.js +178 -45
  5. package/dist/extension/mu-pi.js.map +1 -1
  6. package/dist/index.js.map +1 -1
  7. package/docs/ARCHITECTURE.md +175 -1072
  8. package/docs/ROADMAP.md +88 -169
  9. package/docs/VISION.md +205 -415
  10. package/docs/VOCABULARY.md +202 -466
  11. package/docs/architecture/control-socket.md +119 -0
  12. package/docs/architecture/dag.md +113 -0
  13. package/docs/architecture/mux.md +163 -0
  14. package/docs/architecture/ops-log.md +140 -0
  15. package/docs/architecture/sdk.md +185 -0
  16. package/docs/architecture/sync.md +129 -0
  17. package/docs/architecture/tui.md +146 -0
  18. package/docs/guide/README.md +25 -0
  19. package/docs/guide/backends.md +61 -0
  20. package/docs/guide/cleanup.md +74 -0
  21. package/docs/guide/delegate.md +87 -0
  22. package/docs/guide/dispatch.md +137 -0
  23. package/docs/guide/getting-started.md +177 -0
  24. package/docs/guide/recovery.md +133 -0
  25. package/docs/guide/remote.md +74 -0
  26. package/docs/guide/sql.md +76 -0
  27. package/docs/guide/stop-a-worker.md +64 -0
  28. package/docs/guide/sync.md +78 -0
  29. package/docs/guide/tui.md +98 -0
  30. package/docs/guide/upgrade.md +76 -0
  31. package/docs/history/CHANGELOG-pre-3.md +4866 -0
  32. package/docs/reference/env.md +87 -0
  33. package/docs/reference/naming.md +82 -0
  34. package/docs/specs/2026-09-28-agent-state-from-murmur.md +1 -1
  35. package/docs/specs/2026-09-29-task-substates.md +1 -1
  36. package/package.json +1 -1
  37. package/skills/mu/REMOTE_WORKERS.md +179 -504
  38. package/skills/mu/SKILL.md +116 -185
  39. package/docs/HANDOVER.md +0 -486
  40. package/docs/USAGE_GUIDE.md +0 -2738
package/README.md CHANGED
@@ -1,365 +1,114 @@
1
1
  # mu
2
2
 
3
- **A small, opinionated control plane for a crew of AI coding agents
4
- working in parallel.** Tmux panes, a typed task DAG, isolated VCS
5
- workspaces per agent, an audit log — and a dashboard for seeing what
6
- the crew is doing right now.
3
+ **A small control plane for a crew of AI coding agents working in
4
+ parallel.** Agents run in multiplexer panes you can attach to. Work is a
5
+ task DAG in SQLite. Each agent gets its own VCS workspace.
7
6
 
8
7
  ![mu dashboard](docs/img/tui-dashboard.png)
9
8
 
10
- *`mu` (no args) — read-only dashboard: agents, tracks, ready /
11
- in-progress / blocked tasks, log tail, workspaces, doctor.*
9
+ *Bare `mu` opens a read-only dashboard: agents, tracks, ready,
10
+ in-progress, and blocked tasks, the log tail, workspaces, and doctor.*
12
11
 
13
- The core loop is: plan work as a DAG, spawn a small crew, and watch
14
- handoffs happen in tmux:
12
+ - **Parallel work that does not collide.** Per-agent workspaces (jj
13
+ workspaces, sl shares, or git worktrees) and a task DAG with
14
+ `blocks` edges keep agents out of each other's way.
15
+ - **State that outlives a pane.** One SQLite DB holds agents, tasks,
16
+ owners, notes, and workspaces. An append-only ops log records every
17
+ change, so `mu undo <group>` reverses one action and `mu rebuild`
18
+ replays the whole history.
19
+ - **Exact control of pi agents.** mu's pi extension serves a control
20
+ socket inside each agent, so send, state, wait, and abort are exact,
21
+ locally and over ssh. The pane stays pi's normal TUI.
15
22
 
16
- ```bash
17
- mu workstream init auth-refactor
18
- mu task add --title "Design auth" --impact 80 --effort-days 2
19
- mu task add --title "Build auth" --impact 80 --effort-days 5 --blocked-by design_auth
20
-
21
- mu agent spawn worker-1 --workspace
22
- mu agent send worker-1 --fresh 'Pick up the next ready task and design the auth module.'
23
- mu # dashboard
24
- ```
25
-
26
- Need one quick helper without the DAG? `mu agent spawn scout-1 -w
27
- scratch` gives you a low-ceremony agent you can still send/read/wait
28
- on.
29
-
30
- Nothing here is a black box. Agents are multiplexer panes you can
31
- attach to yourself, tasks live in a SQLite DAG, and workspaces are real
32
- jj workspaces / sl shares / git worktrees on disk. **mu persists state
33
- and coordinates handoffs; the model still decides what to do.**
34
-
35
- For the full copy-paste flow, see [Quick start](#quick-start).
36
-
37
- ---
38
-
39
- ## What mu is
40
-
41
- mu excels at organising large pieces of work and keeping your agents
42
- on track.
43
-
44
- - **Parallelism that doesn't trip over itself.** Per-agent VCS
45
- workspaces plus a task DAG with deterministic parallel-track
46
- detection keep agents off each other's toes.
47
- - **A durable coordination layer.** One SQLite registry records
48
- agents, tasks, ownership, notes and workspaces. A single
49
- append-only **ops log** records every change ever made to them, so
50
- panes can die and humans can come back later.
51
- - **Exact control of pi agents, in pi's own TUI.** mu's pi extension
52
- serves a per-agent control socket inside each agent's interactive
53
- pi, so send, state, wait and abort are exact — locally and on
54
- remote hosts over the agent's own ssh. No screen scraping; the pane
55
- stays pi's normal TUI, and you can attach and type into it.
56
- - **Stay out of the model's way.** Mu coordinates handoffs; it does
57
- not choose models, providers, or thinking effort. `--cli <key>`
58
- uppercases to `$MU_<KEY>_COMMAND`, so your shell rc owns the agent
59
- command.
60
- - **Scriptable without scraping text.** Every read path that matters has
61
- `--json`, and every state change goes through a typed CLI verb; the
62
- dashboard is for humans, not the API.
63
- - **A low-ceremony escape hatch.** The reserved `scratch` workstream
64
- is there when you want one driveable helper without committing to a
65
- full task graph.
66
-
67
- ## What mu is NOT
68
-
69
- - **Not a build tool.** mu doesn't compile, test, or deploy
70
- anything.
71
- - **Not a chat protocol.** Agents communicate via the work graph
72
- and the activity log, never agent-to-agent messaging.
73
- - **Not a verifier.** `task close --evidence "tests pass"` records
74
- the claim; mu doesn't run the tests.
75
- - **No hidden subagents.** One-shot delegation runs in a visible pane
76
- you can attach to, steer and keep talking to. See
77
- [vs hidden subagents](#vs-hidden-subagents).
78
- - **Not a hosted service.** Local-first SQLite.
79
- - **DB-undoable, not substrate-undoable.** Every change is captured as ops
80
- under one group, so `mu undo <group> --yes` reverses exactly that
81
- one action — not your other workstreams. Killed panes and freed
82
- workspace dirs are NOT replayed; they aren't portable state.
83
-
84
- ---
85
-
86
- ## When mu earns its overhead
87
-
88
- mu pays off when the work is bigger than one agent's context: many
89
- steps, dependencies between them, several agents, or a job that runs
90
- for days. The DAG holds the plan, so no single agent has to. Each
91
- agent claims one ready task, works in its own workspace, writes notes
92
- on the task as it goes (findings, decisions, dead ends), and closes
93
- it with evidence. Every claim, note and close is appended to the
94
- audit log. If an agent drifts, stalls, or loses its pane, the plan,
95
- the notes, and the history of who did what are still there. You, or
96
- the next agent, pick up where it stopped instead of explaining
97
- everything again.
98
-
99
- **Use mu for** — multi-phase investigations; tasks worth gating with
100
- review; parallel audit or implementation/reviewer splits with isolated
101
- workspaces; anything where "what was decided and why" needs to outlive
102
- a single agent's scrollback. Use `scratch` for the lighter adjacent
103
- case: one helper or background watcher you still want to drive and
104
- observe.
105
-
106
- **Don't use mu for** — tiny direct edits; quick local inspection;
107
- single-context work where durable coordination adds ceremony.
108
-
109
- For one-shot delegation where you only need an answer back, use a
110
- **delegate**: the `mu_delegate` tool, or `mu agent spawn -w scratch` +
111
- `send` + `wait --json` from a shell. Installing mu gives you
112
- `mu_delegate`; it ships in the extension `mu link pi` installs.
113
-
114
- ---
23
+ mu persists state and coordinates handoffs. It does not choose models,
24
+ run your tests, or pass messages between agents. Every read path has
25
+ `--json`, and every change goes through a typed CLI verb.
115
26
 
116
27
  ## Install
117
28
 
118
29
  ```bash
119
30
  npm i -g @mu-crew/mu
120
- mu link pi # pi extension (exact send/state/wait/abort) + the mu skill
31
+ mu link pi # pi extension (control socket, mu_delegate) + the mu skill
121
32
  mu doctor
122
33
  ```
123
34
 
124
- For pi, `mu link pi` replaces `npx skills add`. To drive mu from
125
- another coding agent (claude-code, codex, ...), install the skill
126
- instead:
35
+ To drive mu from another agent CLI (claude-code, codex), install the
36
+ skill with `npx skills add mu-crew/mu` instead of `mu link pi`.
127
37
 
128
- ```bash
129
- npx skills add mu-crew/mu # auto-detects the agent; -g global, -y no prompts
130
- ```
38
+ You need:
131
39
 
132
- **Requirements:**
133
- - Node 22.12–26 (see `.nvmrc`), matching `engines` in `package.json`.
134
- - A terminal multiplexer: tmux ≥ 3.0, or [herdr](https://github.com/herdrdev/herdr)
135
- (`mu doctor` reports which one is active). Spawn, send, and read work
136
- on both. The remaining herdr gaps are listed in
137
- [docs/USAGE_GUIDE.md § 20](docs/USAGE_GUIDE.md#20-multiplexer-backends-tmux-and-herdr).
138
- - pi (the agent CLI mu orchestrates)
139
- - For `--workspace`: jj, sl, or git on PATH (or `--backend none`)
40
+ - Node 22.12–26 (see `.nvmrc`).
41
+ - tmux ≥ 3.0 or [herdr](https://github.com/herdrdev/herdr). `mu doctor`
42
+ reports which one is active.
43
+ - pi, or another agent CLI.
44
+ - jj, sl, or git on `PATH` for `--workspace`.
140
45
 
141
- **murmur is optional for pi agents.** mu reads a pi agent's state from
142
- its control socket. Non-pi CLIs (claude-code, codex) on tmux get state from
143
- [murmur](https://github.com/mu-crew/murmur); without it their state is
46
+ [murmur](https://github.com/mu-crew/murmur) is optional for pi agents.
47
+ Non-pi agents on tmux need it for state: without it their state is
144
48
  `unknown`, so `mu agent wait` and stall detection never fire for them.
145
- On herdr, herdr reports it. murmur also gives you one attention-sorted
146
- "who needs me" list across machines, tmux badges, and jump-to-pane.
147
-
148
- ```bash
149
- # on every node that runs agents
150
- npm install -g @mu-crew/murmur
151
- murmur init # this node's identity
152
- murmur link pi # the agent-side extension that reports state
153
-
154
- # then, on whichever machine you watch from
155
- murmur peer add dev # an ssh target; identity is discovered
156
- murmur peer list # which hosts are reachable, and when last seen
157
- ```
158
-
159
- mu exports `MU_MANAGED_AGENT`, `MU_AGENT_NAME`, `MU_WORKSTREAM` and
160
- `MU_CTL_SOCK` into every pane it spawns. murmur uses the first three to
161
- identify crew agents; mu's extension serves the control socket at the last.
162
- See murmur's [stable contract](https://github.com/mu-crew/murmur/blob/main/ARCHITECTURE.md#contract).
163
-
164
- **Update:** `npm install -g @mu-crew/mu@latest`. The `mu link pi` shim and
165
- skill symlink follow the installed package; restart running pi agents (or
166
- `/reload`) to load the new extension. With `npx skills`: `npx skills update mu`.
167
-
168
- **Install from source** (hacking on mu itself):
169
-
170
- ```bash
171
- git clone https://github.com/mu-crew/mu
172
- cd mu
173
- npm install -g . # `prepare` script auto-builds; `mu` lands on $PATH
174
- mu link pi # links this checkout's extension + skill
175
- ```
176
-
177
- More install patterns (alias-to-dist for fastest dev iteration) in
178
- [docs/USAGE_GUIDE.md § 1 Setup](docs/USAGE_GUIDE.md#1-setup).
179
-
180
- ---
49
+ On herdr, herdr reports state.
181
50
 
182
- ## TUI dashboard
183
-
184
- Bare `mu` in a TTY launches the read-only dashboard across all
185
- workstreams; `mu state --tui -w <workstream>` is the explicit
186
- single/multi-workstream form. Non-TTY callers and scripts keep the
187
- static/help path, and `mu state --json` is the API.
188
-
189
- The dashboard has ten cards: Commits, Agents, Tracks, Ready, Activity
190
- log, Workspaces, In-progress, Blocked, Recent, and Doctor. Drill into
191
- any numbered card fullscreen with `Shift+0`-`Shift+9`; `g` opens the
192
- full DAG and `t` opens the all-tasks list. `?` shows the complete
193
- keymap. Keyboard and mouse both work: navigate with keys, double-click
194
- cards or rows to drill, and scroll popup bodies with the mouse wheel.
195
-
196
- The TUI is read-only by design. `y` yanks the canonical `mu` command
197
- for the focused row to your clipboard; you run it in a shell, so every
198
- mutation still goes through a short-lived typed CLI invocation. The
199
- one exception is user-driven: `t` inside a commit/show drill suspends
200
- mu's alt-screen and hands off to `tuicr -r <sha>`, then restores the
201
- dashboard when tuicr exits.
202
-
203
- ---
51
+ To update or run from a checkout, see
52
+ [How to upgrade mu](docs/guide/upgrade.md).
204
53
 
205
54
  ## Quick start
206
55
 
207
- ```bash
208
- # Make sure you're inside a multiplexer. tmux is the common path;
209
- # herdr works too (mu picks whichever it detects).
210
- tmux
211
-
212
- # Initialize the workstream (creates mux session mu-auth-refactor)
213
- mu workstream init auth-refactor
214
-
215
- # Plan the work as a DAG. IDs auto-derive from titles.
216
- mu task add --title "Design auth module" --impact 80 --effort-days 2
217
- mu task add --title "Build auth" --impact 80 --effort-days 5 --blocked-by design_auth_module
218
- mu task add --title "Review auth" --impact 60 --effort-days 1 --blocked-by build_auth
219
-
220
- # Spawn a crew with isolated workspaces.
221
- mu agent spawn worker-1 --workspace
222
- mu agent spawn reviewer-1 --workspace --role read-only
223
-
224
- # Human home base: interactive read-only TUI across every workstream
225
- # (same dashboard is explicit with: mu state --tui -w auth-refactor).
226
- mu
227
-
228
- # Agent/script API: static state stays explicit and JSON-friendly.
229
- mu state -w auth-refactor --json
230
-
231
- # Inside an agent's pane, the agent claims and closes tasks
232
- # without ever knowing its own name (mu reads $TMUX_PANE).
233
- mu task claim design_auth_module
234
- mu task note design_auth_module "DECISION: JWT, 24h expiry, refresh via cookie"
235
- mu task close design_auth_module --evidence "design doc reviewed by reviewer-1"
236
-
237
- # Subscribe to events instead of polling.
238
- mu log --tail
239
-
240
- # Cleanup. Dry-run without --yes; writes tombstone ops rather than
241
- # erasing history, so `mu undo <group> --yes` still reverses it.
242
- mu workstream teardown --yes
243
- ```
244
-
245
- Worked end-to-end scenarios (first 5 minutes, the dispatch loop,
246
- laptop ↔ devserver, undo, drift):
247
- [USAGE_GUIDE § 0. Common scenarios](docs/USAGE_GUIDE.md#0-common-scenarios).
248
- Full tour: [docs/USAGE_GUIDE.md](docs/USAGE_GUIDE.md).
249
-
250
- ---
251
-
252
- ## Portability and handoff
253
-
254
- State lives in one SQLite DB, and every change to it is captured as an
255
- op in an append-only log — so it travels, and it merges.
256
-
257
- ### Multi-machine sync
258
-
259
- Each machine keeps its own DB. They exchange append-only JSONL
260
- segments through any folder something else keeps in step (Syncthing,
261
- rsync, a USB stick — mu never runs the transport). Setup is one env
262
- var on each machine; there is no peer list, no daemon, no import step,
263
- and concurrent edits on two machines converge.
56
+ Run this inside tmux or herdr:
264
57
 
265
58
  ```bash
266
- export MU_SYNC_DIR=$HOME/Sync/mu # same folder on every machine
267
- mu task add auth_fix -w app -t "Fix the auth redirect" -i 80 -e 2
268
- # → the next `mu` command on the other machine already sees it
269
- mu sync # peer status, if you want to check
270
- ```
271
-
272
- **Never put `MU_DB_PATH` inside `MU_SYNC_DIR`** — a live WAL database
273
- is three mutually-consistent files and a file-syncer will corrupt it.
274
- `mu doctor` fails on it. Full walkthrough:
275
- [USAGE_GUIDE § Multi-machine sync](docs/USAGE_GUIDE.md#156-multi-machine-sync).
276
-
277
- For disaster recovery, `mu rebuild <file>` replays the whole ops log
278
- into a fresh DB and prints the swap command; `mu undo <group>` reverts
279
- one past action by emitting inverse ops.
280
-
281
- For a safety copy before anything destructive, `mu db backup <file>`
282
- writes a `VACUUM INTO` copy of the whole DB. To read the graph out for
283
- review or grep, every verb takes `--json`.
284
-
285
- ### Remote workers
286
-
287
- An agent can run on another machine with no mu changes and no remote
288
- backend: the pane is local, the process is remote.
289
-
290
- ```bash
291
- ssh dev 'git -C ~/repo worktree add ~/ws/worker-1'
292
- eval "$(mu agent remote-env worker-1 -w big --shell)" # socket forward + env; runs nothing
293
- mu agent spawn worker-1 -w big --command \
294
- "ssh $MU_SSH_ARGS dev -t 'cd ~/ws/worker-1 && $MU_REMOTE_ENV \$SHELL -ilc \"pi --approve\"'"
295
- # ... claim, send and abort exactly as for a local agent, then collect:
296
- git fetch "ssh://dev/~/ws/worker-1" HEAD && git cherry-pick FETCH_HEAD
59
+ mu workstream init auth
60
+ mu task add design_auth --title "Design auth" --impact 80 --effort-days 2
61
+ mu task add build_auth --title "Build auth" --impact 80 --effort-days 5 --blocked-by design_auth
62
+ mu agent spawn worker-1 --workspace
63
+ mu task claim design_auth --for worker-1
64
+ mu agent send worker-1 --fresh 'Do task design_auth. Close it with evidence.'
65
+ mu task wait design_auth --first --on-stall exit # exit 7 = worker needs you
66
+ mu # dashboard
67
+ mu workstream teardown --yes # without --yes: dry run
297
68
  ```
298
69
 
299
- The ssh forwards the remote pi's control socket to the local path mu
300
- derives, so send, state and wait are exact without murmur. The host
301
- needs `mu link pi`.
302
-
303
- Local and remote agents mix freely in one workstream. You create the
304
- remote workspace yourself (`--workspace` is local-only) and mu keeps
305
- no record of it, so read
306
- [skills/mu/REMOTE_WORKERS.md](skills/mu/REMOTE_WORKERS.md) first — it
307
- covers the traps, including the one where your own agent blocks your
308
- `git fetch` behind a misleading `Permission denied`.
70
+ For one helper, ask pi to delegate (`mu_delegate` ships with `mu link
71
+ pi`), or spawn into the reserved `scratch` workstream:
72
+ `mu agent spawn scout-1 -w scratch`.
309
73
 
310
- ---
74
+ ## mu delegates vs hidden subagents
311
75
 
312
- ## vs hidden subagents
313
-
314
- Most agent tools delegate to a hidden subagent: a child process or
315
- in-process loop that pi-subagents, pi's example subagent extension,
316
- and the Claude Code and Codex task tools run out of sight. You get its
317
- result and lose the rest. A mu **delegate** is an ordinary agent in a
76
+ Claude Code, Codex, and pi-subagents delegate to a hidden child process
77
+ and return only its result. A mu delegate is an ordinary agent in a
318
78
  pane.
319
79
 
320
- | | Hidden subagent | mu delegate |
321
- | --------------------- | --------------------------------------- | ----------- |
322
- | Visibility | none while it runs | a pane; attach and watch live |
323
- | Steer mid-run | no | yes: `mu agent send`; stop with `mu agent abort` |
324
- | Keep talking after it answers | no | yes, with `keep: true` |
325
- | Transcript | collapses into a result | a normal pi session log |
326
- | Agent types | usually built in | none; the brief is ad-hoc text |
327
- | If the work grows | re-brief a new agent | same task DAG and workspaces as any agent |
328
- | Cost | light | one pane and one pi process each |
329
-
330
- The cost row is the trade-off. For many tiny calls a hidden subagent is
331
- lighter. mu bets that for agent work, seeing and steering the agent is
332
- worth a pane. For coordinated multi-agent work, graduate from
333
- `scratch` to a named workstream + task DAG. See
334
- [docs/USAGE_GUIDE.md](docs/USAGE_GUIDE.md).
80
+ | | Hidden subagent | mu delegate |
81
+ | ----------------------- | ------------------------ | ----------- |
82
+ | Visibility | none while it runs | a pane; attach and watch |
83
+ | Steer mid-run | no | `mu agent send`; stop with `mu agent abort` |
84
+ | Keep talking after it answers | no | yes, with `keep: true` |
85
+ | Transcript | collapses into a result | a normal pi session log |
86
+ | If the work grows | re-brief a new agent | same task DAG and workspaces |
87
+ | Cost | light | one pane and one pi process |
335
88
 
336
- ---
89
+ For many tiny calls, a hidden subagent is lighter. mu bets that seeing
90
+ and steering agent work is worth a pane.
337
91
 
338
92
  ## Documentation
339
93
 
340
- - **[docs/USAGE_GUIDE.md](docs/USAGE_GUIDE.md)** — practical tour
341
- of every verb. **Start here.**
342
- - **[skills/mu/SKILL.md](skills/mu/SKILL.md)** — what an LLM
343
- running inside an agent pane sees: the in-pane working loop,
344
- subscribe-vs-poll pattern.
345
- - **[skills/mu/REMOTE_WORKERS.md](skills/mu/REMOTE_WORKERS.md)** —
346
- running agents on another machine over ssh: the recipe, and the
347
- traps that cost real debugging time.
348
- - **[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)** — module map,
349
- reconciliation algorithm, schema seam (surrogate INTEGER PKs +
350
- the SDK boundary discipline).
351
- - **[docs/VOCABULARY.md](docs/VOCABULARY.md)** — canonical terms;
352
- source of truth for every word in code, docs, error messages.
353
- - **[docs/VISION.md](docs/VISION.md)** — the load-bearing pillars
354
- + the prior-runtime retrospective.
355
- - **[docs/ROADMAP.md](docs/ROADMAP.md)** — what's next + the
356
- anti-feature pledges + explicitly-rejected ideas.
357
- - **[CHANGELOG.md](CHANGELOG.md)** — release notes.
94
+ - [Getting started](docs/guide/getting-started.md): the first
95
+ workstream, end to end. Start here.
96
+ - [User guide](docs/guide/README.md): how-tos for dispatch, remote
97
+ workers, sync, recovery, and the dashboard.
98
+ - [skills/mu/SKILL.md](skills/mu/SKILL.md): what an orchestrating
99
+ agent reads. [REMOTE_WORKERS.md](skills/mu/REMOTE_WORKERS.md) covers
100
+ agents on other machines.
101
+ - [ARCHITECTURE.md](docs/ARCHITECTURE.md) and
102
+ [docs/architecture/](docs/architecture/): the module map and deep
103
+ dives.
104
+ - [VISION.md](docs/VISION.md): the design pillars.
105
+ [ROADMAP.md](docs/ROADMAP.md): what is next and what is rejected.
106
+ - [VOCABULARY.md](docs/VOCABULARY.md): canonical terms.
107
+ - [CHANGELOG.md](CHANGELOG.md): release notes.
108
+
109
+ `mu <verb> --help` is the reference for every flag.
358
110
 
359
111
  ## License
360
112
 
361
- MIT.
362
-
363
- ---
364
-
365
- Part of [mu-crew](https://github.com/mu-crew). Written mostly by AI coding agents, with a human reviewing what ships, and built for running them.
113
+ MIT. Part of [mu-crew](https://github.com/mu-crew). Written mostly by AI
114
+ coding agents, with a human reviewing what ships.