Keyboard-first local Markdown notes with Vim motions, diagrams, databases, workflows, and first-party MCP integration.
Plain files. Fast editing. One shared editor core across desktop, self-hosted web, terminal, and mobile.
zennotes.org · Download Latest Release · Docs · ZenNotes Cloud · Join Discord · Report an Issue
ZenNotes is several projects that share one editor core and one folder of Markdown files. Use one piece or all of them. Everything is MIT.
| Repository | What it is | How to get it |
|---|---|---|
| zennotes | The desktop app (Electron, macOS / Windows / Linux) and the shared editor: the app core, domain logic, and bridge contract every other client consumes, plus the web client and the public share viewer. Its releases carry the installers and the checksummed core, web, and viewer artifacts the other repositories pin. |
Releases, brew install --cask zennotes/tap/zennotes, yay -S zennotes-bin, Nix flake, zennotes.org |
| znserver | The self-hosted server: one Go binary with the browser app embedded, serving your vault to browsers and to remote desktop connections. Releases on its own cadence. | Binaries for Linux, macOS, and Windows with SHA256SUMS; docker pull adibhanna/zennotes (amd64 + arm64) |
| tui | zn, the command-line tool and terminal app in one Go binary: capture, search, and edit from any shell, zn tui for a full terminal editor, zn mcp for AI assistants. The desktop app bundles this exact binary as its own zn. |
Releases for six targets, brew install zennotes/tap/zn |
| zennotesios | The iPhone app, a native shell around the published editor core, on the same files and the same Cloud sync. | Source; builds with Xcode |
| zennotesandroid | The Android app, built the same way. | Source; builds with Android Studio or Gradle |
| homebrew-tap | The Homebrew tap: the zennotes cask and the zn formula. |
brew tap zennotes/tap |
The desktop repository publishes the shared editor as immutable, checksummed artifacts, and the other repositories pin those, so each project builds and releases on its own schedule while staying on the same contract.
- Plain-file vaults: notes are normal
.mdfiles on disk, no hidden database, and an Obsidian-shaped vault works as-is, since the system folders (Inbox, Quick Notes, Archive, Trash) can map to any directories you already have - Keyboard-first editing with first-class Vim mode, leader flows, a command palette, and pane/tab motion; every feature ships with a key
- Live-preview editor (CodeMirror 6): GFM tables as an editable grid, callouts as cards, wiki links, transclusion with
![[Note]], footnotes, and heading folding, with the cursor line always showing its raw source - Rendering both ways: KaTeX or Typst for math (Typst definitions can follow a note's tags), Mermaid, TikZ, JSXGraph, and function-plot for diagrams, plus bring-your-own code languages via TextMate grammars
- Databases: any
.csvopens as a Notion-style table or board with typed columns, AND/OR filtering, and rows that open as real notes - Excalidraw drawings as first-class items, embeddable inline in notes
- Tasks everywhere: inline checkboxes, whole-note task files, Kanban with custom statuses, bullet-journal forwarding, and daily, weekly, and monthly notes
- Workflows: repeatable pipelines over the vault written as plain
.mdand drawn on a canvas; the engine only plans, every change is counted before you approve, and Undo restores byte for byte (opt-in) - Vault-wide search (built-in,
ripgrep, orfzf), backlinks for wiki and plain Markdown links, tags, quick capture, and URL embeds with bookmark cards - Make it yours: Obsidian-style CSS themes and snippets, no-code quick tweaks, fonts, and rebindable keymaps that travel in
config.toml - Real exits: Word export built from Word's own Heading styles, copy-for-email HTML, and PDFs that state their title
- Note creation dates that travel with the vault as app-owned metadata, so they survive syncs, copies, and filesystems that drop birth times
- The
znCLI and terminal app for scripting, capture, and editing, against a local vault or your self-hosted server - First-party MCP server with desktop install flows for Claude Code, Claude Desktop, and Codex; every note result is a clickable
zennotes://link - ZenNotes Cloud: sync one vault across desktop and mobile, daily or manual backups with per-note or whole-vault restore, and publishing notes to the web, with keep-both conflict handling
- Self-hosting with secure-by-default auth, a server-backed vault picker, LAN/home-server access, and an offline-capable browser app
Sync, back up, publish. Create a Cloud account to keep one vault current on every device, take daily or manual backups you can restore one note or a whole vault from (or download as a ZIP), and turn any note into a public link with its own theme and logo, unpublished whenever you want.
ZenNotes stays free and open source. Local vaults, iCloud, and self-hosting keep working without a Cloud plan.
- Desktop: Electron shell with native menus, app updater, floating note windows, signed macOS builds, and Windows / Linux installers
- Self-hosted: the
znserverbinary or Docker image, serving the same editor to any browser and to the desktop app as a remote workspace - Terminal:
zn tuifrom thetuirepository, the same vault in any terminal - Mobile: the iPhone and Android apps, built on the published editor core
- Latest desktop release downloads (macOS, Windows, Linux x64 + arm64)
- Package managers:
brew install --cask zennotes/tap/zennotes,yay -S zennotes-bin(AUR), Nix flake in-repo,docker pull adibhanna/zennotes,brew install zennotes/tap/zn - Docs · Releases and demos · Terminal app · ZenNotes Cloud
- Community Discord