MiMoCode: custom agent modes that lock after one message, file-based memory, and installers that pipe remote scripts
MiMo Code: Where Models and Agents Co-Evolve. MiMoCode also supports connecting to any mainstream LLM provider API.
At a glance
- What is it?
- MiMoCode is Xiaomi's terminal-native coding agent. One Tab key switches between build and plan, custom or special modes lock after the first message, memory is backed by SQLite FTS5 full-text search, and installation offers two one-line paths that pipe a fetched script straight into your shell.
- Who is it for?
- MiMoCode suits developers who want one agent that reads and writes code, runs commands, manages Git and carries project context between sessions, and who are willing to drive it from a supported terminal. It does not suit teams that need to change an agent's tool set mid-session, run it against the stock macOS terminal, or install it without piping a remote script into a shell.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on November 14, 2026, and from our analysis. They are not legal advice.
Star history
- XiaomiMiMo/MiMo-Code13,788 ★ · +1,269
| Repository | 2026-07-28 | 2026-11-14 |
|---|---|---|
| XiaomiMiMo/MiMo-Code | 12.5k | 13.8k |
1,269 Stars in the last 109 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
Tab cycles three agents, but the first message locks compose in place
Two primary agents sit behind one Tab key. build is the default and carries full tool permissions for development. plan is read-only analysis mode for code exploration and solution design, so anything it finds cannot be written back. Press Tab to switch between primary agents. Build and Plan can switch at any time; other custom or special modes lock once the first message is sent, so entering one of those modes is a commitment for the rest of the session.
Four files carry everything MiMoCode remembers, and the memory section never explains a deletion
Everything the agent remembers lives in four files, and retrieval runs over them through SQLite FTS5 full-text search. `MEMORY.md` holds persistent project knowledge, rules and architecture decisions. `checkpoint.md` is a structured state snapshot maintained automatically by the checkpoint-writer subagent rather than by you. `notes.md` is the temporary note area agents write into. `tasks/<id>/progress.md` keeps per-task logs. Memory is injected automatically when a session resumes, so the agent does not need to relearn project context, and automatic checkpoints decide when to save session state based on the model context window. What that design cannot tell you is how to take material back out. Check the documentation for how to inspect the SQLite store, prune entries, cap its size, or disable injection for one session; an architectural decision recorded once in `MEMORY.md` is otherwise re-injected on later sessions.
Three one-line installers, three different amounts of review before code runs
There are two documented one-line install paths, plus the installer scripts committed to the repository, and each gives you a different amount of review before code runs on your machine.
# One-line install (macOS / Linux)
curl -fsSL https://mimo.xiaomi.com/install | bash
# One-line install (Windows PowerShell)
powershell -ep Bypass -c "irm https://mimo.xiaomi.com/install.ps1 | iex"
# Run
mimoThe shell path pipes a fetched script directly into bash, with no version, no checksum and no step where you read what is about to execute. The Windows path raises the execution policy for that command and pipes a downloaded script into iex. The repository also contains `install`, `install.ps1`, `install-utf8.ps1` and `local-install.sh`, which means the script can be read before running it instead of trusted at runtime. Neither one-liner names a specific version or a checksum. Either way, the first launch then opens a configuration flow rather than writing a config file you can review in advance.
Terminal.app is not supported, and WSL clipboard needs a package you have to install yourself
On macOS, support for the terminal most people already use is ruled out by name: MiMoCode does not support the built-in macOS Terminal, Terminal.app. If the interface is misaligned, flickers or renders badly, the answer is to use iTerm2 or the VS Code integrated terminal instead, and the cask is one command away.
brew install --cask iterm2On WSL, a different class of failure has its own one-line answer. If copying produces garbled text, the fix is to install the X selection tool yourself.
sudo apt install xselBoth gaps belong to the host rather than to the model, and both are the kind no setting inside the agent can close. A Mac user on the preinstalled terminal has a degraded interface and a documented dead end, not a configuration to try. A Windows or Linux box with no equivalent terminal and no xsel available has the same class of problem with nothing described in its place. The practical consequence is that MiMoCode inherits its host terminal's limits, and the supported-environment list is short enough that you should check your own setup against it before you commit a team's tooling to it.
Remote work means mimo serve plus a hand-made port forward, not an SSH session
Running the TUI straight over SSH is the case the project tells you to route around. If it lags that way, render locally and run only the MiMoCode server on the remote host: start the server from the remote project directory, forward the port from your machine, then attach from a second local terminal.
# Remote host
mimo serve --port 4096
# Local host: create the SSH port forward
ssh -N -L 4096:127.0.0.1:4096 user@remote-host
# Local host: connect from another terminal
mimo attach http://127.0.0.1:4096Animation has its own switch: run `/vivid`, or configure Vivid visuals in the `ctrl+p` command palette, to move between Vivid and Minimal visuals when decoration is what is costing you frames. The cost of skipping all of this is a remote session that looks broken and gets blamed on the network or the model. The cost of following it is a long-running server bound to a port you picked, reachable only through a tunnel you set up by hand. Worth knowing before you set it up: the Quick Start does not mention an access token, a password or a TLS step for that server, so the SSH tunnel is the only protection described.
Windows CJK output ends at a system-wide Beta toggle the project calls a workaround
Windows is the one platform where the tool's own fix runs out. With a non-UTF-8 system locale, such as zh-CN whose active code page is 936/GBK, command output containing CJK characters can come back as mojibake. MiMoCode forces UTF-8 output for spawned PowerShell and cmd subprocesses, which covers a lot, and the wording is explicit that it does not cover everything: if garbled output persists in cases this does not yet handle, you are told to enable Windows' system-wide UTF-8 support through Settings, then Time & language, Language & region, Administrative language settings, Change system locale, tick the Beta option to use Unicode UTF-8 for worldwide language support, and reboot. The caveat comes with it: that switch is system-wide, it is flagged Beta, and it can make older non-Unicode programs display incorrectly, so it is to be treated as a workaround rather than a repair. That is the whole trade for a Windows user on a Chinese or Japanese locale. You change the code page for every program on the machine, to get readable CJK out of a CLI.
MIT licensing sits next to USE_RESTRICTIONS.md, and the root package is still named opencode
The repository is not archived, and the last push landed on 2026-11-02. Recent tags include v0.1.16 on 2026-10-26, v0.1.15 on 2026-09-22 and v0.1.14 on 2026-09-23, so the higher version number carries the earlier date and you cannot order releases by timestamp alone. Licensing is not a single file: an MIT LICENSE sits beside USE_RESTRICTIONS.md, and SECURITY.md, CONTRIBUTING.md, AGENTS.md and a .agents/ directory are all present, so read both text files before assuming MIT covers the whole repository. The build layout has its own oddity. The root package.json is marked private, is still named opencode, describes itself as AI-powered development tool, declares [email protected] as its package manager, and organizes a packages/* workspace with dev, build:local, lint via oxlint, typecheck and test scripts. Under that sits a catalog heavy on beta builds, including effect 4.0.0-beta.48, @opentui/core 0.1.101 and drizzle-orm 1.0.0-beta.19-d95b7a4. For an evaluator, the signal is that this is a 0.1.x project assembled on pre-1.0 dependencies.
Editorial conclusion
MiMoCode suits developers who want one agent that reads and writes code, runs commands, manages Git and carries project context between sessions, and who are willing to drive it from a supported terminal. It does not suit teams that need to change an agent's tool set mid-session, run it against the stock macOS terminal, or install it without piping a remote script into a shell. Before adopting it, check the MIT LICENSE against the separate USE_RESTRICTIONS.md, read the release dates rather than the version numbers, and read the committed installer scripts first if install auditing matters to you.
Frequently asked questions
How do I install MiMo Code?
On macOS or Linux run `curl -fsSL https://mimo.xiaomi.com/install | bash`, on Windows PowerShell run `powershell -ep Bypass -c "irm https://mimo.xiaomi.com/install.ps1 | iex"`. Then start it with `mimo`, and the first launch walks through configuration.
what is mimo code
MiMoCode is a terminal-native AI coding assistant that can read and write code, run commands, manage Git, and use a persistent memory system to keep understanding of your project across sessions.
is mimo code open source
The repository carries an MIT LICENSE, and a separate USE_RESTRICTIONS.md file sits next to it, so the two need to be read together rather than treating MIT as the whole story.
is mimo code safe
The repository ships SECURITY.md and USE_RESTRICTIONS.md. The documented macOS and Linux installer pipes a remote script into bash and the Windows installer pipes one into iex with execution policy bypass, while the installer scripts are also committed to the repository for reading first.
mimo code vs opencode
The MiMo-Code repository's own root package.json is named opencode, is marked private, carries the description AI-powered development tool, and declares [email protected] as its package manager over a packages/* workspace.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/xiaomimimo-mimo-code)Star history chart for your README
[](https://hysenlabs.com/projects/xiaomimimo-mimo-code)Was this useful?