v0.23.0
Two new kinds of session: llama.cpp, driven by the fleet’s own harness on the deployment’s chat engine or on a llama-server of your own, and Muse Code, Meta’s coding agent. Around them, a fleet graph that draws every session as a lane on a time axis, picture editing by instruction with masks and reference pictures, AI assistance that can be pinned per feature to an agent and a model, and stopped sessions that move to the archive instead of being deleted.
- llama.cpp sessions. A session kind with no CLI behind it: the fleet’s own harness talks to the deployment’s chat engine, with tools, MCP servers, approvals and exact usage in the mirror, and no terminal pane. It is on from the start; Use llama.cpp in Settings › Agents is where you switch it off. Your own connection on the same card points it at a llama-server on your LAN instead; that connection takes priority, and the card and the engine pill say whether it is reachable before you launch.
- Muse Code sessions. Meta’s Muse Code as a session kind. It is not in the image, so the Settings › Agents card installs it once into your home, then you sign in with your Meta account from the browser or with an API key and launch it like any other agent. Its questions, usage and context gauge, skills, MCP servers, fork and handoff all go through the mirror. Muse’s own OS sandbox cannot run in a workspace, and with it off Muse never asks before running a tool: a Muse session reaches the container the way a shell session does.
- A fleet graph. The sessions overview has a Graph switch: one lane per session on a time axis, showing when each started and stopped, where it started a child, sent a message or reported back, and what state it is in now. Families fold, archived lanes can be shown or hidden, and the window pans and zooms from the last 24 hours.
- Editing pictures by instruction. The Qwen-Image-Edit families (2509 and 2511) take a sentence describing the change plus up to three reference pictures, and a mask — white is repainted — for inpainting. The whole picture is edited — nothing is cropped away — a phone photo’s orientation is honoured, and a mask of any size marks the same region of the picture. Waking the engine and generating are timed separately, and the reproduction info of an edited picture carries its prompt, negative and size. Qwen-Image 2.1 joins the families as well, generating and editing from one model, with sizes up to 2K.
- Stopped sessions are archived, not deleted. When the stopped-session window runs out the session moves to the archive with its conversation, and it can be restored from there. Nothing is deleted without a person asking, so a worktree no longer disappears with its session — the cleanup dialog reclaims it.
- AI assistance per feature. Settings › AI assistance gives each feature — the title, branch name and reply suggestions, file edit suggestions, the work-plan update and answer translation — its own on/off, agent and model. A feature that is off hides its button, and the card says which agent and model each one currently uses.
- Have another session review a plan. A plan in the mirror gains Review in another session: it rejects the plan and starts a review session with the agent you pick, which checks the plan against the code without changing anything and answers in a fixed format.
- GPU idle stop is a setting. The engines panel has Stop after per role, in minutes, instead of a fixed window.
- Spot needs consent. A Spot offer is bought only for a role where a super admin ticked Accept interruption. A pinned Spot offer without it is skipped and the role chooses automatically; un-ticking applies to the next instance, not the running one.
- A registered model’s card offers “Other versions…” or “Other sizes…” — the same publisher’s other versions or quantisations, with size and fit — and taking one in creates a new row.
- Stop every session under a repository or worktree from its right-click menu, now or after the turn, with the reason listed for any session that cannot be stopped.
- The opencode card separates the switch from the billing choice. Use opencode (Off in a new workspace) governs the whole kind — off, it leaves the launch menus and a direct API create is refused — and the billing choice gains None (my own keys), on which the opencode.ai key is never injected.
- An unread notification shows as a red dot on the session, with Mark all as read in the notification centre.
Improved
Section titled “Improved”- Launching says what the model list is doing. It shows “Loading models…” and, when the list is empty, why: every model excluded in settings, the billing choice leaving none, or a workspace that has only just started.
- The WS bar keeps the usage chips of the two agents you used most recently and folds the rest into “+N”. Each chip can be kept on the bar or always folded.
- The engine pill names the model that is loaded, says In use while a request is running, and when it was last used.
- Gallery cards have a right-click menu — copy the path or name, rename, delete, open the session that generated the picture — and the lightbox’s information panel follows the theme. Pictures pasted into the chat open in the same lightbox.
- The changed-files band appears for llama.cpp, Kiro, Muse Code and Antigravity sessions as it does for the others.
- The size warning on an edit names the size the picture will actually come out at, for every family, rather than the size of the input.
- A borrowed engine whose model was still loading answered “did not come up in time” to a chat instead of waiting; the wait is now streamed, and a refusal from the far deployment is relayed as it came.
- Context usage of a session on the fleet’s own chat engine was a guess — it now reads the window the engine actually loaded.
- The fit verdict of a chat model’s quantisation could be wrong; it is now read from the file itself and stays with the row for its lifetime.
- Taking a model in: an undeclared
llmfile offers Register as well as Delete; editing the id on the plan card no longer fails as a stale plan; the dialog no longer plans twice; a split family’s part landing on another family’s file is caught while planning; and moving a misplaced file works once the stack below is updated. - A claude session’s mirror went silent during a long run of tools while the terminal kept narrating. The narration is claude’s thinking — with Fable 5.1 and Opus 5.5 the summarised kind — and the mirror was dropping it. It now shows as a collapsible Thinking block, with Show thinking expanded on the Claude card in Settings › Agents, and usage is counted once per response rather than once per part.
- A long generation on the fleet’s own image engine could be reported as failed while the engine was still working on it. It now keeps waiting while the job is queued.
- Clicking outside a popover or right-click menu also pressed whatever was underneath — a button, a session row, the composer. The click now only closes the menu.
- The Discord bridge could send the same “answer ready” notification twice.
- Copying a quote from the mirror lost its paragraph breaks, and swiping a wide table sideways on a phone opened the left pane.
Upgrade notes
Section titled “Upgrade notes”-
ecs-ec2deployments that run engines: update the60-enginesstack, and move the ComfyUI tag yourself. The template drops the task-level memory limit that killed ComfyUI while it loaded larger models, and gives the ingest role the S3 tagging permission the move repair needs;update.shcarries both. The ComfyUI image moves tov0.37.0, which the Qwen-Image 2.1 family requires, but a live stack keeps the tag it has: copy the image to ECR asdeploy/aws/ecs/README.mddescribes, then name the parameter once —Terminal window aws cloudformation deploy --stack-name af-ecs-engines \--template-file deploy/aws/ecs/cfn/60-engines.yaml \--parameter-overrides ImageComfyImageTag=v0.37.0 \--capabilities CAPABILITY_NAMED_IAM --no-fail-on-empty-changeset -
A deployment that already lists Spot offers stops buying them until a super admin ticks Accept interruption for that role on the engines panel; listing a Spot row is no longer consent by itself.
-
The llama.cpp engine image can be pinned to a digest with
standup.sh --llm-digest sha256:…; left unset, the copy is what it always was.LlmImageTagis unchanged. -
Muse Code is not in the image. It is downloaded from Meta’s release channel into a user’s home only when that user asks for it (about 299 MB);
NOTICEsays so. -
Disk: worktrees of stopped sessions are no longer removed automatically. The cleanup dialog is where they go now.
Agent CLI pins: Claude Code 2.1.280, Codex 0.156.0, Copilot 1.0.88, OpenCode 1.18.32, Antigravity 1.2.8, and Muse Code 1.3.0-R3401.1 (new, installed on demand). Cursor and Kiro are unchanged from 0.22.0.