Native Markdown editor for macOS. SwiftUI + AppKit/TextKit, no Electron, no web views for editing — the markdown string is the single source of truth, and everything else is a view of it.
Website: dotmd.tools/editmd, part of the dotMD.tools family.
- Source — raw markdown with syntax highlighting, lint hints, and display-only table alignment that never touches the bytes.
- Visual — WYSIWYG attributed-text editing with synchronous, loss-free serialization back to markdown on every keystroke: tables, math, images, wiki-links, code blocks.
- Preview — offline HTML rendering (KaTeX math, highlight.js code, interactive task checkboxes, in-page find), plus a live split view with synced scrolling (⌥⌘P).
- Workspace sidebar — folders and standalone files, outline, git status and per-file history, tags, full-text search.
- Wiki-links —
[[link]]completion, backlinks, a persistent link index, vault lint (dead links, orphans), and a frontmatter properties panel. - Review marks — inline comment threads stored in a sidecar file, rendered in all modes.
- Agent integration — works as an IDE for Claude Code
over WebSocket/MCP (open files, follow the agent's edits, approve diffs), and
ships
editmdctl, a CLI that answers vault-graph queries (backlinks, search, outline, lint) even when the app is not running. - Also: PDF export, PDF/image viewer, smart paste (tables from Excel/Numbers, images, URLs), textbundle assets, English/Russian UI.
Requires macOS 14+, Xcode 26+ (Swift 6.2), and XcodeGen.
xcodegen generate --spec EditMD/project.yml
xcodebuild -project EditMD/EditMD.xcodeproj -scheme EditMD -destination 'platform=macOS' build
xcodebuild -project EditMD/EditMD.xcodeproj -scheme EditMD -destination 'platform=macOS' testEditMD/project.yml is the source of truth for the Xcode project — edit it and
regenerate rather than touching the .xcodeproj.
This is a personal project developed largely with AI agents. CLAUDE.md and
AGENTS.md are the agent working guides, and docs/ holds
domain documentation (architecture, vault, review, integration, testing)
written for humans and agents alike.
Bug reports and ideas are the contributions that help most: bugs go to Issues, ideas and questions to Discussions. CONTRIBUTING.md has the details, including the deliberately narrow pull-request policy.
MIT. Bundled third-party components (KaTeX, Open Sans, highlight.js via HighlighterSwift, and others) are listed in THIRD_PARTY_NOTICES.md.