Zen is a free, open source note taking & knowledge management project written in JavaScript and released under AGPL-3.0. It has 1,174 GitHub stars, 61 forks and 1 open issues, and was last pushed 5 days ago. On this registry it ranks #21 of 25 tracked projects in Note Taking & Knowledge Management, with 5 head-to-head comparisons available.

What is Zen?

What it is

Zen is a self-hosted note-taking application that ships as a single Go binary or as a Docker Compose stack. Notes are written and stored as standard Markdown, with the content and its metadata kept in a local SQLite database. The project sits in the self-hosted productivity and knowledge-management ecosystem, alongside other personal note servers, and it presents itself as clean, distraction-free, and lightweight by design.

The concrete problem it solves is ownership and portability of notes. Instead of locking text inside a proprietary cloud service, Zen keeps everything on hardware the operator controls, in Markdown that can be read without the application. Organizing happens through flexible tags rather than rigid folders, so a note can belong to several contexts at once. Full-text search with BM25 ranking makes a large collection navigable, and import and export paths preserve the ability to move data in and out rather than accumulating a private archive that cannot leave.

Key capabilities

  • Runs as a single Go binary or through Docker Compose, with a deliberately small dependency footprint and low resource usage.
  • Stores notes as standard Markdown files in a local SQLite database, so the underlying content stays readable outside the app.
  • Supports Markdown features including tables, code blocks, task lists, and highlights.
  • Provides full-text search with BM25 ranking across the note collection.
  • Organizes notes with flexible tags instead of rigid folders, with templates and pinned notes for repeated structures.
  • Includes archive and soft delete for individual notes, plus bulk archive and bulk delete, so nothing is removed irreversibly at the first step.
  • Supports internal note links with a side panel preview, and offers experimental Canvas spatial organization stored as JSON Canvas, semantic search and similar-image lookup through Zen Intelligence, and an MCP interface for searching, listing, and reading notes.

Who uses it and how

  • Self-hosters who want notes on their own server and reach them through a hosted-style web interface, using the public live demo to evaluate it first.
  • Writers who prefer Markdown as the storage format and want task lists, tables, and code blocks available without a separate editor.
  • Operators who need automated backups and run the companion Zen Backup tool against the SQLite-backed store.
  • People migrating from another note service, using Zen Import to bring existing content across.
  • Tooling users who connect an MCP client so that notes can be searched, listed, and read programmatically.

Getting started

The README documents building from source with make build, and it lists a single Go binary or Docker Compose as the delivery options; a live demo is linked from the project homepage. Local development uses make dev for the default configuration, or make watch after installing air and esbuild for watch mode.

When to use it — and when not to

Zen is a reasonable fit when the goal is a lightweight, self-hosted Markdown store with search, tags, and export rather than a hosted subscription product. A self-hoster must operate the application itself, which means the SQLite database, the storage holding it, and any backup routine built around Zen Backup or an equivalent process. The README states this is a personal project built for the author's own use, and that pull requests and issues may not be actively reviewed or answered, so anyone depending on upstream fixes or a support relationship should weigh that before committing.

project readme (upstream, from github) — read inline

Zen

Live DemoFeaturesUpdates

Features

  • Single Go binary or Docker Compose
  • Low resource usage
  • Standard Markdown files, local SQLite database
  • Organize with flexible tags, not rigid folders
  • Markdown features like tables, code blocks, task lists, highlights, and more
  • Full-text search with BM25 ranking
  • Import and export data with full portability
  • Templates
  • Pinned notes
  • Archive and soft delete notes
  • Bulk archive and delete
  • Internal note links with side panel preview
  • Minimal dependency footprint
  • Automated backups (via Zen Backup)
  • Import from other services (via Zen Import)

Experimental Features

  • Canvas for spatial organization of notes and images (stored as JSON Canvas)
  • Semantic search for notes and images (via Zen Intelligence)
  • Similar images (via Zen Intelligence)
  • MCP for searching, listing and reading notes

Installation

Build from source

$ make build

Local Development

Run the application using default configuration

$ make dev

Run the application in watch mode

Install air and esbuild

$ go install github.com/air-verse/air@latest
$ go install github.com/evanw/esbuild/cmd/esbuild@latest
$ make watch

Schema Migrations

  • Create new migration file under ./migrations
  • Use the format _.sql

Image Versioning

$ git tag x.y.z
$ git push origin x.y.z

Contributions

This is a personal project built for my own use. The codebase is available for forking and modifications. Note that I may not actively review pull requests or respond to issues due to time constraints.

Thanks

Frequently asked questions

Is Zen free to use?

Zen is open source under the AGPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Zen do?

Clean, distraction-free note-taking with local storage

What is Zen written in?

Zen is primarily written in JavaScript. Its source is publicly available at https://github.com/sheshbabu/zen, and it has 1,174 GitHub stars.