NewDesktop v0.1.7: settings grouped by area, a new first-run guide, mu-agent 0.1.8 inside
Documentation Documentation

Start here

Getting started The desktop app The command line

Using mu

Judges Permissions and safety Goal mode and finishing Context Lessons The plain-language board Sub-agents and the hive

Reference

Configuration Features and options Troubleshooting Privacy

Using mu

Goal mode and finishing

The task frame, /goal, and the checks that keep a run from stopping early, drifting or going in circles.

The most common way a long task fails is not a wrong answer but stopping early: the model says mostly done, and the tests never ran. mu has several pieces against that, all built on one record of what you actually want: the task frame.

The task frame

The task frame holds the goal, your hard constraints in your own words with where you said them, the current subgoal, and the acceptance items. The acceptance items are also the to-do list the model ticks off.

Every message you send is judged once (task.frame): a new task, a new hard constraint, a correction, a new subgoal, or no change. Only a change has a model rewrite the frame, so a plain thanks costs nothing. /frame shows the current frame. It follows the conversation tree: after a fork or a rewind, the frame of that branch comes back.

Goal mode

/goal all tests in packages/api pass and the README documents the new flag

The agent starts at once and keeps working until the condition holds. /goal alone shows the goal, its state, the last check's reason and the next step, or asks for a condition when there is none. /goal clear ends it. In the app, set a goal from the send box; the goal line shows its state.

Each time the agent wants to stop, a model reads the evidence and decides: met, continue with a concrete next step, or needs you. The evidence is the goal, the acceptance items still open, files edited and not checked since, the last test, build or lint run and its result, what the run did, and the closing message. Facts win over words: an open acceptance item or an unverified edit always means not yet, whatever the closing message says. Jev (goal.met) answers only when the checking model gives no answer.

It stops by itself, and tells you why, when:

Reason Default
It needs you (a choice only you can make)
You press Esc, or a model call fails
Runs in a row end without a single tool call 2
Runs judged to make no progress 2 (the first time, it is told to change course)
Continuations since your last message 20
Minutes since your last message 180

After a pause, your next message picks the goal up again. A reopened session brings a running goal back paused, never running.

The checks at the end of every turn

Without a goal, each turn still gets these:

  • Completion check (turn.completion). When the model says it is done, mu asks whether anything verified that. If not, one nudge to check, for example to run the tests.
  • Stopped short (turn.continue). A run that ends on next, I'll run the tests without doing it, or asks for a go-ahead on work you already asked for, is sent back to it, at most twice per message. A step that is hard to undo or reaches beyond this machine, such as a push, a publish, a delete or a payment, is never pushed this way.

Drift and dead ends

  • Drift monitor (turn.drift). Every six tool calls, mu checks that the work still serves the goal. Rules catch the other failure, going in circles: the same call three times within the last eight.
  • Judged rewind (turn.rewind). When the agent goes in circles, or one command keeps failing, the judge asks whether the approach is a dead end. Only a confident dead end with no progress proposes going back to the turn's checkpoint, with a note of what was tried and why it was dropped. The proposal waits two minutes for you; unanswered, the run carries on. It never rewinds by itself.

Rewinding by hand

/checkpoints lists the snapshots of the current branch, newest first: number, turn, time, how many files changed since. /rewind goes back to the latest, /rewind 3 to number 3; it first shows which files would be put back, deleted or restored, then asks whether to take back the files, the conversation, or both. /rewind undo takes a rewind back. More under Permissions and safety.

If mu is useful to you, star it on GitHub

A star helps more people find it. The code, the discussions and every release live in the repository.

Star on GitHub464