Product
/goal keeps the chat working, /ultracode shows its agents
/goal now works like the hook in Claude Code: after each answer a checker decides whether the goal is met, and the chat carries on until it is. Ultracode lists every agent in the chat.
/goal
Type /goal and a condition, for example "every test passes". After each answer a separate small model reads the chat and decides whether the condition holds. If it does not, the model is called again with the reason, and you see that as a line in the chat. It stops when the goal is met, when the checker sees a hard blocker, after four rounds with the same missing piece, or after 25 rounds. It runs on the server, so closing the tab does not stop it. The old background job is still there as /jobgoal, or /jg for short.
Ultracode
/ultracode is now a switch. With it on, the model decides for itself when a task is large enough to split across several agents in your container. A card in the chat lists each agent with its state, and an arrow opens its log: the task it got, the tools it called and what it wrote. Two checkers review the files each agent changed before the model answers you. The card survives a reload. How it works.
Faster on free models
Agents on ZeroLog Free used to wait up to two minutes per step when a free model was rate limited, because the same busy model was asked again and again. A model that answers with a rate limit or an empty reply now rests for a while and the next one takes over, so a step takes a few seconds. The chat shows progress live again; some runs only appeared after a reload. Hourly snapshots moved out of the job worker, which used to pause for almost three minutes each hour, and older snapshots now go to network storage.