All agent CLIs
MiMo Code in NeuroSquad

MiMo Code,with a canvas around it

Run as many MiMo Code agents as you need, each the real mimo TUI in its own card. A NeuroSquad plugin inside MiMo reports every turn, question and permission, arrows hand it terminals, notes and other agents mid-session, and its in-session actors show up as subagents.

Official sitemimo.xiaomi.com/coder
  • The real mimo CLI, your own models
  • Dangerous mode without a restart
  • Free, for Windows and macOS
Plugin events

It knows when MiMo is done — and when it’s asking

MiMo Code is a fork of OpenCode, with the same plugin API and events. Every card loads a small NeuroSquad plugin that relays them, so the card never guesses from a quiet terminal.

session.status: busyevent
Working

session.status turns busy for the main session. The card’s icon spins, the Squad status card counts it, and the toast from its last question is taken down.

permission.askedevent
Needs you

permission.asked: MiMo shows “Permission required”. The toast names it — MiMo Code needs your permission: bash_delete — rm -rf dist — and stays until you answer.

session.status: idleevent
Finished

session.status turns idle. The next queued prompt goes out, the journal gets the answer, and a toast says it’s done.

Questions, too

MiMo’s question.asked reads MiMo Code is asking: Red or blue? on the toast; when its bash tool hands a command to you (bash.interactive.asked), the card waits as well.

Actors keep it working

MiMo’s actors run inside the same session. The plugin reports each one, so a card with a background actor stays working until the actor reports back.

Ready before it types

MiMo needs about 20 seconds to boot with the app’s servers. Seeds, helper prompts and queued prompts wait for its “MiMoCode” title, so nothing is typed into a half-started TUI.

Watch it work

Three things you’ll do with MiMo Code

Replicas of the app, played step by step. When MiMo asks, the answer is yours.

MiMo Code fixes a failing test through a terminal card, stops at “Permission required” before deleting a folder, and finishes — the journal writes itself.

Everything it gets

Everything MiMo Code can do in NeuroSquad

Measured on MiMo Code 0.1.15. Most of it is MiMo’s own — plugins, MCP, sessions, its database. Where NeuroSquad had to build something, or MiMo can’t do it, the card says so.

  • 01

    Knows its state

    The plugin relays MiMo’s own events — turns, permissions, questions — so nothing is guessed.

  • Finished and waiting are different

    The plugin relays session.status busy and idle of the main session and permission.asked — exact turn starts, waits and ends.

    Docs: Finished and waiting are different
  • A notification that says what it needs

    The toast names the call — MiMo Code needs your permission: bash_delete — rm -rf dist — or the question MiMo asks. One per agent; a waiting one stays until you answer.

    Docs: A notification that says what it needs
  • Commands it hands to you

    MiMo’s bash tool can hand an interactive command to you and wait (bash.interactive.asked). The card shows that as waiting on you, too.

    Docs: Commands it hands to you
  • Picks up where it left off

    MiMo names its own sessions (ses_…); the plugin reports the id and the next launch is mimo --session <id>. A deleted session would leave MiMo on a blank screen, so the card checks first and starts fresh.

    Docs: Picks up where it left off
  • The Squad status card

    Every AI agent of the workspace on one card, with its model — or MiMo’s default model before the first turn.

    Docs: The Squad status card
  • 02

    Works through the canvas

    An arrow from the card is a set of tools, over MiMo’s own MCP client.

  • Arrows are tools

    The card’s config adds NeuroSquad’s MCP server, the token read from the environment. An arrow to a terminal, note, browser or agent gives MiMo neurosquad_* tools.

    Docs: Arrows are tools
  • New arrows work mid-session

    MiMo re-reads a server’s tools when they change, so an arrow drawn while it runs is there on its next turn — same process, no restart.

    Docs: New arrows work mid-session
  • Canvas mode that holds

    bash, webfetch, websearch, MiMo’s own codesearch and its exec script runner are denied in the card’s config, which removes them; the live dangerous-mode allow never approves them.

    Docs: Canvas mode that holds
  • MCP servers from the registry

    Installed servers come as a second server set to ask: MiMo shows its own permission prompt before every call.

    Docs: MCP servers from the registry
  • Skills from skills.sh

    An arrow to a skill card gives MiMo skill_load through the app’s server, gated by the arrows like every other tool.

    Docs: Skills from skills.sh
  • 03

    Built for long runs

    Context, Compact, rate limits, a prompt queue and a journal — handled on the card.

  • Context meter

    The latest request’s tokens from MiMo’s database, against the model’s window from MiMo’s catalogue or your custom model’s limit.

    Docs: Context meter
  • Compact

    The Compact button sends MiMo’s own /compact. MiMo also compacts and rebuilds from checkpoints on its own.

    Docs: Compact
  • Continues after a rate limit

    When MiMo retries on a rate limit, the plugin relays it: the card shows the limit and sends “continue” when it clears.

    Docs: Continues after a rate limit
  • Prompt queue

    Prompts to a busy card wait in the queue and go out one by one when MiMo finishes — never glued together. A 30-line prompt arrives whole.

    Docs: Prompt queue
  • Journal and hand-off

    The last answer of the main conversation is read from MiMo’s database: the journal note, a hand-off, agent_wait, Telegram and custom cards get MiMo’s real reply.

    Docs: Journal and hand-off
  • 04

    Works in a team

    Actors, live dangerous mode and a switch to another CLI — without losing the conversation.

  • Built by NeuroSquad

    Actors as subagents

    MiMo’s actors run inside the parent session under their own id. The plugin reports them, so the card stays working while one runs, and Usage, Run Stats and Agent Pulse mark their requests as a subagent’s.

    Docs: Actors as subagents
  • Built by NeuroSquad

    Dangerous mode, live

    Like Claude Code’s: no restart. While the card’s switch is on, the plugin answers each permission ask “once” through MiMo’s own API; turn it off and the next ask reaches you. Canvas mode still wins.

    Docs: Dangerous mode, live
  • Model and CLI switch

    A lead agent can change the card’s model with agent_set_model — the card resumes the same session on the new model — or move the conversation to Claude Code and back.

    Docs: Model and CLI switch
  • Built by NeuroSquad

    No stop at the trust prompt

    MiMo asks whether to trust a folder before its TUI opens. The card launches with --trust, which skips it for that launch only — nothing is written to MiMo’s trust store.

    Docs: No stop at the trust prompt
  • Isolated worktrees

    Give an agent its own git worktree, so parallel agents never edit the same files.

    Docs: Isolated worktrees
  • 05

    Cost, control and access

    What it spends, what it may spend, which model it runs on, and how you reach it.

  • Exact usage

    Read from MiMo’s own database, child sessions folded into their root and actors marked. A model with no known price shows “no price”, never $0.

    Docs: Exact usage
  • Built by NeuroSquad

    Budget brake

    Past the workspace limit each MiMo gets Escape twice — the turn stops, MiMo keeps running (Ctrl+C would close it) — and automatic prompts wait.

    Docs: Budget brake
  • OpenRouter models

    --model openrouter/<slug> with the key named in the card’s config and NeuroSquad’s attribution on every request. The model must be in MiMo’s catalogue.

    Docs: OpenRouter models
  • Your own servers

    LM Studio, Ollama, vLLM or any OpenAI- or Anthropic-compatible server, as a provider of the card’s own with its models and windows; the key stays in the environment.

    Docs: Your own servers
  • From your phone

    Scan a QR code and the whole canvas opens in the phone’s browser: read MiMo’s TUI, answer its prompt, stop it with the Escape key.

    Docs: From your phone
  • 06

    Good to know

    What MiMo does differently, and what can’t be done.

  • Not possible

    The card can’t pick the session id

    MiMo always creates its own ids. NeuroSquad catches the id the plugin reports and resumes with it, which works the same in practice.

    Docs: The card can’t pick the session id
  • Two side requests aren’t counted

    MiMo asks a model for a session title and, after each answer, a next-prompt suggestion. It doesn’t store them, so Usage can’t count them.

    Docs: Two side requests aren’t counted
  • MiMo’s analytics are yours to set

    MiMo sends usage metrics to Xiaomi by default. It’s your MiMo, so the card leaves that choice alone; MIMOCODE_ENABLE_ANALYSIS=false turns it off.

    Docs: MiMo’s analytics are yours to set
  • A slower start

    With the app’s servers and plugin MiMo takes about 20 seconds to start. The card waits for it before typing anything.

    Docs: A slower start
  • This computer only

    MiMo cards don’t run in WSL or SSH workspaces yet — there, only Claude Code and shells do.

    Docs: This computer only
At a glance

Who’s waiting, and what it used

Two cards that answer the questions you ask most when several MiMo Code agents run at once.

The Squad status card

Every agent of the workspace with its status, model and turn time. The ones waiting on you come first, with what MiMo asks. Tap a status to filter.

  • coupon-fixMiMo Codexiaomi/mimo-v2.6-proMiMo Code needs your permission: bash_delete — rm -rf distNeeds you2:34
  • api-migrationMiMo Codexiaomi/mimo-v2.6-proMove routes to the new clientWorking11:07
  • lint-setupMiMo Codexiaomi/mimo-v2.6-flashMiMo Code is asking: Tabs or spaces?Needs you3:51
  • docs-passMiMo Codeopenrouter/qwen/qwen3-coderUpdate the READMEFinished6 min. ago

Usage & cost

Read from MiMo’s own database, each session credited to the card that ran it. Tokens are exact; actors’ requests are marked as a subagent’s.

AgentTokensCost
coupon-fix1,036,218no price
api-migration744,902no price
docs-pass214,376$0.14
Total1,995,496$0.14
Exact to the picodollar; rounded only on screen.Cards on OpenRouter are priced from its catalogue; a model without a known price shows “no price”.
Under the hood

The real MiMo Code, plus one config file

NeuroSquad starts the same mimo you run yourself, in a real terminal in the card. This is everything it adds:

What NeuroSquad adds to the command
❯ mimo
MIMOCODE_CONFIG=<this card’s file>every launchthe card’s own config, merged over yours: NeuroSquad’s MCP servers and plugin
MIMOCODE_PURE=falseevery launchthe plugin always loads, even from a shell started with --pure
--trustevery launchskips the folder-trust prompt for this launch only
MIMOCODE_DISABLE_AUTOUPDATE=1every launchMiMo never stops the card to update itself
NEUROSQUAD_LIVE_DANGER=1 → permission asks answered "once" while the switch is onevery launchdangerous mode, live: the plugin asks the app on each permission ask
--session <the ses_… id it reported>later launchesthe same conversation after a restart
"permission": { "bash", "webfetch", "websearch", "codesearch", "exec": "deny" }canvas modeshell, web, code search and exec off; the canvas’s cards instead

Your config is never written

MiMo merges the card’s file over your own config and project config. Yours are read, never changed.

No secrets in the file

The MCP token and the OpenRouter key are named as environment variables; only the card’s process has them.

The real binary

The card runs MiMo’s own mimo.exe directly — from the install script or from npm’s package, bypassing the npm shim.

FAQ

MiMo Code in NeuroSquad, answered

Give MiMo Code a canvas

Free for Windows and macOS. Your code, your models and your costs stay on your machine.

Windows 10 / 11 · macOS 12 or newer, Apple silicon and IntelAll 22 agent CLIs