Buy groceries
- Milk
- Eggs
Meeting notes
Q3 planning...
Project ideas
#startup #saas
Remember to
call the vet

Your notes. Your server.
Your rules.

A self-hostable, offline-first note-taking app that respects your privacy.

Crumbs notes grid view showing colorful note cards with checklists, tags, and rich text

Everything you need,
nothing you don't

Rich Editor

Tiptap-powered WYSIWYG with full Markdown support. Bold, lists, code blocks, checklists, and more.

Offline-First

Works without internet. PWA with CRDT-based sync means your notes are always available.

Self-Hostable

One Docker command. Your data stays on your server. No cloud, no tracking, no nonsense.

Tags & Colors

Organize with tags, 12 note colors, and pinned notes. Your notes, your way.

Image Attachments

Drag-and-drop images with auto-optimization. Works offline.

Full-Text Search

Find anything instantly. SQLite-powered search across all your notes and tags.

API & MCP

Full REST API with token auth. Integrate with n8n, Zapier, or scripts. Built-in MCP server for AI tools like Claude and Cursor.

Multi-User

Share one instance with your team or family. Admin manages accounts, each user gets their own private notes.

OAuth & SSO

Sign in with Google, GitHub, or any OIDC provider. Or just use a password — your choice.

Note Sharing

Share notes via public link or with other users. Full collaboration with per-user pins and archives.

Version History

Browse and restore previous versions of any note. Never lose important edits again.

Email Alerts

Optional SMTP notifications for shares, security alerts, and account events. Opt out per user.

See it in action

Desktop

Notes grid view with colorful cards, checklists, and tags
Notes grid view
Rich text editor with formatting toolbar
Rich text editor
Tag filtering showing bretzel-tagged notes
Tag filtering

Mobile

Mobile grid view with notes and tags
Notes view
Mobile checklist editor
Checklist editor
Mobile sidebar with tags
Sidebar & tags

Deploy in seconds

One file. One command. Done.

docker-compose.yml
services:
  crumbs:
    image: ghcr.io/bretzel-app/crumbs:latest
    ports:
      - "3000:3000"
    volumes:
      - crumbs_data:/data

volumes:
  crumbs_data:

That's it.

Open localhost:3000, set a password, and start writing.