moh · user manual
The friendly manual.
Everything you need to use moh day to day — written for people, not for engineers. No prior knowledge assumed: if a word is technical, we explain it the first time it appears.
1 · Welcome to moh
moh is a helper that lives inside your computer's terminal — the window where you type commands instead of clicking buttons. You talk to it in ordinary language ("fix this bug", "write a README", "clean up these files"), and it does the work: it reads your project, edits files and runs commands, showing you every step.
Three ideas are behind everything moh does:
- It asks before it acts. Anything sensitive — changing a file, running a command — needs your approval first. You can say yes once, yes always, edit the action, or no.
- Your data stays on your machine. Your conversations and notes are stored in a folder on your own computer. Nothing is sent anywhere except to the AI provider you personally choose.
- You pick the brain. moh is not tied to one company. You connect the AI provider you prefer — or several, so that if one is unavailable, another steps in automatically.
moh is free, open source (MIT licence) and comes as a single file you download and run. There is no account to create and nothing to subscribe to.
2 · Installing and opening moh
moh works on Mac and Linux, and on Windows through WSL (a built-in Windows feature that runs Linux tools — the installer handles it for you).
Open the Terminal app and paste this one line, then press enter:
That's the whole installation. moh is one self-contained file: it does not need Node, Bun, npm or any other developer tool installed first.
Opening it
The very first run needs nothing at all — no accounts, no keys, no setup. moh starts in practice mode with a pretend AI, so you can look around safely. Nothing you do in this mode can touch a real AI service.
3 · Your first conversation
After opening moh, just type what you want in plain words and press enter. For example:
moh reads the files it needs, works on your request and reports what it did. While it works you are never a spectator:
- Type anything to add an instruction — moh reads it mid-task and adjusts course.
- Press esc esc to stop it outright.
- Press ? to see every available key at any moment.
When moh needs to change a file or run a command, it pauses and asks you. Your choices: y (yes, this once), a (always, for this session), e (edit what it proposed), n (no).
4 · Choosing a model
A model is the AI that does the thinking. To use a real one, run moh's guided setup:
It asks one simple question first: do you have an API key (a secret code from a provider's website) or a subscription such as Claude Pro/Max, ChatGPT Plus/Pro, or a personal Google account? If it's a subscription, moh opens your browser to log in — no key to copy, and your existing plan is what gets used.
Many providers are built in
Anthropic, OpenAI, Google, GitHub Copilot, OpenRouter, Kimi, xAI, DeepSeek,
Groq, Mistral, Qwen, Z.ai and more — plus local programs like Ollama and LM
Studio that run AI on your own computer. You can connect several and switch
between them any time with ctrl+m (or the
/model command). The change applies from your next message.
The safety net you don't manage
If you connect more than one provider, moh builds an automatic fallback chain: if the current AI is unavailable (out of quota, overloaded, offline), your request is retried on the next one on your list — and the transcript clearly says so. A question never dies silently.
5 · moh asks before it acts
This is moh's defining feature. Every sensitive step passes a gate, and you hold the keys:
- File changes inside your project can be pre-approved with rules; anything unclear asks first.
- Writes outside your project are asked every single time — they can never be pre-approved, not even accidentally.
- Commands (things like "run the tests") are shown in full before they run.
You can write standing rules, in plain patterns: "always allow
git status", "never touch secrets/**". Rules can
live in your project's moh.json file, or be created on the fly
by answering a (always) at a prompt.
Three caution levels
Press shift+tab to rotate between Normal (asks for every non-approved action), Auto-accept (stops asking for routine actions, still asks for anything outside the project) and YOLO (no questions — only for throwaway work you don't care about). The current level is always named at the bottom of the screen, and the choice lasts only for the current session.
6 · Your conversations are saved
Every conversation is a session, and every session is kept as a file on your machine. Close the laptop mid-task, come back tomorrow: nothing is lost.
- Resume — the home screen (what you see when you open moh) lists your recent conversations. Pick one and continue where you left off, memory intact.
- Rename — give a conversation a name you'll recognise later (ctrl+r).
- Pin — keep your favourite conversations at the top of the list (ctrl+p).
- Fork — create a copy of a conversation to try a "what if" without touching the original. Great for comparing two approaches.
- Trash, not oblivion — deleting a session keeps it recoverable for 30 days before it is really removed.
- Move between machines — the optional "handoff" feature carries a running task from, say, your laptop to your desktop in one guided step.
One more trick: a session is a tree, not a single line. If
you rewind and try a different direction, both paths are kept — and
/tree shows you the map so you can jump between them.
7 · Memory and long conversations
What moh remembers between sessions
moh keeps a small, separate project memory: durable facts worth carrying forward — your conventions, decisions, preferences. After a conversation, it quietly extracts what seems durable and saves it. Next time, you don't repeat yourself. It's stored in a folder on your machine where you can read it.
What happens when a conversation gets long
AI models can only "hold in mind" a limited amount of text. When a
conversation approaches that limit, moh compacts
automatically: it writes a faithful summary of the earlier parts — the task,
the decisions, the next steps — and continues from there. Your full history
is never deleted; the summary is an addition, not a replacement. You can
also trigger it yourself with /compact.
8 · Sharing files and images
Type @ in a conversation and a small search box appears: start
typing a file's name, pick it, and it rides along with your message. You can
mention whole folders the same way — moh will see what's inside.
Images work too: mention an image file and, if the model you're using understands pictures, moh passes it along (terminals that support it even show a preview). If the model can't take images, moh tells you so instead of quietly dropping it.
9 · Extra abilities: skills and tools
Skills
A skill is a packaged recipe for a kind of job — "review
this code", "plan this feature", "diagnose this bug". moh ships with a set
of them, and they appear as easy commands like /implement or
/code-review. You can write your own, too. Turn the whole set
on with /workflow on; turn it off and moh behaves exactly as
before.
Asking moh about moh
Not sure how to do something? Ask /ask-moh in plain language —
"how do I rename a session?" — and it answers from this very manual, telling
you which section it used.
MCP: plugging in outside tools
MCP is a standard way to give the AI extra tools — for example, access to your issue tracker. Tools added this way follow the same permission rules as everything else, and they ask on first use. If a project suggests new tools, moh asks whether you trust them before anything runs — a cloned project can never switch tools on by itself.
Helping hands: subagents
For bigger jobs, moh can delegate focused pieces of work to small helper agents that run alongside the main one — and they can only use permissions you already granted. Their progress is shown as little chips you can click to watch.
10 · Keys and commands worth knowing
You only need a handful of these to be productive. Press ? inside moh for the complete, always-current list.
| Key | What it does |
|---|---|
| enter | Send your message |
| esc esc | Stop the current task |
| ctrl+m | Switch AI model |
| shift+tab | Rotate caution level (Normal / Auto-accept / YOLO) |
| y / a / e / n | At a permission prompt: yes / always / edit / no |
| ctrl+r | Rename the current conversation |
| ctrl+t | Change the colour theme |
| ctrl+q | See your usage (how much AI you've consumed) |
| ctrl+h | Open the built-in manual |
| @ | Attach a file or folder to your message |
| ? | Show every available key |
And a few commands to type (press / to see them all):
| Command | What it does |
|---|---|
/model | Pick a different AI |
/compact | Summarise the conversation now, free up room |
/tree | See the conversation's branch map |
/copy | Copy moh's last reply to the clipboard |
/workflow on | Enable the bundled skills |
/ask-moh | Ask a question about moh itself |
11 · Where your data lives
Everything moh keeps is in one folder in your home directory,
~/.moh/ — plain files you can open, back up or move:
- Conversations — one file per session, written like a diary: things are added, never rewritten in place.
- Project memory — the durable facts, in their own subfolder.
- Your settings and login tokens — in
~/.moh/config. Login tokens never end up inside a project's files.
The only network traffic moh makes is the traffic you would expect: talking to the AI providers you configured, and an optional check for new versions (which never installs anything without your explicit yes, and can be turned off). There is no telemetry and no analytics.
12 · When something goes wrong
- "The AI didn't reply." moh treats an empty answer as a failure, not as success: it retries on your fallback provider if you have one, or shows a clear error naming what failed. Try again, or switch model with
/model. - "It's going in a direction I don't like." Just type — your message redirects it. Or esc esc to stop, then rephrase.
- "I closed the terminal by accident." Reopen moh, pick the session from the list, continue.
- "I deleted a session I needed." Run
moh trash listandmoh trash restorefrom the terminal within 30 days. - "It feels slow." On Windows/WSL, keep your projects inside the Linux side (for example
~/projects), not on a mounted Windows drive — moh will warn you if you don't. Otherwise, try a different model.
Still stuck? Ask /ask-moh inside moh, press ctrl+h
for the built-in manual, or open an issue on
GitHub —
the project is open source, and feedback is genuinely welcome.
