zen
sheshbabu · sheshbabu/zen
This self-hosted notes app stores Markdown notes in SQLite with full-text search and offers an experimental MCP interface for AI agents to search, list, and read your notes.
Selfhosted notes app. Single golang binary, notes stored as markdown within SQLite, full-text search, very low resource usage
Preview
What you can do with it
- Allow your AI agent to search and retrieve specific Markdown notes from your self-hosted Zen instance.
- Have an AI agent list all notes tagged with a certain keyword within your personal knowledge base.
- Integrate your notes with an AI workflow for content summarization or information retrieval by making them accessible via MCP.
Safety check
No risky patterns found in the files we scanned.
Automated scan of the repo files. Always review code you run.
From the README
Zen
Live Demo •
Features •
Updates
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
- Version history
- 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
$ 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
<version>_<title>.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.