Native macOS app

A Markdown reader for Mac. For reviewing the plans and reports your AI agents write.

Claude Code, Codex, and other agents write their plans, designs, and analyses to .md files. MoonMark shows them with an outline on the left, a readable text column, and formatted tables, code, and diagrams. When an agent rewrites the file, MoonMark reloads it and keeps your reading position.

Download for Mac Try a sample document

7-day free trialApple siliconmacOS 26 or later

migration-plan.mdwritten by an agent

Session store migration: Redis → Postgres

Generated by Claude Code · 2026-09-28 · Awaiting review

Background

Session data lives in a single Redis instance with persistence turned off. Two restarts last week each dropped about 40,000 logins. This plan moves sessions to the existing Postgres cluster and keeps Redis as a read cache.

Options

OptionDurabilityRead P95Effort
A: Enable Redis AOFPer second0.8 msSmall
B: Move to PostgresPer transaction2.4 msMedium
C: B + Redis read cachePer transaction0.9 msMedium

Recommendation: C — the same durability as B, with read latency close to current levels.

Steps

  • Create the sessions table with an index on user_id
  • Dual-write: new sessions go to both Redis and Postgres
  • Backfill existing sessions (about 1.2 million rows)
  • Switch reads to Postgres; Redis becomes a cache
  • Monitor for 7 days, then drop the dependency on Redis persistence

Data flow

read miss write Client API Redis cache Postgres

Backfill script

-- Backfill unexpired sessions only
INSERT INTO sessions (id, user_id, data, expires_at)
SELECT id, user_id, data, expires_at
FROM staging_sessions
WHERE expires_at > now()
ON CONFLICT (id) DO NOTHING;

Risks

Warning

If dual writes conflict during the backfill, Postgres wins. Freeze changes to the session schema before the backfill starts.

Rollback

Reads are controlled by the SESSION_READ_FROM_PG flag. Turn it off to fall back to Redis. No redeploy needed.

LIGHT
DARK

Pick a theme. Click a heading in the outline to jump to it. Click </> to see the Markdown source of this sample.

##

Easy to read

In raw Markdown, a table is rows of pipe characters and a diagram is a block of code. MoonMark shows them formatted.

Outline
Headings become an outline. The section you are reading is highlighted. In a long plan, one click takes you to Risks or Rollback.
⌃⌘S
Readable line length
Text stays at a readable width, even on a large display. You can choose from three widths. Wide tables and diagrams can extend into the margins. Long lines of code scroll inside the code block.
3 widths
Six themes
Three light themes and three dark themes. The outline, text, code, tables, and diagrams change color together. MoonMark follows the light or dark appearance of your Mac.
3 + 3
Fonts and size
Sans-serif by default. You can use any installed font for text and for code. The size goes from 13 to 24, and you can set the weight. MoonMark adds a space between Chinese and English text.
⌘+⌘−
Diagrams, math, and code
MoonMark renders Mermaid diagrams. For each diagram, you can zoom in, copy its source, or show the source. KaTeX math and syntax highlighting render on your Mac without a network connection.
Mermaid · KaTeX

##

Keeps your place

Agents often rewrite a file while you are reading it.

Reloads when the file changes

By default, when the file changes on disk, MoonMark reloads it. You stay at the paragraph you were reading.

After a reload, you are still at the same paragraph.

##

More details

Tabs
Open several documents as tabs in one window. A link to another .md or .markdown file opens in a new tab.
⌘O
Large files
A very large or very complex file opens in a simpler view, so the app stays responsive.
Renders on your Mac
Documents render on your Mac. You do not need an account. Scripts in a document do not run. Images from the web load over the network.

##

Not included

Other tools do these well.

MoonMark is for reading Markdown.

##

Which tool to use

Each of these is good at its own job. Choose based on what you do with the file.

Typora
You write in Markdown and want the formatting to show as you type, with the Markdown symbols hidden.
Editor
Marked
You write in another editor and want a live preview beside it, plus export to PDF, HTML, or DOCX.
Preview · Export
Quick Look extension
You only want a quick look at a rendered file in Finder. Press Space, read, close. No editing.
Finder
VS Code
The project is already open in VS Code. Its built-in preview (⇧⌘V) also renders math.
Code editor
MoonMark
You read long plans and reports that agents write and rewrite. You want an outline, a readable page, and your place kept when the file changes.
Reader

##

Specs

System
macOS 26 or later on a Mac with Apple silicon
Interface
Native macOS windows, menus, and shortcuts
Files
.md .markdown
Syntax
CommonMark, GFM tables and task lists, footnotes, front matter, callouts, Mermaid, KaTeX
Accessibility
Reduce Motion, Increase Contrast
Price
US$9.99, one-time purchase
Trial
7 days, all features
License
Up to 3 Macs per license
Account
Not needed

##

Questions

Is MoonMark a reader or an editor?
A reader. To change a file, use your editor or let your agent rewrite it. MoonMark then reloads it.
Does it open files from Claude Code and Codex?
Yes. MoonMark opens .md and .markdown files from any tool. By default, when the file changes, MoonMark reloads it and keeps your place.
Which Mac do I need?
A Mac with Apple silicon and macOS 26 or later.
Do I need an account or an internet connection?
You do not need an account. Rendering works without a connection, including Mermaid diagrams and KaTeX math. You need a connection to activate a license and to load images from the web.
What does it cost?
US$9.99, a one-time purchase. You can try every feature free for 7 days first. One license works on up to 3 of your Macs. You can request a full refund within 14 days of purchase.
MoonMark icon

MoonMark

Try every feature free for 7 days.

One-time purchase. One license works on up to 3 Macs.
Requires macOS 26 or later on a Mac with Apple silicon.