Plain .md files
A vault is just a folder. Sync it with Git, iCloud, Dropbox, or not at all. No hidden database, nothing proprietary, nothing to migrate out of.
ZenNotes
ZenNotes keeps every note as a local .md file you
own, with real Vim motions, live math & diagrams, an MCP
server for your assistant, and a bundled zn CLI.
Native on Mac, Windows, Linux, iPhone, iPad, and Android, or
self-hosted in any browser.
Motions, operators, registers, marks, macros, folds, the ex prompt. All of it works the way your muscle memory expects, because it's real Vim underneath, not a sprinkle of shortcuts dressed up as one.
Math with KaTeX. Diagrams with Mermaid, TikZ, JSXGraph, and function-plot. All of it renders from ordinary fenced code blocks. The files stay plain text under the hood, so there's nothing to migrate out of later if you change your mind.
Read the docs# Gradient descent
Minimise $f(\theta)$ by stepping
against its gradient:
```math
\theta_{t+1} = \theta_t - \eta\nabla f(\theta_t)
```
```mermaid
flowchart LR
start --> step --> check
check --> step
check --> done
```
Gradient descent
Minimise f(θ) by stepping against its gradient:
There's an MCP server in the box, with one-click setup for Claude Code, Claude Desktop, and Codex. Your assistant edits the same Markdown files you do, straight on disk, with no export step and no closed database in the middle.
> Summarize my notes tagged #graphics
tool zennotes.search_by_tag "graphics"
→ 4 notes found
Across four notes you’re circling one idea: SDFs give cheap implicit geometry, and anti-aliased coverage falls out almost for free…
> ▍
zn ships with the desktop app. Read and
write notes, search, tag, toggle tasks, capture
straight from a pipe, run the MCP server. Pass
--json on data commands and the output drops
cleanly into jq or wherever your shell
wants to send it. Install from Settings → CLI
on macOS or Linux, or get the standalone tool from the
TUI page for any desktop platform.
$ zn capture "Meeting takeaways" --tag work
→ inbox/2026-04-29-meeting-takeaways.md
$ pbpaste | zn append inbox/Daily.md --body -
$ zn search "deadline" --json | jq '.[].path'
"inbox/Q2-Plan.md"
"projects/Launch.md"
$ zn task list --unchecked --tag work
$ ▍
One keyboard-first app for capture, writing, and finding, while your source of truth stays in plain Markdown files.
.md filesA vault is just a folder. Sync it with Git, iCloud, Dropbox, or not at all. No hidden database, nothing proprietary, nothing to migrate out of.
Split a tab side-by-side, pin a reference, or pop a note into its own floating window.
KaTeX inline and in blocks. Mermaid, TikZ, JSXGraph, and function-plot render straight from fenced code.
Write #tag anywhere. Check - [ ] tasks vault-wide. Follow [[wikilinks]] and chase unresolved ones.
Full-text search across every note. Uses ripgrep or fzf if you have them, the built-in engine if you don't.
One keystroke opens today's note. Auto-create ISO-dated dailies in a folder you choose.
Point ZenNotes at a vault you already have. Loose files show up in the tree, ![[image.png]] embeds resolve, and the layout is read from disk so new notes land where you'd expect.
Type / for headings, callouts, code blocks, tables, and links. Type @ for dates.
Highlight a passage, drop a comment in the side panel. The marker stays anchored as you edit around it.
One keystroke strips every sidebar, tab, and status bar. Only the editor or preview stays on screen.
Native on Mac, Windows, and Linux. Or self-host the web app from the published adibhanna/zennotes Docker image and open it from any browser on your network.
Light and dark theme families. Pick separate fonts for UI, prose, and code, each sized for a long writing session.
Keep one vault current on every device, create recovery points, and share notes on the web.
Keep the same vault current on desktop and mobile. See when sync last ran and pull changes on demand.
Run daily or manual backups, restore one note or the whole vault, and download a complete ZIP.
Turn a note into a public link, choose its theme and logo, and unpublish it whenever you want.
ZenNotes stays free and open source. Local vaults and iCloud keep working without a Cloud plan.
A Quick Note, a daily note, or a fresh inbox buffer, each one keystroke from anywhere in the app.
⎵qStay in normal mode and edit with motions. Live preview renders math, diagrams, and plots as you go.
iFuzzy note finder, outline jumps, buffer switching, which-key overlays: every surface is keyboard-first.
⎵fMove between inbox, archive, and trash from the ex line. Tasks, tags, and backlinks stay in sync.
:mv
The same plain .md files on iOS and Android. Live
KaTeX math, tasks with calendar and Kanban, and full-text search.
Keep vaults local, use iCloud on Apple devices, or connect
ZenNotes Cloud across platforms.
Free, open source, and yours. Pick your platform to start the download.
brew install --cask zennotes/tap/zennotes
View tap
yay -S zennotes-bin
View on AUR
AppImage won't launch on Arch/CachyOS/Fedora? Those ship FUSE 3. Install fuse2, run with --appimage-extract-and-run, or just use the AUR / .pacman / .deb package.
On Fedora, RHEL, or openSUSE? Grab the native .rpm (x64 and arm64) above and run sudo dnf install ./ZenNotes-*.rpm.
Self-hosting? Run the published adibhanna/zennotes Docker image
or grab the source
on GitHub.