Skip to content

xronocode/mark

Repository files navigation


Mark

Your AI agents write Markdown. Finally, an editor that does it justice.


TestsStatusPlatformSizeRAMLicense


Mark — themes, code highlighting, Mermaid diagrams, KaTeX math, tables

Install (macOS Apple Silicon)

brew tap xronocode/mark && brew install --cask mark@alpha

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


How it feels

  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.


Set up your agent in 30 seconds

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.

11 MB. Not 200 MB.

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.


But what about the AI-native tools?

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.


Built by AI agents. For AI agents.

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.


What's inside

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.


Status — v2.0.0-alpha.8

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.


Install

One command:

brew tap xronocode/mark && brew install --cask mark@alpha

Gatekeeper 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 mark

Both 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     # release
npm test                                    # 374 renderer tests
cd src-tauri && cargo test --bin mark       # 418 Rust tests
npm run test:e2e                            # Playwright

Acknowledgements

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


Contributing

PRs welcome. Fork → branch from main → run tests → open a PR. CI gates merge on macOS + Linux. For larger changes, open an issue first.


Mark is built on personal time.

If it saves you from reading agent specs in raw terminal — or from yet another 400 MB Electron install:


Buy Me a Coffee at ko-fi.com



Star the repo · File issues · Send a PR


MIT · @xronocode