moh

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:

# install moh (one line, nothing else needed) curl -fsSL https://raw.githubusercontent.com/Marco-Cricchio/moh/main/scripts/install.sh | sh

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

$ moh

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.

What's a "provider"? It's the company whose AI moh talks to — Anthropic, OpenAI, Google and many others. Connecting one is step 3 below. Until then, moh is a safe playground.

3 · Your first conversation

After opening moh, just type what you want in plain words and press enter. For example:

› look at this project and explain to me what it does

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).

New to the terminal? That's fine. The only skills moh asks of you are typing and pressing enter. Everything else — commands, keys, files — is explained by moh itself as you go.

4 · Choosing a model

A model is the AI that does the thinking. To use a real one, run moh's guided setup:

$ moh provider add

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.

Rule of thumb: stay in Normal while you're learning. The prompts are not friction — they are the product. Reading what moh is about to do is how you learn what it does.

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.

Nothing is hidden. If a mentioned file is missing, too large, or blocked by a permission rule, moh shows a visible warning. You always know what the AI actually received.

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.

KeyWhat it does
enterSend your message
esc escStop the current task
ctrl+mSwitch AI model
shift+tabRotate caution level (Normal / Auto-accept / YOLO)
y / a / e / nAt a permission prompt: yes / always / edit / no
ctrl+rRename the current conversation
ctrl+tChange the colour theme
ctrl+qSee your usage (how much AI you've consumed)
ctrl+hOpen 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):

CommandWhat it does
/modelPick a different AI
/compactSummarise the conversation now, free up room
/treeSee the conversation's branch map
/copyCopy moh's last reply to the clipboard
/workflow onEnable the bundled skills
/ask-mohAsk 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.

Deleting really means deleting — eventually. Removed sessions rest in a local trash for 30 days, then are gone for good. Nothing about your usage is stored anywhere but your machine.

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 list and moh trash restore from 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.

↑ Back to top