2,743 stars · GPL-3.0 · v0.15.6 (2026-07-26, ungh) · Track this in Scout
A command-line assistant for a folder of plain text notes, adding search, links, tags and filters without moving the files.
▶Repo detailsthe review · specs · pros & cons · install
What it is
zk is a single program written in Go that indexes a directory of Markdown files (Markdown is a way of writing formatted text in a plain file, using symbols like # for a heading). It gives you fast full-text search, links between notes, tags, templates for new notes, and filters that can be combined.
What it is good for. Anyone with a notes folder that has quietly grown past the point where scrolling works. It is for people who want the notes to outlive the tool: since the files are plain text, you can stop using zk tomorrow and lose nothing. It also connects to editors through LSP (a standard way for an editor to talk to a language tool), so links and tags autocomplete while you write.
- The notes are files. No database to export, no account, nothing to migrate out of later.
- The filters are genuinely powerful: by tag, by date, by what links to what, and combinations of those.
- Version v0.15.6, dated 26 July 2026, made indexing noticeably faster and taught it to read links out of the frontmatter block at the top of a note.
- GPL-3.0. Fine for using it; something to read carefully before shipping it inside anything.
- It has no interface of its own. Everything happens at a command prompt or through an editor, and people who want a window with buttons will not enjoy it.
- Only 2,743 stars, so when something does not work the answer may not already be on the internet.
- xwmx/nb
The same idea as one large portable shell script, with bookmarking and git syncing built in.
Track this in Scout
usememos/memosCovered in Edition 23; a self-hosted web app for quick notes, so it has a screen but keeps the notes in a database rather than in files.
Track this in Scout- TriliumNext/Trilium
A much larger personal knowledge base with a full desktop interface and its own storage format.
Track this in Scout
brew install zk zk init ~/notes cd ~/notes zk new --title "First note" zk list --match "first"
