Repository navigation
Muster 0.13.0
Behaves differently
- Every window is a window of one app. Each window used to be its own process. Now
cmd+q
quits them all, and the next launch reopens every window that was open, with the one you last
used in front. On the first launch after updating, window processes left from an older Muster
are asked to quit, and their windows open in the new app. - Closing a window keeps its tabs. Close it with its close button or the new
cmd+shift+w,
and Window > Reopen lists it by name to bring back. Launching Muster again while it runs opens a
window in the running app rather than a second copy. - Naming a pane names its agent's session. Muster types
/rename <name>at the agent's prompt
once it is idle and its prompt is empty, which Claude Code and Codex take. In the other
direction, a session renamed in its harness renames the pane.name_sessions = falsein
config.tomlstops Muster typing into your agents. - An agent comes back after its daemon restarts. After a crash, a reboot or an upgrade that
could not hand panes over, a pane whose agent had reported its session comes back running that
session. It keeps the flags it was started with:claude --model opuscomes back asclaude --model opus --resume <id>. So far that is Claude Code, with its plugin's hooks up to date
(see the next item).resume_agents = falsebrings such panes back as shells, as before. The
window now says when a daemon restarted, which agents it resumed and which it could not, and the
warning stays until each of those panes has an agent again or is closed. - Update the Claude Code plugin if you installed it before this release. Its hooks now report
the session's id, which resuming after a restart needs. An installed plugin keeps its old hooks
until updated:claude plugin marketplace update muster, thenclaude plugin update muster@muster. If you installed it from a checkout of this repository, runclaude plugin marketplace remove muster, thenmuster harness install claude-code, to install it from the
adapters bundled with the app instead. - The numbered chords' actions are
numbered_chord_1tonumbered_chord_9. A[keymap]
namingfocus_pane_N, or the olderfocus_tab_N, is refused, and the whole file with it,
saying the new name; rename them. The menu items are "Tab or Pane 1" to "Tab or Pane 9". muster tab newno longer switches to the tab it makes, and the keyboard stays in the pane
it was in, as the command's help always said.--focusswitches to it.- The context ring's color moves with the fill, from grey when empty to red when full, where
it used to turn orange at 80%. Orange is theblockedstate's color, so a full ring no longer
looks like an agent waiting on you. - The pointer is an I-beam over a pane's text and a hand over a link. The link under it shows
its address at the pane's bottom left, so an OSC 8 hyperlink can be read before opening it.
New
- Right-click menus on a pane, a tab's caption and an agent's row. A pane can be split any
way, or onto any attached machine, zoomed, moved to a tab of its own, renamed, compacted or
closed. A tab can be renamed, moved to another window, closed, or given a new tab beside it on
any machine. Each menu copies the pane or tab id thatmustertakes. - Drag a pane by the handle at its top onto another pane's edge to put it on that side, half
and half, as in Ghostty.muster pane move --onto PANE --downdoes the same. - Go back and forward through the panes the keyboard has been on, across tabs and machines,
withcmd+opt+[andcmd+opt+], the mouse's back and forward buttons, ormuster focus --back
and--forward. - Two new chords.
cmd+shift+rrenames a tab, andcmd+ctrl+=makes every pane in a tab the
same size. - The Help menu searches every action, and Select Pane Asking is greyed out while no pane is
asking. - Compact an agent's context with Compact Agent in the Pane menu and the right-click menus,
thecompact_paneaction, ormuster pane compact.compact_at = 80inconfig.tomlhas
Muster compact an agent once it reports its context 80% full; it is off unless set, and acts
only on agents whose adapter reports context. Either way the compact command is typed once the
agent is idle and its prompt is empty, never mid-turn.muster pane wait --context 80ends when
an agent gets that full. muster pane read --turnreads what an agent printed in its last turn, and nothing from the
turn before.muster msg post --urgentreaches an agent while it works. The message is typed into the
agent's prompt box, and Claude Code and Codex take what is typed there into the running turn
after the current tool call. It still waits out a dialog, a draft or a blocked agent.- Codex and OpenCode can report their own state, through adapters in
extras/codexand
extras/opencode, as Claude Code's hooks do: working, blocked and idle, with context and model.
muster harness install codexoropencodeinstalls one. Messages now wake both at their
prompts, adapter or not, and an idle Codex holding a draft is woken withcodex queue, which
leaves the draft alone. muster harness install claude-code(orcodex,opencode) installs a harness's adapter
through the harness's own plugin command, from the adapters now bundled with the app;
--dry-runprints the commands. A devenv gets the adapters when Muster installs its daemon
there.muster windowand the agent list say when a pane's agent has an adapter that is not
reporting.- The agent list shows your message groups under a Messages caption, with how many messages
are unread in each and an @ while any are addressed to you. Choosing a group opens its
transcript, asmuster msg open --group Gdoes. muster msg group deletedeletes a group and its log.human_nameinconfig.tomlsets the name messages show beside@human, which is your
login name unless set.muster window --layoutdraws every tab as boxes, including tabs not on screen and tabs in
closed windows, each pane with its state and its size in cells. With--watchit redraws
whenever the arrangement changes.muster window --watchlines now end with each pane's label,
andmuster windowsays each machine's swatch color.- Windows from the CLI:
muster window close,muster window list --closed, andmuster window reopen NAME.muster window new --daemon IDstarts the new window on that machine, and
--tab TABmoves that tab into it. A global--window NAMEsays which window any command is
about. - A problem at the foot of the agent list can offer a button that fixes it, such as Reattach
for a pane left blank. - A
[[daemon]]block added to the config attaches when you save it, with no relaunch, and so
does a corrected block whose machine never attached. A removed block, or one changed after its
machine attached, waits for a relaunch, and the agent list says so. - An agent-detection override in
~/.muster/agent-detection/applies when you save it, rather
than at the next launch. hide_pointer_while_typing = truehides the pointer while you type in a pane, as in
Ghostty. It is off unless set.
Fixed
- Claude Code's plan approval dialog reads as blocked. The agent could read idle, then done,
while the dialog waited on you. - An agent that starts several seconds after its command is recognized. One that started
about eight seconds in, just as Muster stopped looking, never was. - A message posted to Codex as it starts is no longer lost.
- An idle agent whose screen never stops moving is now woken by messages, such as one with an
animated statusline. - Claude Code's statusline reports context, model and cost on a devenv without
jq, where it
used to report nothing. - A
claude -prun from inside an agent's pane can no longer report that pane idle mid-turn,
nor clear its agent's context and model. - A row's number in
muster pane readno longer changes as old rows are trimmed from the
scrollback. - Starting the laptop's daemon can no longer hang Muster, which a rare race could make it do.
- A daemon that can never start is reported once, rather than retried forever under a warning
promising its panes were on their way. - A first window opens on the machine the config names first, rather than whichever local
daemon answered first. - A pane that stays untypeable is reported once, rather than again, reopening the problem box
you had put away, each time Muster reconnected it.
Under the hood
- The daemon protocol is 1.3. Muster hands the 0.12.0 daemon's panes to the new one on the first
launch after updating, on the laptop and on a devenv, so running agents keep running. - A pane in a tab nobody is looking at no longer draws, and the agent list redraws a changed row
in place rather than rebuilding it, which matters most in a window holding many tabs.
Apple Silicon, macOS 14 or newer. Notarized and stapled.
brew install amterp/tap/muster
sha256 c458665a5722bc742d63806b359dcf8dfffad98788430fe12797bf39850bace1
Full Changelog: v0.12.0...v0.13.0