DOMD is a WYSIWYG editor built on a from-scratch, Markdown-native rendering engine.
- 20 KB gzipped kernel (zero runtime dependencies beyond React)
- Input and rendering happen in lockstep — cursor stays steady, no lag, no flicker
Download for Mac: Apple Silicon · Intel
Warning
v0.2.0 is out — improved editing experience (Enter / Tab / Delete bugs fixed) plus built-in auto-update (no more manual DMG re-downloads). Update now.
DOMD's WYSIWYG happens directly on Markdown.
Parsing, rendering, editing — engineered for Markdown WYSIWYG from the first line of code.
It is not built on top of ProseMirror, Slate, Lexical, or any general-purpose rich-text framework.
DOMD's edit model serves Markdown directly.
DOMD's kernel is a from-scratch Markdown WYSIWYG editor engine.
It is driven by a single source of truth — data — with immutable state. Typing, undo/redo, incremental streaming AI injection, and chunked file loading are all modeled as the same kind of state change inside the kernel.
This makes editing behavior deterministic, state always traceable, and rendering happens only where changes occur.
The entire editing stack fits in 20 KB gzipped.
2026-05-25.16.13.33_compressed.mp4
A 5 KB note and a 1 MB document open at virtually the same perceptual speed.
In Finder, press space — DOMD's own Quick Look extension takes over rendering.
The Mac experience is built to the bar of system apps. Loading a rendered .md feels close to the system opening a .txt.
The purest Markdown preview and editing — no project tree, no sidebar, no tabs, no sync, no account. Files stay on your device.
Download for macOS: Apple Silicon · Intel
Open the editor and start writing WYSIWYG in the browser — or drag a .md straight onto the page to edit it in place. Everything runs locally; files never leave your device.
To browse and edit local markdown files from the web editor, set LOCAL_MARKDOWN_DIR in config/server.ts to the folder you want to expose (default: /tmp/domd-local), then run npm run dev or npm run build && npm run start. Ensure the folder exists before starting the server.
If you access the dev server through a tunnel (for example, *.dev), Next.js blocks cross-origin requests to /_next/webpack-hmr by default. This repo uses next.config.ts (not next.config.js). Add your tunnel host to the existing allowedDevOrigins list (keep the other options), then restart the dev server:
// next.config.ts
const nextConfig = {
images: { unoptimized: true },
allowedDevOrigins: ["home3000.domd.app", "your-tunnel.example.dev"],
};The macOS build ships with a command-line tool domd-cli that lets agents drive the window directly.
It supports opening new windows, streaming writes, and rewriting selections. A model's streaming response can be piped straight into domd-cli insert — tokens land in the document as they arrive and render as rich text in real time.
The demo at the top of the page was recorded from an Alfred workflow that calls the GPT API and streams the response incrementally into the document.
Prerequisites
- Windows 10/11
- Node.js (LTS) with npm
- Git (optional, for cloning)
Steps
- Open PowerShell or Windows Terminal in the repo root.
- Install dependencies:
npm install
- Start the dev server:
Then open http://localhost:3000.
npm run dev
- Build and run production:
npm run build npm run start
- Optional lint:
npm run lint
npm run tauri devWindows native builds are not currently supported.
DOMD is dual-licensed.
Application layer & helper libraries — All source in this repository, including @do-md/utils and @do-md/zenith, is MIT licensed; see LICENSE. Free to read, modify, and self-host.
Core rendering engine — @do-md/dist is distributed as a build artifact only, under PolyForm Noncommercial 1.0.0. Any commercial use requires prior written authorization.