Launching today

MuM
A reading-first Markdown engine for macOS
45 followers
A reading-first Markdown engine for macOS
45 followers
Your Markdown lives in a dozen folders. Most of the time you don't want to write — you just want to read one section. Every Markdown tool is a writing app with a preview pane. MuM is the opposite: a native macOS reader with no web engine inside — all AppKit. Several projects open at once, each remembering where you stopped. Cross-project search. Typesetting tuned for CJK as well as Latin. ~0.3s cold start, 1.7 MB download, 100+ fps scrolling a 5 MB document. Open source, MIT.
Products used by MuM
Explore the tech stack and tools that power MuM. See what products MuM uses for development, design, marketing, analytics, and more.
Productivity 1
Productivity 1

KimiYour AI assistant for everyday use
5.0 (11 reviews)
Kimi Code wrote most of MuM: 200+ commits across a native AppKit renderer, the
reading themes, the CLI, and the release pipeline (signing + notarization). What
surprised me is how well it holds a long constraint — "CJK typography must not
regress" survived ten versions because it kept re-reading the spec instead of
trusting its memory.
LLMs 1
LLMs 1

DeepSeekOpen-source LLM optimized for advanced reasoning and code
4.9 (53 reviews)
MuM's product definition, acceptance criteria and release gating ran in the DeepSeek
Harness. Practically: it wrote the version specs, refused to ship when an acceptance
line was red, and — the part I value most — kept every number traceable. When the
marketing copy claimed a cold start we couldn't reproduce, it killed the number
instead of defending it.
Engineering & Development 1
Engineering & Development 1

Claude CodeAnthropic’s deep-context AI coder
5.0 (727 reviews)
We used Claude Code as MuM's independent tester and auditor — deliberately never
as the implementer. It read every diff, ran the acceptance script, and root-caused
a hang I'd been chasing for days: a synchronous LaunchServices XPC call on the main
thread. Two samples five minutes apart landed on the identical stack while lsd sat
idle. That finding turned into a fix across 13 call sites. Having a second agent
that isn't allowed to write the code is the single best quality decision we made.