Are you the author? Sign in to claim
Your Self-Hosted Knowledge Base
Your Self-Hosted Knowledge Base
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
| 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 |
drawing-*.png next to your notes — see documentation/DRAWING.md
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.
▶ Small walkthrough — sharing, favorites, search, backlinks, and more
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.
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.
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:
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
The image includes bundled config, themes, plugins, and locales. To customize, you must:
| 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 |
An official icon for NoteDiscovery is now available on Dashboard Icons!
Use it in your self-hosted dashboards like Homepage, Homarr, Dashy, Heimdall, etc...
Want to learn more?
drawing-*.png), save behavior, and API notesNoteDiscovery 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!
Before submitting a pull request, especially for major changes, please:
NoteDiscovery is designed for self-hosted, private use. Please keep these security considerations in mind:
0.0.0.0:8000 (all network interfaces)admin)authentication.enabled: false in config.yamldata/ folderlocalhost or a private network onlydata/ directoryTL;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.
MIT License - Free to use, modify, and distribute.
Made with ❤️ for the self-hosting community
Run Claude Code as an MCP server so any agent can delegate coding tasks to it
Browser automation using accessibility snapshots instead of screenshots
Google's universal MCP server supporting PostgreSQL, MySQL, MongoDB, Redis, and 10+ databases
Official GitHub integration for repos, issues, PRs, and CI/CD workflows