NoteDiscovery is a free, open source documentation & knowledge base project written in JavaScript and released under MIT. It has 2,867 GitHub stars, 248 forks and 4 open issues, and was last pushed 16 hours ago. On this registry it ranks #53 of 100 tracked projects in Documentation & Knowledge Base, with 5 head-to-head comparisons available. It gained 52 stars over the last 30 tracked days.

What is NoteDiscovery?

NoteDiscovery is a lightweight, self-hosted note-taking and knowledge base application, written in JavaScript and released under the MIT licence, that stores every note as a plain markdown file in folders on your own server and is aimed at privacy-conscious individuals, developers, knowledge workers, and teams who want to own their data.

What it is

NoteDiscovery is a self-hosted note-taking application distributed as a Docker image, ghcr.io/gamosoft/notediscovery:latest. It runs on your own server, serves its interface on port 8000, and persists everything through a mounted data volume at /app/data. Notes are plain markdown files organised into folders, so the knowledge base stays readable and portable outside the application itself. Deployment lives in the Docker ecosystem, the application stack belongs to the FastAPI family, and the topics list marks the project as an alternative in the note-taking and knowledge-base space.

The concrete problem it solves is dependence on commercial note services for storage, sync, and access. NoteDiscovery replaces that arrangement for users who want their notes to remain files on hardware they control, rather than records held on a vendor's servers under a vendor's terms. It targets Notion, Evernote, and Obsidian Sync specifically, and reaches users who work offline or on restricted networks: the application and its shared links serve every browser library locally, so no CDN is required.

Key capabilities

  • Plain markdown files in folders as the primary storage format, which keeps the knowledge base free of proprietary lock-in.
  • A built-in Model Context Protocol (MCP) server, started with python -m mcp_server, that lets AI assistants search, create, edit, tag, and reorganise notes; setup is documented in documentation/MCP.md.
  • No CDN dependency: the application and its shared links serve all browser libraries locally, so they function on air-gapped networks, as described in documentation/THIRD_PARTY.md.
  • Optional password protection for self-hosted deployments.
  • Graph view for visualising connections between notes, alongside favorites for frequently used notes and an outline panel with click-to-jump headings.
  • LaTeX and MathJax support for equations, plus HTML export and print output for individual notes.
  • A drawing editor that stores sketches as drawing-*.png files next to your notes, documented in documentation/DRAWING.md, together with a plugin system, multiple themes, and a responsive interface for desktop, tablet, and mobile.

Who uses it and how

  • Privacy-conscious users and operators of air-gapped or restricted networks, who rely on the local browser libraries and the absence of a CDN requirement.
  • Developers who prefer markdown and local file storage over a hosted database, and who read the notes directly from the mounted volume.
  • Knowledge workers building a personal wiki or second brain, using the graph view, backlinks, outline panel, and favorites to navigate a growing collection.
  • Teams that want a self-hosted replacement for commercial note applications, running a single container with one attached volume and sharing links from it.
  • AI-assisted workflows, where Cursor, Claude Desktop, or another MCP-compatible tool connects to the MCP server; a fully local stack combining NoteDiscovery, Ollama, and Open WebUI is described in OLLAMA-STACK.md.

Getting started

Installation is a single Docker command: create a data directory and run the image with the volume and port mapped, for example docker run -d --name notediscovery -p 8000:8000 -v $(pwd)/data:/app/data ghcr.io/gamosoft/notediscovery:latest, with a PowerShell equivalent for Windows. The project homepage is at https://www.notediscovery.com.

How it compares

The README contrasts NoteDiscovery directly with Notion, Evernote, and Obsidian Sync on cost, privacy, offline behaviour, customisation, and lock-in. Those products are commercial and charge a recurring subscription, while NoteDiscovery is MIT-licensed and free to run; they hold notes on their own servers under their own terms, while NoteDiscovery keeps notes on your server; and they commonly use proprietary formats, while NoteDiscovery writes plain markdown files. The README also notes that commercial applications depend on an internet connection and offer limited or sync-dependent offline behaviour, whereas NoteDiscovery is designed to work offline.

When to use it — and when not to

A self-hoster must operate the Docker container itself, expose port 8000, mount and back up the /app/data volume, and take responsibility for securing the deployment. It is not the right choice for teams that need real-time collaborative editing or granular per-user roles and permissions, since the README describes only optional password protection for the deployment rather than a multi-user permission model. The README excerpt is brief and several capabilities are documented only in linked files such as documentation/MCP.md, documentation/DRAWING.md, documentation/THIRD_PARTY.md, and OLLAMA-STACK.md, so those should be read before committing to it.

project readme (upstream, from github) — read inline

GitHub Stars Build Latest Version GHCR Pulls License

NoteDiscovery

Your Self-Hosted Knowledge Base

What is NoteDiscovery?

NoteDiscovery is a lightweight, self-hosted note-taking application that puts you in complete control of your knowledge base. Write, organize, and discover your notes with a beautiful, modern interface—all running on your own server.

Write · Find · Discover

🎯 Who is it for?

  • Privacy-conscious users who want complete control over their data
  • Developers who prefer markdown and local file storage
  • Knowledge workers building a personal wiki or second brain
  • Teams looking for a self-hosted alternative to commercial apps
  • Anyone who values simplicity, speed, and ownership

  

Run on PikaPods    Buy Me a Coffee at ko-fi.com


✨ Why NoteDiscovery?

vs. Commercial Apps (Notion, Evernote, Obsidian Sync)

Feature NoteDiscovery Commercial Apps
Cost 100% Free $xxx/month/year
Privacy Your server, your data Their servers, their terms
Speed Lightning fast Depends on internet
Offline Always works Limited or requires sync
Customization Full control Limited options
No Lock-in Plain markdown files Proprietary formats

Key Benefits

  • 🔒 Total Privacy - Your notes never leave your server
  • 📴 No CDN Required - The app and its shared links serve every browser library locally, so they work on air-gapped networks — see documentation/THIRD_PARTY.md
  • 🔐 Optional Authentication - Simple password protection for self-hosted deployments
  • 💰 Zero Cost - No subscriptions, no hidden fees
  • 🚀 Fast & Lightweight - Instant search and navigation
  • 🎨 Beautiful Themes - Multiple themes, easy to customize
  • 🔌 Extensible - Plugin system for custom features
  • 📱 Responsive - Works on desktop, tablet, and mobile
  • 📂 Simple Storage - Plain markdown files in folders
  • 🧮 Math Support - LaTeX/MathJax for beautiful equations
  • 📄 HTML Export & Print - Export notes as standalone HTML or print
  • 🕸️ Graph View - Interactive visualization of connected notes
  • ✏️ Drawing editor - In-app sketches as drawing-*.png next to your notes — see documentation/DRAWING.md
  • ⭐ Favorites - Star your most-used notes for instant access
  • 📑 Outline Panel - Navigate headings with click-to-jump TOC
  • 🤖 AI Assistant Ready - MCP integration for Claude, Cursor & more

🤖 AI-Powered Note Management

MCP Compatible Works with Claude Works with Cursor

NoteDiscovery includes a built-in Model Context Protocol (MCP) server, letting AI assistants directly interact with your notes:

What AI Can Do Example
🔍 Search & Discover "Find all my notes about Docker deployment"
📝 Create & Edit "Create a meeting notes template for tomorrow"
📁 Organize "Move all project notes to the archive folder"
🏷️ Tag & Categorize "List all notes tagged with #urgent"
📊 Explore Connections "Show me the knowledge graph of my notes"
✍️ Append Ideas "Add this thought to my daily journal"

One-line setup for Cursor, Claude Desktop, and other MCP-compatible tools:

{
  "mcpServers": {
    "notediscovery": {
      "command": "docker",
      "args": ["run", "--rm", "-i", "-e", "NOTEDISCOVERY_URL=http://host.docker.internal:8000", "ghcr.io/gamosoft/notediscovery:latest", "python", "-m", "mcp_server"]
    }
  }
}

💡 See MCP.md for complete setup instructions and all available tools.

🧪 Want a fully local setup with a bundled LLM? OLLAMA-STACK.md spins up NoteDiscovery + Ollama + Open WebUI with one command.

📺 Watch the tour

Watch a short tour

▶ Small walkthrough — sharing, favorites, search, backlinks, and more

🚀 Quick Start

Quick Setup

Linux/macOS:

mkdir -p notediscovery/data && cd notediscovery
docker run -d --name notediscovery -p 8000:8000 \
  -v $(pwd)/data:/app/data \
  ghcr.io/gamosoft/notediscovery:latest

Windows (PowerShell):

mkdir notediscovery\data; cd notediscovery
docker run -d --name notediscovery -p 8000:8000 `
  -v ${PWD}/data:/app/data `
  ghcr.io/gamosoft/notediscovery:latest

Open http://localhost:8000 — done! 🎉

💡 Your notes are saved in ./data/. Themes, plugins, locales and default configuration values are included in the image.

Using Docker Compose

Two docker-compose files are provided:

File Use Case
docker-compose.ghcr.yml Recommended - Uses pre-built image from GitHub Container Registry
docker-compose.yml For development - Builds from local source
docker-compose.ollama-stack.yml Bundled local AI stack (NoteDiscovery + Ollama + Open WebUI) — see OLLAMA-STACK.md

Option 1: Pre-built image (fastest)

Linux/macOS:

mkdir -p notediscovery/data && cd notediscovery
curl -O https://raw.githubusercontent.com/gamosoft/notediscovery/main/docker-compose.ghcr.yml
docker-compose -f docker-compose.ghcr.yml up -d

Windows (PowerShell):

mkdir notediscovery\data; cd notediscovery
Invoke-WebRequest -Uri https://raw.githubusercontent.com/gamosoft/notediscovery/main/docker-compose.ghcr.yml -OutFile docker-compose.ghcr.yml
docker-compose -f docker-compose.ghcr.yml up -d

Option 2: Build from source (for development)

git clone https://github.com/gamosoft/notediscovery.git
cd notediscovery
docker-compose up -d

See Advanced Docker Setup for volume details.

Running Locally (Without Docker)

For development or if you prefer running directly:

# Clone the repository
git clone https://github.com/gamosoft/notediscovery.git
cd notediscovery

# Install dependencies
pip install -r requirements.txt

# Run the application
python run.py

# Access at http://localhost:8000

Requirements:

  • Python 3.8 or higher
  • pip (Python package manager)
Using Virtual Environments (Recommended for Arch/Fedora/Ubuntu 23.04+)

Modern Linux distributions enforce PEP 668, which prevents system-wide pip installs. Use a virtual environment instead:

# Clone the repository
git clone https://github.com/gamosoft/notediscovery.git
cd notediscovery

# Create a virtual environment
python -m venv venv

# Activate it (choose your shell):
source venv/bin/activate        # Bash/Zsh (most Linux distros)
source venv/bin/activate.fish   # Fish (CachyOS, etc.)
source venv/bin/activate.csh    # Csh/Tcsh
.\venv\Scripts\activate         # Windows PowerShell

# Install dependencies and run
pip install -r requirements.txt
python run.py

⚠️ Warning

You'll need to activate the virtual environment (source venv/bin/activate) each time you open a new terminal before running the app

Advanced Docker Setup

The image includes bundled config, themes, plugins, and locales. To customize, you must:

  1. Map the volume in your docker-compose or docker run command
  2. Provide content - the file/folder must exist with valid content (empty = app might break!)
Volume Purpose Bundled?
data/ Your notes ❌ You must create
config.yaml App settings ✅ Yes
themes/ Custom themes ✅ Yes
plugins/ Custom plugins ✅ Yes
locales/ Translations ✅ Yes

Dashboard Integration

NoteDiscovery Icon

An official icon for NoteDiscovery is now available on Dashboard Icons!
Use it in your self-hosted dashboards like Homepage, Homarr, Dashy, Heimdall, etc...

📚 Documentation

Want to learn more?

  • 🎨 THEMES.md - Theme customization and creating custom themes
  • ✨ FEATURES.md - Complete feature list and keyboard shortcuts
  • ✏️ DRAWING.md - Built-in drawing editor (drawing-*.png), save behavior, and API notes
  • 🏷️ TAGS.md - Organize notes with tags and combined filtering
  • 📋 TEMPLATES.md - Create notes from reusable templates with dynamic placeholders
  • 🧮 MATHJAX.md - LaTeX/Math notation examples and syntax reference
  • 📊 MERMAID.md - Diagram creation with Mermaid (flowcharts, sequence diagrams, and more)
  • 🔌 PLUGINS.md - Plugin system and available plugins
  • 🧩 plugins/contrib/ - Optional community plugins and how to install them
  • 🌐 API.md - REST API documentation and examples
  • 🤖 MCP.md - AI assistant integration (Claude, Cursor, and more)
  • 🔐 AUTHENTICATION.md - Enable password protection for your instance
  • 🔧 ENVIRONMENT_VARIABLES.md - Configure settings via environment variables
  • 📦 THIRD_PARTY.md - Locally hosted browser libraries, licences, and how to update them

🌍 Multiple Languages

NoteDiscovery supports multiple interface languages via JSON locale files in locales/. Open Settings (gear icon) → Language to choose one; the list reflects whatever locales are installed (bundled files, mounts, or your own additions).

To add your own language: See the Contributing Guidelines for instructions on creating translation files.

Docker users: Mount your custom locales folder to add or override translations:

volumes:
  - ./locales:/app/locales  # Custom translations

💡 Pro Tip: If you clone this repository, you can mount the documentation/ folder to view these docs inside the app:

# In your docker-compose.yml
volumes:
  - ./data:/app/data              # Your personal notes
  - ./documentation:/app/data/docs:ro  # Mount docs subfolder inside the data folder (read-only)

Then access them at http://localhost:8000 - the docs will appear as a docs/ folder in the file browser!

🤝 Contributing

Before submitting a pull request, especially for major changes, please:

  • Read our Contributing Guidelines
  • Open an issue first to discuss major features or significant changes
  • Ensure your code follows the project's style and philosophy

🔒 Security Considerations

NoteDiscovery is designed for self-hosted, private use. Please keep these security considerations in mind:

Network Security

  • ⚠️ Do NOT expose directly to the internet without additional security measures
  • Run behind a reverse proxy (nginx, Caddy) with HTTPS for production use
  • Keep it on your local network or use a VPN for remote access
  • By default, the app listens on 0.0.0.0:8000 (all network interfaces)

Authentication

  • Password protection is DISABLED by default (default password: admin)
  • ⚠️ ENABLE AUTHENTICATION AND CHANGE THE DEFAULT PASSWORD if exposing to a network!
  • See AUTHENTICATION.md for complete setup instructions
  • To disable auth, set authentication.enabled: false in config.yaml
  • Perfect for single-user or small team deployments
  • For multi-user setups, consider a reverse proxy with OAuth/SSO

Data Privacy

  • Your notes are stored as plain text markdown files in the data/ folder
  • No data is sent to external services
  • Regular backups are recommended

Best Practices

  • Run on localhost or a private network only
  • Use Docker for isolation and easier security management
  • Keep your system and dependencies updated
  • Review and audit any plugins you install
  • Set appropriate file permissions on the data/ directory

TL;DR: Perfect for personal use on your local machine or home network. Enable built-in password protection if needed, or use a reverse proxy with authentication if exposing to wider networks.

📄 License

MIT License - Free to use, modify, and distribute.


Made with ❤️ for the self-hosting community

Frequently asked questions

Is NoteDiscovery free to use?

NoteDiscovery is open source under the MIT 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 NoteDiscovery do?

Your Self-Hosted Knowledge Base

What is NoteDiscovery written in?

NoteDiscovery is primarily written in JavaScript. Its source is publicly available at https://github.com/gamosoft/NoteDiscovery, and it has 2,867 GitHub stars.