brew tap xronocode/mark && brew install --cask mark@alphaNo Gatekeeper prompts. No sudo xattr dance. Build from source →
⚠️ Alpha — daily-driver quality for writing on Apple Silicon, but it has known gaps.
What works has 2620 tests and CI. What doesn't is tracked openly.
You run Claude Code. Or Aider. Or Codex. Or your own agents.
They generate beautiful Markdown — plans, specs, reports, Mermaid diagrams, LaTeX math, comparison tables. Then you try to actually read it:
Terminal — tables collapse, diagrams vanish, colors don't exist.
VS Code / Obsidian — 300 MB of RAM before you open a single file. You already have LLMs eating 8–16 GB.
Export to HTML — burns tokens, triples prompt size, needs a browser tab per file.
Sound familiar? That's Markdown fatigue. Everyone building with AI agents in 2026 feels it.
Mark fixes it. 11 megabytes. Opens in under a second. Renders everything. Gets out of your way.
You Mark Your agent
│ │ │
│ "open plan.md" │ │
│ ──────────────────────────▶│ │
│ │ tables, mermaid, math │
│ │ rendered live, inline │
│ read ← ── ── ── ── ── ──│ │
│ │ │
│ edit directly in Mark │ │
│ ──────────────────────────▶│ │
│ │──── file saved ────────────▶│
│ │ │
│ │◀─── agent updates file ─────│
│ │ live reload, no refresh │
│ see changes instantly ◀──│ │
│ │ │
One window. No browser. No context switch. The human-in-the-loop just works.
Add this to your agent's system prompt, CLAUDE.md, .aider.conf.yml, or whatever config your agent reads:
When you produce a plan, spec, report, or any document longer than ~50 lines,
write it to a .md file and open it in the user's editor:
open -a Mark <file>.md # macOS
The user will read and edit directly in Mark (a lightweight WYSIWYG Markdown
editor with live file-watcher reload). When you see the file has changed on
disk, read the updated version — the user left feedback or corrections inline.
Treat the diff as your next instruction.That's it. Your agent writes → Mark renders → you edit → the agent picks up the diff.
Use case: review a plan before the agent executes
You: "Write an implementation plan for the new auth module."
Agent writes plan.md, runs `open -a Mark plan.md`.
You see a beautifully rendered doc with Mermaid diagrams and tables.
You delete step 3, rewrite step 5, add a note: "— use JWT, not sessions".
Save.
Agent detects the change:
"I see you removed step 3 and updated step 5 to use JWT. Proceeding with
the revised plan."
Use case: structured feedback on a report
You: "Analyze our API latency data and give me a report."
Agent writes report.md with tables, charts, and recommendations.
Opens in Mark — you see everything rendered inline.
You add a line at the bottom:
"— Good analysis. But ignore the /health endpoint, it skews the p99.
Re-run without it."
Agent reads the update, re-runs the analysis, appends the new results
to the same file. Mark live-reloads. You see the diff without switching
windows.
Use case: knowledge base your agent maintains
Add to your agent config:
Maintain a living knowledge base in docs/kb.md.
After each significant decision, append a dated entry.
The user may reorganize or annotate entries in Mark —
respect their edits as authoritative.
Open docs/kb.md in Mark once. Leave it open.
Every time the agent appends, Mark live-reloads.
You curate, the agent accumulates. One file, two authors.
Use case: spec review with Mermaid diagrams
You: "Design the data flow for the new ingestion pipeline."
Agent writes spec.md:
## Data Flow
```mermaid
graph LR
A[S3 Upload] --> B[Lambda Trigger]
B --> C{Validate}
C -->|pass| D[Transform]
C -->|fail| E[Dead Letter Queue]
D --> F[Write to Postgres]
```
In the terminal this is raw text. In Mark it's a rendered diagram.
You drag the DLQ branch, add a retry step, save.
The agent sees your edit and adjusts the implementation.
| Mark | Mark Text | Typora | Obsidian | iA Writer | |
|---|---|---|---|---|---|
| App size | 11 MB | 200 MB | 100 MB | 300 MB | 30 MB |
| RAM at idle | 61 MB | 400 MB | 200 MB | 250 MB | 50 MB |
| True inline WYSIWYG | Yes | Yes | Yes | No | Partial |
| Mermaid + KaTeX + Vega | All three | Yes | Partial | Plugins | No |
| Live file-watcher reload | Yes | No | No | Yes | No |
| Themes | 33 | 6 | CSS | CSS | 3 |
| Open source | MIT | MIT | No | No | No |
| Price | Free | Free | $15 | $50/yr | $50 |
| Native macOS | WKWebView | Chromium | Chromium | Chromium | AppKit |
No Chromium. No Node.js. No Electron. Just your system WebView doing what it was designed to do.
The 2025–2026 wave brought a crop of tools built specifically for AI-agent workflows. Here's how Mark compares:
| Tool | What it is | Where Mark differs |
|---|---|---|
| glow / mdcat | Terminal-based MD renderers | No images, no Mermaid, no editing. Great for quick glances — not for 200-line specs with diagrams. |
| leaf | Rust TUI viewer with watch mode | Still a terminal. No inline WYSIWYG, no rich rendering. |
| Ferrite | Rust + egui editor | Split-view, not inline WYSIWYG. Different UX paradigm. |
| Marky | Tauri CLI viewer (marky plan.md) |
Viewer only, no editing. Mark does both. |
| Ritemark | MD editor + built-in terminal | Electron-based, heavier footprint. |
| Obsidian | Knowledge base with plugins | 300 MB, plugin ecosystem needed for basics. Overkill for reading agent output. |
Mark sits in a specific gap: native + lightweight + full WYSIWYG + file-watcher + edit-in-place. If you need a vault or a second brain, use Obsidian. If you need to read and edit what your agents write without burning RAM — that's Mark.
This project is its own proof of concept.
The entire Tauri rewrite — 30+ Rust modules, 2620 tests, typed IPC, native menu, spellchecker, auto-updater — was architected and shipped by one developer with AI agents using the GRACE methodology (Graph-RAG Anchored Code Engineering).
Structured plans. Module contracts. Knowledge graphs. Agents executing against verifiable specs.
One person. AI agents. A native desktop app that rivals what teams of five ship.
Mark is the tool that was missing from the workflow that built it.
The essentials — true inline WYSIWYG (muya engine), multi-tab editing, folder sidebar, find in file & folder
The rendering — Mermaid v11 diagrams, KaTeX math, Vega charts — all inline, no preview pane
The native feel — system WKWebView, macOS menu bar, NSSpellChecker, real Cmd+shortcuts, ad-hoc code signing
The agent workflow — file-watcher live reload, dirty-tab protection (Save/Discard/Cancel), preview mode on Finder open
The trust — no telemetry, no cloud, no account, no plugin marketplace. Files are files. 2620 tests. MIT licensed.
Daily-driver quality for routine Markdown on Apple Silicon.
Editing
| Feature | Status |
|---|---|
| True inline WYSIWYG (muya engine) | ✅ |
| Multi-tab editing | ✅ |
| Open Folder + sidebar file tree | ✅ |
| Mermaid v11 / KaTeX / Vega inline rendering | ✅ |
| Find in file (Cmd+F) | 🔶 Beta |
| Find in folder (in-process ripgrep) | 🔶 Beta |
| Search context lines + include/exclude globs | Planned |
File handling
| Feature | Status |
|---|---|
| Save / Save As / Open | ✅ |
| Dirty-tab close prompt (Save / Discard / Cancel) | ✅ |
| External-edit live reload (file-watcher) | ✅ |
| Auto-detect file encoding (UTF-8, windows-1251, Shift_JIS, …) | ✅ |
| v1 preferences migration (5-store, idempotent) | ✅ |
| Recent documents | ✅ |
| Preserve source encoding on save | Planned |
| Manual encoding picker | Planned |
| File move / rename commands | Planned |
Appearance & UX
| Feature | Status |
|---|---|
| 33 themes + custom CSS | ✅ |
| Live theme sync across windows | ✅ |
| Preview mode on Finder double-click | ✅ |
Set as default .md handler |
✅ |
| System font enumeration | ✅ |
| Monospace font filter for code editor | Planned |
Native macOS
| Feature | Status |
|---|---|
| System WKWebView (no Chromium) | ✅ |
| Native menu bar + Cmd+shortcuts | ✅ |
| Spell-check via NSSpellChecker | ✅ |
| Screenshot capture (macOS screencapture) | ✅ |
| Ad-hoc code signing (no Developer account) | ✅ |
| Global shortcuts (Cmd+Shift+M show window) | 🔶 In progress |
| Auto-update via Homebrew cask (ed25519 signed) | ✅ |
CLI & integration
| Feature | Status |
|---|---|
| CLI flags (--safe-mode, --debug, --new-window) | ✅ |
open -a Mark file.md from terminal / agents |
✅ |
| Pandoc export (HTML, PDF) | ✅ Requires Pandoc |
| Pandoc progress indicator | Planned |
| Image upload (PicGo, smms, aliyun) | Planned |
Platform
| Feature | Status |
|---|---|
| macOS Apple Silicon | ✅ |
| macOS Intel | Untested |
| Linux | Planned |
| Windows | Planned |
| Multi-window support | Planned |
Alpha is alpha. What works has 2620 tests and CI. What doesn't is tracked openly with a target milestone.
One command:
brew tap xronocode/mark && brew install --cask mark@alphaGatekeeper handled automatically. No sudo xattr dance. No $99/year Apple Developer account.
Electron stable channel (frozen at v1.2.3, security fixes only)
brew tap xronocode/mark && brew install --cask markBoth casks coexist. When v2.0 stable ships, mark rolls forward to Tauri.
Build from source
Rust 1.79+ · Node 20 LTS · Xcode CLI Tools
git clone https://github.com/xronocode/mark.git && cd mark/reborn-mark
npm ci
npm run tauri dev # hot-reload
npm run tauri build # releasenpm test # 374 renderer tests
cd src-tauri && cargo test --bin mark # 418 Rust tests
npm run test:e2e # PlaywrightMark wouldn't exist without the people who built the foundation:
- @Jocs — creator of Mark Text (54k+ ⭐). The muya WYSIWYG engine, the theme system, and the entire UX paradigm that makes inline Markdown editing feel right. Everything Mark does starts with his work.
- @Tkaixiang — maintainer of the community fork that kept Mark Text alive with critical security fixes (CVE-2023-2318), crash fixes, and the Mermaid v11 upgrade. Mark's Electron stable channel is downstream of his fork.
- The Mark Text community — 54,000+ stargazers, hundreds of contributors, and years of issues and PRs that shaped what a good Markdown editor should be.
- The Tauri team — for building a framework that makes 11 MB native apps possible without Chromium.
Mark is what Mark Text looks like without Electron, without the bloat, and with an AI-agent workflow in mind. We stand on the shoulders of giants — and we say thank you.
PRs welcome. Fork → branch from main → run tests → open a PR. CI gates merge on macOS + Linux. For larger changes, open an issue first.