A desktop app with a live reader on the left and a real WYSIWYG Markdown editor on the right — and AI that turns what you're reading into a first draft.
Read a paper, a GitHub repo, a PDF, or an EPUB. Snip a region straight into your notes. Polish, translate, or generate long-form drafts — using the AI subscription you already pay for.
MIT-licensed · Built with Electron, React, Milkdown & CodeMirror
Reading a paper to write about it, turning a tutorial into notes, browsing a repo to draft a post — that work fits neither a browser tab nor a notes app.
You screenshot, alt-tab, paste, repeat. Nothing remembers what you were reading, and your draft lives somewhere else entirely.
Obsidian, Notion, Bear… the source material is in another window. Pasting a URL is a sad substitute for having it next to what you're writing.
A live reader on the left, an editor on the right, a snip tool that drops region screenshots straight into your doc as a relative-path image — and AI that can read what's in the reader and draft something for you on the right.
Multi-tab, four kinds of source, all in one pane:
Hit ⇧⌘S (or Ctrl+Shift+S), drag a rectangle, and the cropped
PNG is saved to the doc's images/ folder and inserted as a relative-path
Markdown reference. Native capture — instant, no external tool.
Milkdown 7 with GFM, history, and slash commands — one click to a CodeMirror source view sharing the same buffer. Paste any image and it auto-saves locally. Autosave keeps references relative, so moving a folder never breaks anything.
Each document is its own subfolder with its .md and an
images/ directory. Switch workspaces from the title bar — each remembers
its own open tabs, recent items, and last document. iCloud-friendly default path on
macOS.
One-click copy to WeChat 公众号 with per-element inline styles and base64-embedded images (three themes), direct publish to a WeChat draft, or copy as inlined HTML for email and Notion.
Your files stay plain Markdown on disk. API keys and the WeChat secret are encrypted
with the OS keychain (Electron safeStorage), never in plaintext. AI text
goes only to the endpoint you configure.
Short edits go over an API. Long-form drafts run through the AI CLI you already have installed — using the seat you already pay for.
Short, in-place edits over any OpenAI-compatible endpoint — OpenAI, Anthropic, Google, DeepSeek, Moonshot, Azure, local Ollama. Every change opens a Cursor-style diff: Accept / Reject / Regenerate. Nothing touches your text until you say so.
Reads the active reader tab, then asks your local Claude Code / Codex / Gemini / OpenCode CLI to draft a Markdown artifact — no extra API key, no extra subscription. Pick a writing style × template, watch it stream in, route to a new doc / append / replace.
The CLI runs in a no-tools / sandboxed mode, so prompt-injected reader content can't trick the model into reading your local files.
Download a build for your platform below, or run from source with
pnpm install && pnpm dev (Node ≥ 20, pnpm ≥ 9).
Any folder works. On macOS the default lives under iCloud Drive so your notes sync across devices automatically.
Press the + in the reader tab bar and paste a URL, a GitHub
owner/repo shorthand, or open a local PDF / EPUB / code folder.
If you have one of these installed and authenticated, ReadWrite can use it for long-form generation — no extra key needed:
# check what you already have which claude # Anthropic Claude Code (recommended) which codex # OpenAI Codex which gemini # Google Gemini CLI which opencode # opencode.ai # then in-app: Settings → AI → External AI CLI → Detect CLI
Snip regions with ⇧⌘S, use inline AI actions on a selection, or hit
Generate from reader to draft from the whole tab. Then copy to
WeChat or export as HTML when you're done.
Grab the latest installer from GitHub Releases.
Builds aren't code-signed yet — on first launch macOS Gatekeeper / Windows SmartScreen may warn you. See the install notes to get past it.
No. The reader, editor, snip tool, workspaces, and publishing all work with zero AI configured. AI is optional. When you do want it, inline actions need an OpenAI-compatible API key, and long-form generation reuses a CLI subscription you already have (Claude Code, Codex, Gemini, OpenCode) — no separate key.
In a plain folder you choose — each document is a subfolder with a Markdown file and
an images/ directory. No proprietary database for your content; it's all
files you can sync, back up, or open in any other editor.
Only when you trigger an AI action, and only to the endpoint or CLI you configured. API keys are encrypted in the OS keychain, never stored in plaintext. There's no telemetry baked into the app.
It uses Electron's WebContentsView — a real Chromium tab layered above
the app — instead of an iframe or the deprecated <webview>. That's
why authenticated sites and sites that send X-Frame-Options: DENY render
correctly.
macOS is the most-used and most-tested path. Windows and Linux are built by CI on every release but get less manual QA. This is early-stage open source — bug reports and PRs are very welcome.
Yes. The project is MIT-licensed. See
CONTRIBUTING.md
— branch off main, use Conventional Commits, and make sure
pnpm typecheck && pnpm lint && pnpm test && pnpm
build
passes.