@mu-crew/mu 3.2.0 → 3.3.0
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.
- package/AGENTS.md +208 -599
- package/README.md +125 -329
- package/dist/cli.js +108 -78
- package/dist/cli.js.map +1 -1
- package/dist/extension/mu-pi.js +421 -56
- package/dist/extension/mu-pi.js.map +1 -1
- package/dist/index.d.ts +36 -10
- package/dist/index.js +89 -67
- package/dist/index.js.map +1 -1
- package/docs/ARCHITECTURE.md +176 -1072
- package/docs/ROADMAP.md +88 -169
- package/docs/VISION.md +205 -415
- package/docs/VOCABULARY.md +204 -466
- package/docs/architecture/control-socket.md +133 -0
- package/docs/architecture/dag.md +113 -0
- package/docs/architecture/mux.md +162 -0
- package/docs/architecture/ops-log.md +140 -0
- package/docs/architecture/sdk.md +185 -0
- package/docs/architecture/sync.md +129 -0
- package/docs/architecture/tui.md +146 -0
- package/docs/guide/README.md +30 -0
- package/docs/guide/backends.md +61 -0
- package/docs/guide/cleanup.md +74 -0
- package/docs/guide/delegate.md +87 -0
- package/docs/guide/dispatch.md +144 -0
- package/docs/guide/getting-started.md +180 -0
- package/docs/guide/recovery.md +135 -0
- package/docs/guide/remote.md +74 -0
- package/docs/guide/sql.md +76 -0
- package/docs/guide/stop-a-worker.md +64 -0
- package/docs/guide/sync.md +78 -0
- package/docs/guide/tui.md +98 -0
- package/docs/guide/upgrade.md +76 -0
- package/docs/history/CHANGELOG-pre-3.md +4866 -0
- package/docs/reference/env.md +87 -0
- package/docs/reference/naming.md +82 -0
- package/docs/specs/2026-09-28-agent-state-from-murmur.md +1 -1
- package/docs/specs/2026-09-29-task-substates.md +1 -1
- package/docs/specs/2026-10-03-keep-driving-nudge.md +142 -0
- package/package.json +2 -1
- package/prompts/mu-refute.md +8 -0
- package/prompts/mu-research.md +8 -0
- package/prompts/mu-review.md +8 -0
- package/prompts/mu-rules-audit.md +8 -0
- package/prompts/mu-tournament.md +9 -0
- package/prompts/ultrathink.md +9 -0
- package/skills/mu/SKILL.md +126 -255
- package/skills/mu/recipes/adversarial-review.md +83 -0
- package/skills/mu/recipes/brief.md +53 -0
- package/skills/mu/recipes/codemode-driver.md +54 -0
- package/skills/mu/recipes/deep-research.md +52 -0
- package/skills/mu/recipes/fan-out.md +36 -0
- package/skills/mu/recipes/hypothesis-panel.md +40 -0
- package/skills/mu/recipes/long-run.md +20 -0
- package/skills/mu/recipes/loop-until-done.md +38 -0
- package/skills/mu/recipes/orchestrator-loop.md +87 -0
- package/skills/mu/recipes/plan.md +54 -0
- package/skills/mu/recipes/recovery.md +26 -0
- package/skills/mu/recipes/refute.md +49 -0
- package/skills/mu/recipes/remote-workers.md +292 -0
- package/skills/mu/recipes/review-panel.md +57 -0
- package/skills/mu/recipes/rules-audit.md +70 -0
- package/skills/mu/recipes/tournament.md +37 -0
- package/skills/mu/recipes/triage.md +38 -0
- package/skills/mu/recipes/ultrathink.md +73 -0
- package/skills/mu/recipes/watcher.md +16 -0
- package/skills/mu/recipes/waves.md +19 -0
- package/skills/mu/recipes/worker.md +24 -0
- package/docs/HANDOVER.md +0 -486
- package/docs/USAGE_GUIDE.md +0 -2738
- package/skills/mu/REMOTE_WORKERS.md +0 -617
package/README.md
CHANGED
|
@@ -1,365 +1,161 @@
|
|
|
1
1
|
# mu
|
|
2
2
|
|
|
3
|
-
**A small
|
|
4
|
-
|
|
5
|
-
|
|
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
|

|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
in-progress
|
|
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
|
-
|
|
14
|
-
|
|
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
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
|
31
|
+
mu link pi # pi extension (control socket, mu_delegate) + the mu skill
|
|
121
32
|
mu doctor
|
|
122
33
|
```
|
|
123
34
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
instead:
|
|
127
|
-
|
|
128
|
-
```bash
|
|
129
|
-
npx skills add mu-crew/mu # auto-detects the agent; -g global, -y no prompts
|
|
130
|
-
```
|
|
131
|
-
|
|
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`)
|
|
140
|
-
|
|
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
|
|
144
|
-
`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).
|
|
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`.
|
|
163
37
|
|
|
164
|
-
|
|
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`.
|
|
38
|
+
You need:
|
|
167
39
|
|
|
168
|
-
|
|
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`.
|
|
169
45
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
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
|
-
---
|
|
181
|
-
|
|
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.
|
|
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
|
|
48
|
+
`unknown`, so `mu agent wait` and stall detection never fire for them.
|
|
49
|
+
On herdr, herdr reports state.
|
|
202
50
|
|
|
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
|
-
|
|
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
|
-
|
|
267
|
-
mu task add
|
|
268
|
-
|
|
269
|
-
mu
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
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
|
-
|
|
300
|
-
|
|
301
|
-
|
|
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`.
|
|
302
73
|
|
|
303
|
-
|
|
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`.
|
|
74
|
+
## mu delegates vs hidden subagents
|
|
309
75
|
|
|
310
|
-
|
|
311
|
-
|
|
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
|
-
|
|
|
321
|
-
|
|
|
322
|
-
| Visibility
|
|
323
|
-
| Steer mid-run
|
|
324
|
-
| Keep talking after it answers | no
|
|
325
|
-
| Transcript
|
|
326
|
-
|
|
|
327
|
-
|
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
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 |
|
|
88
|
+
|
|
89
|
+
For many tiny calls, a hidden subagent is lighter. mu bets that seeing
|
|
90
|
+
and steering agent work is worth a pane.
|
|
91
|
+
|
|
92
|
+
## Ultrathink, the mu way
|
|
93
|
+
|
|
94
|
+
Long agent runs fail in two ways: the agent stops at 35 of 50 items and
|
|
95
|
+
calls it done, and it grades its own work generously. The fix is to
|
|
96
|
+
take the plan out of the agent's head, fan the work out to fresh
|
|
97
|
+
agents, and have other agents try to refute each result before it
|
|
98
|
+
counts. Claude Code's ultracode does this with a hidden script. mu does
|
|
99
|
+
it in the open:
|
|
100
|
+
|
|
101
|
+
- **The plan is the DAG.** Every unit, every review, and every round
|
|
102
|
+
is a task before an agent spawns. `mu state` shows 35 of 50 done, so
|
|
103
|
+
nobody can declare victory early.
|
|
104
|
+
- **Reviews are tasks.** A `review_x` task is blocked by `x` and run by
|
|
105
|
+
a fresh agent, ideally on another model, against criteria written
|
|
106
|
+
up front. A rejection adds `fix_x` and a second review to the DAG
|
|
107
|
+
instead of rewriting history.
|
|
108
|
+
- **Every agent is a pane.** Attach to any worker, reviewer, or judge
|
|
109
|
+
mid-run and steer it.
|
|
110
|
+
- **Nothing lives only in a context window.** Verdicts, evidence, and
|
|
111
|
+
stop rules are task notes. The run survives compaction, crashes, and
|
|
112
|
+
a new orchestrator.
|
|
113
|
+
|
|
114
|
+
Ask your orchestrator to *ultrathink* a job, and it follows
|
|
115
|
+
[skills/mu/recipes/ultrathink.md](skills/mu/recipes/ultrathink.md).
|
|
116
|
+
That recipe composes smaller ones you can also use on their own:
|
|
117
|
+
|
|
118
|
+
| Recipe | Shape |
|
|
119
|
+
| ------ | ----- |
|
|
120
|
+
| [fan-out](skills/mu/recipes/fan-out.md) | one task per unit, merged as each closes |
|
|
121
|
+
| [adversarial-review](skills/mu/recipes/adversarial-review.md) | a fresh agent tries to reject each unit before it ships |
|
|
122
|
+
| [refute](skills/mu/recipes/refute.md) | finders, then one refuter per finding, then a report |
|
|
123
|
+
| [hypothesis-panel](skills/mu/recipes/hypothesis-panel.md) | independent theories from separate evidence, each attacked |
|
|
124
|
+
| [tournament](skills/mu/recipes/tournament.md) | competing attempts, judged in pairs |
|
|
125
|
+
| [loop-until-done](skills/mu/recipes/loop-until-done.md) | rounds until a stop rule written up front holds |
|
|
126
|
+
| [triage](skills/mu/recipes/triage.md) | quarantined readers classify, a trusted actor acts |
|
|
127
|
+
| [deep-research](skills/mu/recipes/deep-research.md) | searchers by angle, one checker per claim, a cited report |
|
|
128
|
+
| [review-panel](skills/mu/recipes/review-panel.md) | one reviewer per angle on a diff, refuted, then fixed or reported |
|
|
129
|
+
| [rules-audit](skills/mu/recipes/rules-audit.md) | one checker per AGENTS.md rule plus a skeptic; or mine repeated corrections into new rules |
|
|
130
|
+
|
|
131
|
+
In pi, `mu link pi` adds them as commands: `/ultrathink <job>`,
|
|
132
|
+
`/mu-research <question>`, `/mu-review [target]`, `/mu-refute <scope>`,
|
|
133
|
+
`/mu-tournament <task>`, and `/mu-rules-audit [check <target> | mine]`.
|
|
134
|
+
|
|
135
|
+
All recipes, including the orchestrator loop and remote workers, are
|
|
136
|
+
in [skills/mu/recipes/](skills/mu/recipes/).
|
|
337
137
|
|
|
338
138
|
## Documentation
|
|
339
139
|
|
|
340
|
-
-
|
|
341
|
-
|
|
342
|
-
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
-
|
|
352
|
-
|
|
353
|
-
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
- **[CHANGELOG.md](CHANGELOG.md)** — release notes.
|
|
140
|
+
- [Getting started](docs/guide/getting-started.md): the first
|
|
141
|
+
workstream, end to end. Start here.
|
|
142
|
+
- [User guide](docs/guide/README.md): how-tos for dispatch, remote
|
|
143
|
+
workers, sync, recovery, and the dashboard.
|
|
144
|
+
- [skills/mu/SKILL.md](skills/mu/SKILL.md): what an orchestrating
|
|
145
|
+
agent reads. [skills/mu/recipes/](skills/mu/recipes/) holds the
|
|
146
|
+
recipes it points to, such as
|
|
147
|
+
[remote workers](skills/mu/recipes/remote-workers.md).
|
|
148
|
+
- [ARCHITECTURE.md](docs/ARCHITECTURE.md) and
|
|
149
|
+
[docs/architecture/](docs/architecture/): the module map and deep
|
|
150
|
+
dives.
|
|
151
|
+
- [VISION.md](docs/VISION.md): the design pillars.
|
|
152
|
+
[ROADMAP.md](docs/ROADMAP.md): what is next and what is rejected.
|
|
153
|
+
- [VOCABULARY.md](docs/VOCABULARY.md): canonical terms.
|
|
154
|
+
- [CHANGELOG.md](CHANGELOG.md): release notes.
|
|
155
|
+
|
|
156
|
+
`mu <verb> --help` is the reference for every flag.
|
|
358
157
|
|
|
359
158
|
## License
|
|
360
159
|
|
|
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.
|
|
160
|
+
MIT. Part of [mu-crew](https://github.com/mu-crew). Written mostly by AI
|
|
161
|
+
coding agents, with a human reviewing what ships.
|