a local markdown editor for the notes you share with ai.
a cross-platform (macOS Β· Windows Β· Linux) markdown editor specialized for ai context management. live editor on the left (codemirror 6), rendered preview on the right (markdown-it + shiki + mermaid), and a context tray for staging multiple notes into one AI-ready bundle. minimal chrome, grouped themes (neutral + catppuccin + ai-inspired + crafted), orange octopus mascot. ~10 mb bundle, ~240 mb resident β lean for a tauri app.
built around one loop: collect notes β write β share with ai. nothing leaves your machine until you copy.
works with claude, chatgpt, gemini, your local agent β anywhere that reads plain markdown.
- live preview β ~50 ms render, shiki code highlighting (36 langs, lazy-loaded), mermaid diagrams
- csv preview β open
.csvfiles as a capped, read-only table for quick data checks beside your notes - grouped themes β mono, mono dark, catppuccin family, crafted palettes, plus AI-inspired Claude / Codex / Gemini / Cursor themes Β· animated sections + hover-to-preview
- reading mode β β. distraction-free preview with iA-style typography
- editor-only mode β ββ§. hide the preview when you want to focus on writing
- vim mode β opt-in via theme menu Β· NORMAL/INSERT/VISUAL/REPLACE pill in the status bar
- find β βf works in BOTH editor (codemirror) and reading mode (text-node walker w/ live highlights)
- command palette β βk, fuzzy + grouped
- ide-style sidebar β drag-to-move, right-click rename / new / delete, ββ₯Z undo
- session restore β last open file + folder come back on launch
- save as β ββ§s opens save-as dialog (also auto-fallback for untitled buffers)
- markdown extras β
==highlight==(mark),~~strike~~,[ ] / [x]task lists with theme-aware checkboxes - share to ai β ββ§c copies clean markdown to clipboard
- context tray β stage multiple sidebar files, see file/token counts, copy them as one prompt bundle
- export to pdf β visible file-action button + βp
- external file watch β auto-reloads when the file changes outside the app Β· conflict toast on dirty buffer
- cross-platform auto-update β minisign-signed releases on macOS / Windows / Linux
- window transparency slider β continuous opacity, macOS vibrancy
- platform-aware shortcuts β β on mac, Ctrl on Windows/Linux, surfaced correctly everywhere
- no autosave β βs commits. trust your fingers, not background daemons.
download the latest release β
- apple silicon (M1/M2/M3/M4): grab
marka.md.dmgβ drag marka.md.app into/Applicationsβ open. - intel mac: grab
marka.md_intel.dmgβ same install steps.
grab marka.md_*-setup.exe β run.
Windows SmartScreen may show "Windows protected your PC". Click More info β Run anyway. marka.md is free + MIT β we don't sign Windows builds (paid certs aren't worth it for a free OSS project). Full source is right here if you'd rather build it yourself.
three flavors, pick what fits your distro:
- AppImage (works anywhere):
chmod +x marka.md_*.AppImageβ run. self-contained, no install step needed. - .deb (Debian / Ubuntu / Mint / Pop!_OS):
sudo dpkg -i marka.md_*_amd64.deb - .rpm (Fedora / RHEL / Rocky / openSUSE):
sudo dnf install marka.md-*.x86_64.rpm
no signing required on Linux β it's the freedom platform π§
requires bun (or npm), rust toolchain. on macOS: xcode command line tools. on Windows: MSVC build tools (Visual Studio installer β "Desktop development with C++"). on Linux: libwebkit2gtk-4.1-dev libsoup-3.0-dev + friends.
bun install
bun run tauri dev # native window with hmr
bun run tauri build # produces .dmg / .exe / .AppImage / .deb / .rpm under src-tauri/target/release/bundle/shortcuts shown with macOS modifiers below. on Windows / Linux, substitute β β Ctrl, β₯ β Alt, β§ β Shift.
| key | does |
|---|---|
| βK | command palette |
| βO | open a .md file |
| ββ§O | open a folder of notes |
| βN | new untitled buffer |
| βS | save (manual β no autosave) |
| ββ§S | save as (also auto-fallback for untitled buffers) |
| βB | toggle sidebar |
| β. | toggle reading mode (preview only) |
| ββ§. | toggle editor-only mode (preview hidden) |
| βF | find / replace in editor Β· or find in reading mode |
| βG | find next match |
| ββ₯Z | undo last sidebar file op (move / rename / new / delete) |
| ββ§C | copy markdown to clipboard |
| command palette β copy context bundle | copy the staged context bundle |
| βP | export to pdf (also visible in the top file-action row) |
| ββF | toggle fullscreen (macOS) Β· F11 on Windows/Linux |
| β/ | help overlay |
| esc | close any popup |
| layer | choice |
|---|---|
| shell | tauri 2.11 (rust + webview), macOS universal (arm64 + x86_64) Β· Windows Β· Linux |
| frontend | react 19 Β· vite 7 Β· typescript 5.9 Β· bun |
| editor | codemirror 6 + @codemirror/lang-markdown + @codemirror/search Β· opt-in vim via @replit/codemirror-vim |
| markdown | markdown-it + markdown-it-mark + markdown-it-task-lists + shiki (lazy themes + langs) + mermaid (lazy) |
| icons | lucide-react |
| styling | css variables, no framework |
src/
βββ app.tsx # shell β composes hooks + renders layout
βββ components/
β βββ primitives/ # button, icon, popover, kbd, shortcut, tooltip
β βββ chrome/ # title-bar, breadcrumb, status-bar, logo
β βββ editor/ # editor, preview, splitter, reading-find
β βββ files/ # sidebar, file-tree, folder-node, editable-row, sidebar-search, context-menu
β βββ overlays/ # palette, help, about, welcome, drop, toast
βββ hooks/ # use-file-session, use-file-ops, use-update-flow, use-context-menu,
β # use-overlays, use-notifications, use-shortcuts, use-file-watcher,
β # use-sync-scroll, use-debounced, use-persisted-state
βββ lib/ # markdown, theme, platform, files, commands, pdf-export, updater,
β # window-drag, storage, bundle, demo
βββ styles/ # tokens, globals, per-domain css (chrome/, editor/, files/, overlays/, shared/)
βββ assets/mascot/ # in-app sprites
src-tauri/ # rust shell, tauri config, capabilities
.github/workflows/ # release.yml (matrix build) + ci.yml + dependabot
every folder exports its public api via index.ts. path alias @/* resolves to src/*. state lives in cohesive custom hooks under src/hooks/; app.tsx is mostly composition + jsx.
per-release detail lives on the changelog (auto-fresh from GitHub releases). high-level:
v1.5:
- context tray β multi-file bundling, β-click to stage, token estimates, copy as one prompt blob
- what's new toast β first launch after update now points users straight to the changelog
- pdf export polish β cleaner document margins, no browser-added date/time/path headers, and rendered mermaid diagrams
- theme polish β mono / mono dark, animated grouped theme menu, and AI-inspired Claude / Codex / Gemini / Cursor palettes
- file tabs + languages β open multiple notes, switch between them quickly, and use the app in more interface languages
- code block wrapping β long rendered code lines wrap in preview and PDF export
- macOS app naming + file handling β packaged builds use
marka.mdconsistently and default-handler launches open the selected markdown file reliably
next:
- native/silent PDF generation, so export does not depend on the browser print dialog
- optional richer context bundle presets for agents with stricter prompt formats
contributions welcome β see feedback below to suggest priorities.
local-first. nothing ever leaves your machine. no telemetry, no analytics, no accounts, no cloud sync. your .md files stay on disk. clipboard transfers happen only when you press ββ§C β and then they're yours, going wherever you paste them.
see the full privacy notice for the website analytics caveat (vercel speed insights, cookieless).
ideas, bugs, or just want to say hi?
- structured form (GitHub) β feedback Β· bug report
- prefer email? β enarlem10@gmail.com
- landing page hub β markamd.vercel.app/feedback
- security issues β SECURITY.md
i read everything. PRs welcome.
marka.md is free + MIT, and intends to stay that way. if it saves you time wrangling AI context:
- β star the repo β biggest single signal
- π£οΈ tell another dev / share it
both appreciated, neither required. π
mit Β· matt enarle (@mattenarle10)