ZenNotes

Vim-first · Local Markdown · Self-hostable

A home
for your thoughts.

Plain .md files in a folder you own. Real Vim motions if you want them. Live preview that handles math, diagrams, and Mermaid without leaving the file. Runs native on Mac, Windows, and Linux, or in any browser if you'd rather self-host.

  • hjkl
  • diw
  • ci"
  • gg
  • G
  • n
  • wv
  • :
Vim-native

If you know Vim,
you already know it.

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.

Markdown, fully lived-in

Write rich notes
in plain files.

Math with KaTeX. Diagrams with Mermaid, TikZ, JSXGraph, and function-plot — all of it rendered 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 →
notes.md · split
# 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:

θt+1 = θt − η ∇f(θt)
MCP

Your vault,
open to assistants.

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 — no second copy, no sync layer to babysit.

claude · zennotes

> 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…

>

Terminal

Drive your vault
from the command line.

zen 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 anything and the output drops cleanly into jq or wherever your shell wants to send it. Install from Settings → CLI in one click.

zsh · ~/notes

$ zen capture "Meeting takeaways" --tag work

→ inbox/2026-04-29-meeting-takeaways.md

$ pbpaste | zen append inbox/Daily.md --body -

$ zen search "deadline" --json | jq '.[].path'

"inbox/Q2-Plan.md"

"projects/Launch.md"

$ zen task list --unchecked --tag work

$

Everything in one app

The bits you'll actually
reach for.

Plain .md files

A vault is just a folder. Sync it with Git, iCloud, Dropbox — or don't. No hidden database, nothing to migrate out of.

Split, preview, reference

Split a tab side-by-side. Pin a reference next to whatever you're writing. Pop a note out into its own floating window when you need a second screen.

Math & diagrams

KaTeX math inline and in blocks. Mermaid, TikZ (on-device), JSXGraph, and function-plot render straight from fenced code.

Tasks, tags, backlinks

Write #tag anywhere. Check - [ ] tasks across the whole vault. Follow [[wikilinks]] and chase unresolved ones.

Vault-wide search

Full-text search across every note. Uses ripgrep or fzf if you have them. If you don't, the built-in engine handles it.

Daily notes

One keystroke opens today's note. ZenNotes can auto-create ISO-dated dailies in a folder you choose, then get out of your way.

Slash & @ shortcuts

Type / for a menu of headings, callouts, code blocks, tables, and links. Type @ for dates.

Obsidian-friendly vaults

Point ZenNotes at a vault you already have — flat, or with an inbox/. 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 them.

Inline note comments

Highlight a passage, drop a comment in the side panel. The marker stays anchored to the text even as you edit around it.

Bundled zen CLI

Capture from a pipe, search, tag, toggle tasks — from any terminal. --json on anything, so the output drops cleanly into jq or a shell script. Install from Settings → CLI.

Desktop or self-hosted

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.

Zen mode

One keystroke strips every sidebar, tab, and status bar. Only the editor, preview, or split stays on screen.

Themes & type

Light and dark theme families. Pick separate fonts for UI, prose, and code. Sizing you can actually live with for a long writing session.

Workflow

Capture. Write. Find.
Without lifting your hands.

  1. 01

    Capture

    A Quick Note, a daily note, or a fresh inbox buffer — one keystroke from anywhere in the app.

    q
  2. 02

    Write

    Stay in normal mode and edit with motions. Live preview renders math, diagrams, and plots as you go.

    i
  3. 03

    Navigate

    Fuzzy note finder, outline jumps, buffer switching, which-key overlays — every surface keyboard-first.

    f
  4. 04

    Organize

    Move between inbox, archive, and trash from the ex line. Tasks, tags, and backlinks stay in sync without a thought.

    :mv