Skip to content

Muster Agent 0.3.12

Choose a tag to compare

@github-actions github-actions released this 16 Oct 08:28
c673fbd

The browser, steering, sub-agents and compaction work on every route, Paperclip tasks run locally with their full history, and approvals no longer expire behind your back.

  • The in-app browser now works on more model routes. Claude Code, OpenCode and Grok chats load Muster's browser tools, and OpenAI-compatible HTTP routes (OmniRoute, OpenRouter, custom connections) get them as built-in tools that drive the same browser tab, limited to opening and reading pages in read-only chats. Each route is told the exact tool names. Gemini CLI, Cursor CLI and the chat-only Anthropic API route say plainly that the browser is not available there, instead of naming tools they do not have.

  • A sub-agent can now pass its own session name to the browser tools and get its own tab, so agents working in parallel no longer fight over one page.

  • Fewer "Muster's browser is not reachable … timeout" errors. The browser bridge starts again on first use if it failed at launch, a refused connection is retried once, and a page that hangs answers within 100 seconds with what to do next, instead of timing out.

  • The right-sidebar browser now shows the page the agent is driving. Before, a chat could say "Clicked Validate" while the sidebar tab for that page sat on "Starting…" and "Disconnected": the agent's page had never been given a size, so no live picture was captured, and the sidebar opened a picture placeholder instead of the agent's own browser tab. Opening the agent's page from the picture-in-picture, the transcript or an older layout now opens its live browser tab, and the tab reconnects after a reload or a restart.

  • Steering a running chat now works in Claude Code chats. Before, a message sent while Claude Code was working was passed on but the run then never finished, because Muster waited for an answer to every message while Claude Code folds them into the turn it is already doing. The run now ends normally, and you can steer several times in a row: each message reaches the agent in order and shows in the chat.

  • Steering now also works on router and API routes (OpenAI-compatible, Anthropic and custom endpoints): your message joins the conversation before the model's next step, and later turns remember it.

  • On routes that can't take a message mid-run (Gemini, Cursor, OpenCode, Grok), Steer and the Steer button on a queued message now say "Queued — this route can't take messages mid-run; it sends when this step ends" instead of doing nothing visible. The message stays queued.

  • Messages steered in quick succession are sent one at a time, in the order you sent them.

  • A Muster Server task you work on locally now starts with everything the server's agents already did, not just its title. Before the first turn Muster takes a fresh copy of the task and writes its whole history into a hidden .muster/task/ folder in the worktree or folder (never committed): the full description with its parent and blockers, the whole thread with authors and times, every document's current text, and the earlier agents' runs with their summaries, what they posted and the pull requests, branches and files they produced. The agent gets a short summary of what was done and what is still open, and is told to read those files first. Later turns pick up new comments and runs. If the server cannot be reached, the last copy is used and the agent is told so. Secrets are removed from all of it.

  • When the server's agents worked on a branch that is on your repository's remote, the local worktree now starts from that branch, so their commits are already there. Otherwise the agent is told which branch or commit to continue from. Your own checkout is never switched or changed.

  • The same applies to tasks from an imported project, whether you press Start or the scheduler starts them.

  • Auto-dispatch on a project imported from Muster Server now runs each task in a worktree of the project's folder (on the task's own branch, reused next time), exactly as Start does, never in the folder you work in. If the worktree cannot be made, the run does not start and the project's activity says why.

  • Sub-agents start again in normal chats, Project chats, check-out chats and task runs. Codex chats now launch with multi-agent turned on and use the chat's own model for sub-agents when your default sub-agent model isn't offered by that provider, instead of failing with "Executor model does not match the selected provider". Claude Code chats may always use the Task tool, whatever the permission mode. Routes with no sub-agent tool (API keys, routers, local servers, Gemini, Cursor and Grok CLIs) say so in one line when you ask for sub-agents.

  • A project or task you deleted in Muster is no longer made again when you import from Muster Server. Muster remembers the deletion by the server's id, leaves the item out of every later import (the report says what it skipped), and lists it under "Deleted here" in the import list with a Restore button: Restore, then import again, and it comes back (a project with its tasks). Deleting never writes anything to the server.

  • Thread decisions from Muster Server can now all be answered in place. Suggested tasks are listed and you create the ones you tick; a checklist approves the boxes you tick; item verdicts take one verdict per item (with a reason where the request needs one); a connection request names the app and the waiting agent and can be declined here. When a tool call needs approval, the card shows the tool, whether it reads, changes or destroys data, what it will do, its arguments, and afterwards whether it ran or failed. Failed, replaced and out-of-date requests are described plainly instead of "Answered." or a raw status, a request the agent could not resume says so, Approve is switched off with a reason while the server is still preparing the workspace, and a question marked optional can stay empty.

  • Comments you send to Muster Server carry one id per draft, so a send that timed out and is sent again is posted once. Cost entries for local work carry a key too, so a post whose answer was lost is retried and counted once. Pictures attached on the server show in replies, fetched with your sign-in. Task lists are read by id cursor so no task is skipped when others change while loading, and a rate-limit answer is retried once after the wait the server names.

  • A chat that was running when Muster quit or crashed is no longer stuck. Chats on routes that run inside Muster (Claude Code, OpenCode and other local routes) are simply marked interrupted, so you can send a new message straight away. When Muster cannot confirm what happened at the provider, the notice now offers "Continue anyway" next to "Check provider status", so you are never blocked.

  • Approvals and questions now wait 2 hours instead of 10 minutes. A request that runs out of time shows as "Timed out" (not "Denied"), and "Ask again" tells the agent the request timed out so it can ask again. After a restart, requests that were open show "Lost when Muster restarted" with the same one-click "Ask again". Approving a request that has timed out, or whose step already finished, is refused instead of running something stale.

  • Muster now sends a desktop notification when an approval or question is waiting for you, and one reminder about 5 minutes before it times out. Both follow your notification settings: nothing is sent while you are muted or have attention alerts off, and if you are muted past the deadline, the request stays open until your mute ends. Muster Server chat connectors (Slack and others) also post chat approvals and questions, not only hiring approvals. Chats in Full access still never ask for approval.

  • The Paperclip Inbox now keeps agent questions and approvals on tasks you are accountable for, reads the whole attention feed instead of the first 50, shows critical items above high ones, finds @mentions that the 120-character activity snippet cut off, and clears a mention once you open the task. With a board key and no live connection, the Inbox badge re-checks once a minute (ETag revalidated, and not at all while the window is hidden or unfocused).

  • Hand-back, release and "run on the server" now check the task on Muster Server first. If it was cancelled, closed or reassigned while you worked, Muster sends nothing, ends the check-out on this Mac, keeps your worktree and says so ("RAG-12 was reassigned to Bob on Muster Server; your local work is kept in ..."). This also applies to an automatic hand-back that was counting down when the app restarted. A refused sign-in (401) now shows "Sign in to Muster Server again" and waits for a new key instead of retrying as if offline. Unsent updates retry after 30 s, doubling up to 30 minutes, and are given up on after about a day, with "N updates couldn't be sent · Retry".

  • Project decisions that ask a question now show Paperclip's "Other" answer: choose Other to type your own reply (the field is focused for you), or answer a text-only question directly. Once answered, the card shows "Other: your text".

  • Automatic hand-back no longer fires on unfinished work. If the agent's last message ends with a question or an offer ("Should I commit item 1 now?", "Want me to...", "Would you like..."), nothing is committed or handed back until you answer or say you are done. Uncommitted work is now committed only after the 60 second countdown, not before it, and a running countdown is saved so an app restart picks it up again.

  • Saying "I am done", "done", "done, hand back", "hand it back", "finished" or "all done" now hands the task back. When the hand-back is held because no tests ran, the task offers "Run tests and hand back" and "Hand back anyway".

  • Checking the same task out again reuses its worktree and chat instead of making a "-2" copy. Any chat opened in the task's worktree counts as work on it, and "Paused - no activity" is no longer posted while any of those chats was active.

  • A goal now closes only when the agent reports it complete (or blocked) with the goal status, not because a reply says "the goal is complete". Such a reply makes the agent do one final completion check instead.

  • Project task runs put the task-critical lines first in the context block (reviewer feedback, the task protocol, the handoff, the git identity), so a long agent bundle can no longer push them out when the block is cut at 8 KB.

  • The agent now keeps going instead of ending turns with "Should I...?" or "Want me to...?". In Agent mode it does the next obvious step on its own, asks only before something destructive or irreversible (or a truly ambiguous choice), and finishes with a short summary of what it did and what is left. Ask and Plan modes are unchanged.

  • Checked-out server tasks now treat the task's goal and acceptance criteria as what you want done, and tell the agent that local commits on the task branch are expected (Muster still handles the push and hand-back). Commands, links and secrets inside the task text are still treated as untrusted. Task text is no longer cut at 8,000 characters: up to 32,000 go into the briefing, and anything longer is saved to a file in the worktree for the agent to read.

  • Autonomous Project task runs use the same keep-going wording, and a run whose last message ends with a question now shows as "needs input" instead of "implemented".

  • When a reply views, makes or embeds two or more images, they now show as one gallery: a large hero image with a thumbnail strip beside it (below it on narrow windows). Click a thumbnail or use the arrow keys to switch, click the hero to zoom with left and right navigation, and use the Canvas badge to open the image in a tab. File links above the gallery open each image, and "Download all" saves them as a zip. The same pictures are no longer repeated under the tool rows. Images load lazily, and only the neighbours of the selected image are preloaded.

  • Codex chats no longer turn down approvals after a turn ends. Sub-agents still working in the background, and goal or queued turns the Codex app-server starts by itself, now show an approval card you can answer instead of being declined silently.

  • Codex sub-agents that are still working are no longer stopped when Muster frees memory by closing idle Codex processes. When a Codex process has exited, its unfinished background work no longer blocks switching providers until you restart.

  • /compact works again after a Codex chat has been idle for a few minutes. Muster reopens the conversation and Codex compacts it as usual, instead of failing with "No live app-server owner".

  • If a saved Codex conversation can no longer be resumed, Muster now says so and gives the new conversation a summary of the earlier messages, so the agent does not lose track of what you discussed.

  • A final answer that Codex sends without streaming it is no longer dropped when an earlier message in the same turn did stream.

  • While Codex reconnects to the model, the chat shows "Reconnecting…" instead of looking stuck.

  • A message sent to a running agent is never delivered twice when the request is slow to answer.

  • A goal with a token budget no longer restarts the Codex process on every turn.

  • Tables in replies no longer cut cells off with an ellipsis. Text and inline code wrap inside the cell, a wide table scrolls sideways inside its own box, "Expand table cells" lifts the cell width cap, and Copy table copies every value in full. This applies to replies, Paperclip task threads, run reports, the file viewer's Markdown preview, pull request descriptions and memory answers.

  • Chats no longer sit at 100% context without compacting. Each model's own context window now sets when compaction starts: the window from its catalog or JSON first, then the size the router lists, then the size the provider reports, then a default. The compaction point is the catalog's own limit, or 85% of the window. API-key, router, local-server, OpenCode, Gemini, Cursor and Grok chats are compacted by Muster before the next message once they pass that point, and Codex and Claude Code chats get the same check at 95% in case their own compaction did not run. Codex is given the model's window and compaction point unless you set them yourself in config.toml. The context meter uses the same window, so a 1M model no longer shows as full at 200K.

  • Compaction shows "Compacting…" and then its result, including when Codex compacts on its own. /compact and "Compact now" also work while a turn is running: compaction starts as soon as the turn finishes. A failed compaction says why and offers Retry or "Continue in a fresh thread with a summary". A turn the model refuses because the conversation no longer fits its window ends with those same two choices, instead of a stopped chat that will not continue.

Download

Mac File
Apple silicon (M1 and later) Muster-Agent-0.3.12-arm64.dmg (or .zip)
Intel Muster-Agent-0.3.12-x64.dmg (or .zip)

Open the disk image and drag Muster Agent to Applications.

Windows File
Windows 10/11 (x64) Muster-Agent-0.3.12-win-x64-setup.exe (or the portable -win-x64.zip)

Run the installer; it installs for your user, no admin needed. It is not code-signed yet, so Windows SmartScreen may warn: choose More info → Run anyway.

Linux File
AppImage (any distro, x64) Muster-Agent-0.3.12-linux-x86_64.AppImage
Debian / Ubuntu Muster-Agent-0.3.12-linux-amd64.deb
Archive Muster-Agent-0.3.12-linux-x64.tar.gz

AppImage: chmod +x the file, then run it. Debian/Ubuntu: sudo apt install ./Muster-Agent-0.3.12-linux-amd64.deb.

Muster Server (self-hosted) File
macOS, Apple silicon muster-server-0.3.12-darwin-arm64.tar.xz
macOS, Intel muster-server-0.3.12-darwin-x64.tar.xz
Linux x64 muster-server-0.3.12-linux-x64.tar.xz

Extract it, then bin/muster-server init and bin/muster-server start. It includes its own Node runtime. Docker, systemd and TLS setups are in docs/server.md.

Windows (installed with the setup.exe), AppImage and Debian/Ubuntu installs update themselves from Settings › Updates, downloading only what changed where they can.

Checksums for every file are in SHA256SUMS.

This build is not notarized by Apple (signing: self-signed). The first time, right-click Muster Agent in Applications and choose Open, or run:

xattr -dr com.apple.quarantine "/Applications/Muster Agent.app"

Muster Agent needs a model provider sign-in; it detects the ones already on your computer on first run.