Manual/Everyday work
Memory, notes and retro
moh keeps three different things across time, on purpose kept apart: a small memory of durable facts, your own notes, and the full conversation, summarised when it gets long. A fourth, the retro, looks back at how the work went and suggests improvements — only for you to approve.
Facts worth carrying forward — "tests run with bun test", "never edit the migrations by hand". Written by moh, read at the start of every conversation.
Your free text about the project, shared by every conversation in it. Written by you, with ctrl+n.
When one conversation grows too long, its older part is condensed so the work can continue. The full history is never deleted.
Observations about how the work went, turned into concrete suggestions for your project files. Nothing changes until you say so.
What moh remembers between conversations
After each exchange, a small helper running in the background picks out facts that seem durable — your conventions, decisions, preferences — and adds them to the project's memory. Next time, you don't repeat yourself. A discreet indicator appears when the memory changes.
Memory lives in ~/.moh/projects/<project>/memory/: plain text files you
can open and read. Facts are only ever added; when two disagree, the newer wins and keeps
a dated note.
Project notes
Press ctrl+n to open the notes editor: a scratchpad for the project — a to-do list, a reminder for tomorrow, a link you need. Every conversation in the project sees the same notes.
Long conversations
An AI can only hold a limited amount of text "in mind" at once — its context window. The gauge at the bottom of the screen shows how full it is. When a conversation passes about 80% of it, moh compacts automatically: it writes a faithful summary of the older part — the task, the decisions, the next steps — keeps the last ten exchanges word for word, and carries on.
- Type
/compactto do it yourself, now. - The summary is an addition to the file, not a replacement: the full history stays on disk forever.
- If a provider says "this is too long" with a smaller limit than expected, moh learns that number for the rest of the conversation and tells you once.
Retro: what to fix next time
When a conversation closes, moh quickly reads its log — with simple checks, no AI call, nothing sent anywhere — and notes what a careful reviewer would notice about your project's setup. For example:
- your project defines
lintandtestscripts, but nothing runs them automatically before a commit or in CI; - the same slow command was run four times in one session.
A second pass looks for advice about how to find your way around the code and which coding rules to write down; it runs only every ten conversations, never after each one.
- Notice. At the start of a session, one line tells you when new findings are waiting — at most once every two days.
- Review.
/retro(ormoh retroin the terminal) lists them, most confident first, with the evidence behind each. - Apply, or dismiss. a shows the exact change — a rule for
CODING_STANDARDS.md, a pointer inAGENTS.md— and writes it only after you confirm, as a new line under a## Retro findingsheading. Your existing text is never edited. A change that isn't text, like a hook or a CI job, is described for you to make. d dismisses a finding for good, and dismissing a kind of finding repeatedly makes moh stricter about proposing it.
Good to know
Retro findings never reach the AI's instructions on their own. To turn the whole thing
off, set "retro": { "enabled": false } in moh.json.
Written for moh 0.61. Inside moh, ctrl+h opens the built-in manual for your exact version.
