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

μ · Only what's needed.

Only the context the task needs

mu is a coding agent. A small, fast judge called Jev makes dozens of small decisions for the big model in every turn: what stays in the context, whether a command is safe, whether the work is really done. The big model keeps its attention for the work.

$ npm i -g mu-agent

Needs Node.js 22.19 or newer. Then run mu in a project folder; the first time, mu setup connects a model.

macOS · Windows · Linux · open source (MIT + Apache-2.0) · built on pi

Watch a real turn

MU · A REAL TURN

Judge first, then act

You ask for a plan, and the context carries a whole toolbox. Models write better code every month, and their reports get harder to read. mu splits the work: Jev judges, the big model works, and a model picked for plain speaking tells you where things stand.

~/slugify — mu
  4     .toLowerCase()                                                              
  5     .replace(/[^a-z0-9]+/g, "-")                                                
 -6     .replace(/^-/, "");                                                         
 +6     .replace(/^-+|-+$/g, "");                                                   
  7 }                                                                               
                                                                                    

                                                                                    
 $ cd /Users/Shared/mu/slugify && npm test 2>&1                                     
                                                                                    
 ... (10 earlier lines, ctrl+o to expand)                                           
 ℹ fail 0                                                                           
 ℹ cancelled 0                                                                      
 ℹ skipped 0                                                                        
 ℹ todo 0                                                                           
 ℹ duration_ms 84.5005                                                              
                                                                                    
 Took 0.3s                                                                          
                                                                                    

 All 4 tests pass now. The bug was in src/slugify.js — the final .replace() only
 stripped a leading dash (/^-/) but not a trailing one. Changed it to /^-+|-+$/g to
 strip dashes from both ends.

────────────────────────────────────────────────────────────────────────────────────

────────────────────────────────────────────────────────────────────────────────────
~/slugify (master)
↑6.2k ↓643 R19k CH94.0% $0.034 (sub) 2.5%/200k (auto)     claude-sonnet-4-6 • medium
jev-1.13-free active: multi_step_task -> heavy 752ms Permissions: Full access
A real recording: mu 0.1.8, the free Jev as judge, Claude Sonnet 4.6 as the model.
The hive tab in the desktop app: four bees research in parallel; the arrows are findings Jev judged worth delivering
The hive tab in the desktop app: each arrow is a finding Jev judged worth delivering.
The plain-language board: what is being done, how far it got, and the running account below
The plain-language board: what it is doing, how far it got, and the running account.

When you speak

Jev reads it first

Is this a new task, a follow-up, or a correction? Should a message that arrives mid-run interrupt now? Do skills and tools need to come in, or can one sentence answer it?

◆ jev-1.13-free multi-step task · heavy gear · 752 ms

This is a real turn. "Run the tests and fix the failing ones" comes in, and in under a second Jev answers: a multi-step task, heavy gear. Skills and MCP servers the task does not need stay out of the context until it does.

When a tool answers

Output goes past Jev first

A test run or a search easily returns hundreds of lines. Jev judges chunk by chunk what matters now: the failing cases stay, logs that repeat themselves go. What stays out is archived behind a pointer, ready when it is needed.

In web pages and MCP results, instructions aimed at the model are withheld before it reads them.

Before acting

Stop what should stop, ask only what needs asking

Before each command runs, Jev judges whether it does something that cannot be undone, and whether it crosses a rule you set. There are three permission modes: Full access, Jev approves and Minimal permissions, switchable at any time. Under Jev approves, you are asked only what needs you; the rest runs.

A verdict changes what the model does next, never whether it asks you.

When the turn ends

Done means verified

When the model says it is done, mu checks whether anything verified that, whether the turn drifted, and whether to go back to a checkpoint.

/goal <condition> keeps the agent working until the condition holds. A big model checks whether it does, with Jev as the fallback; when the same error comes back again and again, Jev judges whether the approach is a dead end.

The hive

Several bees at work, Jev in the middle

When several agents work on one hard problem, handing out the work is easy; talking is hard. Say nothing, and each walks into the same dead end. Say everything, and every context fills with the others' chatter.

In mu's hive, Jev judges every finding: is it worth sharing, and does it matter to this bee? Only then does it reach another bee as context. When a later finding overturns an earlier one, the correction goes to every bee that heard it.

The plain-language board

Working and reporting are different jobs

Models get stronger, and their reports read more and more like notes for a machine. In mu the working model keeps working its own way. Every few tool calls Jev reads the scene, picks what is really news, and hands it to a model chosen for speaking plainly, which tells you where things stand.

When a run ends, you see not just "done" but what was actually done.

WHAT WE LEFT OUT

What mu does not do

A big model's attention is limited, and so is its context. These are the things mu chose not to do, or chose to do differently.

01

No extra questions for you

A verdict from Jev changes what the model does next, never whether it comes back to ask you.

02

No toolbox in every prompt

The first message is judged: small talk, a follow-up, or work to do. Skills and MCP servers that are not needed stay out of the context.

03

No summaries to compact

When the context grows, stale results are dropped instead of summarized; before the cache expires, mu judges whether a refresh is worth it.

04

No locked-in judge

38 decision points, each with its own switch and its own judge: the free Jev, the local Laya, or any LLM.

05

No key needed to start

Without a judge key, the free Jev on OpenCode Zen answers, and mu says so once a day.

06

No new foundation

The command line is built on pi, with its models, extensions, skills and session tree; the desktop app is built on AionUi.

What each of the 38 decision points asks and changes

ALSO

One set of accounts, settings and lessons for the command line and the app

Import conversationsBring in your Codex and Claude Code conversations and carry on in mu.
Subscription sign-inChatGPT, Claude, Grok and Google, signed in inside the app, no keys to copy around.
LessonsYour corrections and the traps the agent found a way around are kept; a lesson that is recalled and never followed retires itself.
Built-in browserJev drives it step by step: look at the page, judge once, act; it stops to ask before submitting or paying.
A ledger of verdictsEvery verdict and how long it took: /status, mu ledger, and the app's judgments tab.
13 interface languagesThe desktop app speaks English, 简体中文, 繁體中文, 日本語, 한국어 and 8 more.

GET INVOLVED

Help make mu better

The Jev key giveaway has ended and the claim page is gone. mu now works without a key; to use your own TypeSafe key or another judge, see Judges.

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