NoteDiscovery
Memory server
First committed by gamosoft
Published in gamosoft/NoteDiscovery. Publisher page
2,876 GitHub stars
What it is
Your Self-Hosted Knowledge Base
AutoGineer overview, from the brain’s own files
NoteDiscovery is a lightweight, self-hosted note-taking application designed for privacy and local data ownership. It stores information as plain markdown files, ensuring no vendor lock-in. The platform features a modern interface with support for graph visualization, LaTeX math, and drawing sketches. Beyond its role as a personal wiki, it functions as an agent-infrastructure component by providing a built-in Model Context Protocol (MCP) server, allowing AI assistants like Claude or Cursor to read, write, search, and organize notes directly.
How it works
Memory model: Knowledge graph
AutoGineer overview, from the brain’s own files
The system runs as a local server that manages a directory of markdown files. It provides a web interface for manual note-taking and includes an MCP server that exposes these files to AI agents. The backend is built with FastAPI, and the system supports plugins, themes, and custom locales to extend functionality. Users can interact with their notes through the UI or via AI agents using standard MCP commands.
| Folder | Role | Files |
|---|---|---|
| .github | agent-config | 4 |
| docs | docs | 26 |
| documentation | docs | 18 |
| scripts | scripts | 2 |
| backend | folder | 9 |
| frontend | folder | 10 |
| locales | folder | 12 |
| mcp_server | folder | 6 |
| plugins | folder | 3 |
| themes | folder | 12 |
Requirements
Apps: Docker
Runtimes: Python >=3.10
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Google Antigravity, Kiro, OpenCode, Amp, Roo Code, Cline, JetBrains Junie, Devin (ex-Windsurf)
Set it up
- Not scanned by AutoGineerThe author’s MCP configuration (README.md) also starts it in a way AutoGineer does not offer. Read that file: AutoGineer did not scan that path; what it runs is listed under “This brain runs”. https://github.com/gamosoft/NoteDiscovery/blob/81d70a4c5f971aa6a87790a449131aa5fc158a55/README.md
- Not scanned by AutoGineerThe author’s README also describes installing it with Docker Compose. Read its install section: AutoGineer did not scan that path. https://github.com/gamosoft/NoteDiscovery/blob/81d70a4c5f971aa6a87790a449131aa5fc158a55/README.md#quick-setup
- Not scanned by AutoGineerThe author’s README also describes installing it from a clone of its repository. Read its install section: AutoGineer did not scan that path. https://github.com/gamosoft/NoteDiscovery/blob/81d70a4c5f971aa6a87790a449131aa5fc158a55/README.md#quick-setup
- Not scanned by AutoGineerThe author’s README also describes installing it from a clone of its repository. Read its install section: AutoGineer did not scan that path. https://github.com/gamosoft/NoteDiscovery/blob/81d70a4c5f971aa6a87790a449131aa5fc158a55/README.md#running-locally-without-docker
First committed by gamosoft. Published in gamosoft/NoteDiscovery. Licence: MIT License.
Usage
AutoGineer overview, from the brain’s own files
- Self-hosting a private knowledge base for personal or team use.
- Connecting AI agents to local markdown files for RAG or memory tasks.
- Visualizing connections between notes using the built-in graph view.
- Managing project documentation or daily journals with AI-assisted organization.
- “Find all my notes about Docker deployment”
- The AI agent queries the NoteDiscovery MCP server and returns a list of relevant markdown files containing Docker-related information.
- “Create a meeting notes template for tomorrow”
- The AI agent generates a new markdown file in the designated notes folder using the specified template structure.
- “Show me the knowledge graph of my notes”
- The agent retrieves the connection data from the system, allowing the user to visualize linked notes.
Documentation by gamosoft
<p align="center"> <img alt="GitHub Stars" src="https://img.shields.io/github/stars/gamosoft/notediscovery?style=flat"> <img alt="Build" src="https://img.shields.io/github/actions/workflow/status/gamosoft/notediscovery/docker-publish.yml"> <img alt="Latest Version" src="https://img.shields.io/github/v/tag/gamosoft/notediscovery"> <a href="https://github.com/gamosoft/NoteDiscovery/pkgs/container/notediscovery"><img alt="GHCR Pulls" src="https://img.shields.io/endpoint?url=https%3A%2F%2Fraw.githubusercontent.com%2Fgamosoft%2FNoteDiscovery%2Fstats%2Fghcr.json&style=flat"></a> <img alt="License" src="https://img.shields.io/github/license/gamosoft/notediscovery"> </p>
<p align="center"> <img src="docs/logo.svg" alt="NoteDiscovery" width="120"> </p>
<h1 align="center">NoteDiscovery</h1>
<p align="center"><i>Your Self-Hosted Knowledge Base</i></p>
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.
<p align="center"> <img src="docs/carousel-1.jpg" alt="Editor and sidebar" width="32%"> <img src="docs/carousel-2.jpg" alt="Full-text search" width="32%"> <img src="docs/carousel-6.jpg" alt="Graph view of linked notes" width="32%"> </p> <p align="center"><sub><i>Write · Find · Discover</i></sub></p>
🎯 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
<p align="center"> <a href="https://www.notediscovery.com"><img src="docs/website-button.svg" alt="Official Website"></a> <a href="https://gamosoft-notediscovery-demo.hf.space"><img src="docs/demo-button.svg" alt="Try Live Demo"></a> </p> <p align="center"> <a href="https://www.pikapods.com/pods?run=notediscovery"><img src="https://www.pikapods.com/static/run-button.svg" alt="Run on PikaPods"></a> <a href="https://ko-fi.com/gamosoft"><img src="https://ko-fi.com/img/githubbutton_sm.svg" alt="Buy Me a Coffee at ko-fi.com"></a> </p>
✨ 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-*.pngnext 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
<p align="center"> <img src="https://img.shields.io/badge/MCP-Compatible-blueviolet?style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggZD0iTTEyIDJhMTAgMTAgMCAxIDAgMTAgMTBIMTJWMnoiLz48cGF0aCBkPSJNMjEuMTggOC44MmMtLjI4LS40LS43Mi0uODItMS4xOC0uODJoLTNjLS40NiAwLS45LjQyLTEuMTguODItLjI4LjQtLjMyLjk4LS4xMiAxLjQybDEuNSAzYy4yLjQ0LjY2LjcgMS4xMi43aDEuMzZjLjQ2IDAgLjkyLS4yNiAxLjEyLS43bDEuNS0zYy4yLS40NC4xNi0xLjAyLS4xMi0xLjQyeiIvPjwvc3ZnPg==" alt="MCP Compatible"> <img src="https://img.shields.io/badge/Works%20with-Claude-orange?style=for-the-badge" alt="Works with Claude"> <img src="https://img.shields.io/badge/Works%20with-Cursor-blue?style=for-the-badge" alt="Works with Cursor"> </p>
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"]
}
}
}🌐 Prefer a URL? Set
MCP_ENABLED=trueand point your client athttp://your-server:8000/mcp(Streamable HTTP).💡 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
<p align="center"> <a href="https://www.youtube.com/watch?v=qur5uemWeJA"> <img src="https://img.youtube.com/vi/qur5uemWeJA/maxresdefault.jpg" alt="Watch a short tour" width="720"> </a> </p> <p align="center"><i>▶ Small walkthrough — sharing, favorites, search, backlinks, and more</i></p>
🚀 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:latestWindows (PowerShell):
mkdir notediscovery\data; cd notediscovery
docker run -d --name notediscovery -p 8000:8000 `
-v ${PWD}/data:/app/data `
ghcr.io/gamosoft/notediscovery:latestOpen 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 -dWindows (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 -dOption 2: Build from source (for development)
git clone https://github.com/gamosoft/notediscovery.git
cd notediscovery
docker-compose up -dSee 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:8000Requirements:
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:
Map the volume in your docker-compose or docker run command
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
<a href="https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/svg/notediscovery.svg" target="_blank"> <img src="https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons@master/svg/notediscovery.svg" alt="NoteDiscovery Icon" width="64" height="64"> </a>
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: falseinconfig.yamlPerfect 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/folderNo data is sent to external services
Regular backups are recommended
Best Practices
Run on
localhostor a private network onlyUse 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
CONTRIBUTING.md
Contributing to NoteDiscovery
Thank you for your interest in contributing to NoteDiscovery! 🎉
This document provides guidelines and expectations for contributing to the project. Please read through this before submitting pull requests or opening issues.
🤝 Our Philosophy
NoteDiscovery is designed to be:
Lightweight - Fast, minimal dependencies, quick to deploy
Simple - Easy to understand, maintain, and customize
Self-hosted - Complete control over your data, no external dependencies
Privacy-focused - Your notes stay on your server
When considering contributions, we prioritize:
Maintaining simplicity and ease of use
Keeping the codebase maintainable
Preserving the lightweight nature of the application
Staying true to the self-hosted, privacy-first mission
📋 Before You Start
Discuss Major Changes First
Before submitting a pull request for a major feature or significant change, please:
Open an issue first to discuss the idea
Wait for feedback from maintainers
Get approval before investing time in implementation
This helps ensure that:
Your effort isn't wasted if the feature doesn't align with project goals
We can discuss the best approach together
Multiple people aren't working on the same thing
The feature fits well with the existing architecture
What Counts as a "Major Change"?
New features that add significant functionality
Changes to core architecture or data models
New dependencies or significant changes to existing ones
UI/UX overhauls or major design changes
Changes to the plugin or theme system architecture
Breaking changes to the API
AI-Assisted Contributions
AI tools are welcome here — parts of NoteDiscovery are written with them. What matters is that a human has understood and verified the change before it arrives:
Describe what the code actually does - The title and description should match the diff. A mismatch is the quickest way to stall a review.
Run it - Generated changes should be tested locally, not just read.
Keep it focused - One concern per pull request. Unrelated edits bundled in — logging tweaks, formatting, drive-by refactors — will be asked to come out.
Be ready to explain it - If a reviewer asks why a change is correct, "the model suggested it" isn't an answer.
Small, well-scoped fixes are genuinely appreciated. Volume of generated patches isn't a goal in itself.
🚀 How to Contribute
1. Fork and Clone
git clone https://github.com/YOUR_USERNAME/notediscovery.git
cd notediscovery2. Create a Branch
git checkout -b feature/your-feature-name
# or
git checkout -b fix/your-bug-fix3. Make Your Changes
Follow the existing code style
Write clear, readable code
Add comments for complex logic
Test your changes locally
Update documentation if needed
4. Test Your Changes
# Install dependencies
pip install -r requirements.txt
# Run the application
python run.py
# Or use Docker
docker-compose up5. Commit Your Changes
Write clear, descriptive commit messages:
git commit -m "Add dark mode toggle to settings"6. Push and Create a Pull Request
git push origin feature/your-feature-nameThen create a pull request on GitHub with:
A clear title and description
Reference to any related issues
Screenshots (if UI changes)
Testing notes
📝 Code Style Guidelines
Python
Follow PEP 8 style guide
Use type hints where appropriate
Keep functions focused and small
Add docstrings for public functions/classes
JavaScript
Use modern ES6+ syntax
Keep functions focused and small
Comment complex logic
General
Keep code simple and readable
Avoid over-engineering
Prefer explicit over implicit
Write self-documenting code when possible
🎨 Contributing Themes
Themes should:
Follow the existing theme structure (see
themes/directory)Be well-tested across different content types
Include proper contrast ratios for accessibility
Be named descriptively (e.g.,
ocean-blue.css, nottheme1.css)
🔌 Contributing Plugins
Contributed plugins go in plugins/contrib/. That folder ships with the project
but is never loaded — users install one by copying it into plugins/. Every
deployment stays lean by default, and a plugin can't break someone who never
asked for it.
A plugin there should:
Be one self-contained file - no packages, no companion modules
Add no dependencies beyond
requirements.txtNeed no core changes - if the existing hooks can't support it, open an issue first
Document itself in a module docstring - what it does, how it's triggered, how to install it, and anything known to be rough
Fail quietly - a plugin that raises is logged and skipped, so don't leave the app depending on it
Please don't add it to documentation/PLUGINS.md. That file covers the plugin
system; the contrib folder is its own index, which is what keeps two plugin
PRs from conflicting. See plugins/contrib/README.md
for the docstring format, and documentation/PLUGINS.md for the hooks, plugin
context, and routes you can build on.
Plugins are promoted into plugins/ and shipped enabled only at the maintainers'
discretion.
🌍 Contributing Translations
NoteDiscovery supports multiple languages through JSON locale files. Adding a new language is easy!
How to Add a New Language
Copy the English locale file:
cp locales/en-US.json locales/xx-XX.jsonUse the appropriate BCP 47 language tag (e.g.,
pt-BR,ja-JP,zh-CN).Update the
_metasection:{ "_meta": { "code": "xx-XX", "name": "Language Name", "flag": "🇽🇽" }, ... }Translate all string values:
Keep the keys exactly as they are (don't translate keys!)
Translate only the values
Preserve
{{placeholders}}- they get replaced with dynamic valuesKeep emoji prefixes like
✓,💡,📂as they are universal
Test your translation:
Restart the application
Go to Settings → Language dropdown
Your new language should appear automatically
Click through the UI to verify translations
Translation Guidelines
Be consistent - Use the same terminology throughout
Match the tone - NoteDiscovery uses friendly, concise language
Preserve formatting - Keep
\nfor newlines in multi-line stringsHandle plurals simply - It uses
{{count}}placeholders (e.g., "hace {{count}}m")Test date formats - Dates are formatted using the browser's
IntlAPI with your locale code
What Gets Translated
| Category | Examples |
|---|---|
| UI Labels | Button text, panel titles, tooltips |
| Messages | Alerts, confirmations, prompts |
| Placeholders | Search box, editor hints |
| Relative times | "just now", "5m ago", "2d ago" |
What Stays in English
Technical terms: "Wikilinks", "Markdown", "HTML"
Keyboard shortcuts in tooltips: "Ctrl+Z", "Esc"
File extensions: ".md", ".json"
📚 Contributing Documentation
Documentation improvements are always welcome! Please:
Keep language clear and concise
Use examples where helpful
Update related documentation when making changes
Check for typos and grammar
❓ When PRs Might Not Be Accepted
Even if your idea is great, a PR might not be accepted if:
It doesn't align with project goals - We aim to keep NoteDiscovery lightweight and simple. Features that add significant complexity or dependencies may not fit.
It wasn't discussed first - Major changes should be discussed in an issue before implementation.
It conflicts with existing work - Sometimes we're already working on similar features or have different plans.
It's too niche - Features that only benefit a very small subset of users might be better as plugins.
It adds unnecessary complexity - We prefer simple, maintainable solutions over complex ones.
It breaks backward compatibility - Without a very good reason, we try to maintain compatibility.
It's generated code that hasn't been verified - Plausible-looking changes that were never run, or whose description doesn't match the diff, will be sent back rather than reviewed line by line.
What to Do If Your PR Isn't Accepted
Don't take it personally! Here are some options:
Fork and maintain your own version - That's the beauty of open source! You can add any features you want in your fork.
Create a plugin - Many features can be implemented as plugins without changing core code.
Revisit later - Project priorities change. What doesn't fit now might fit later.
Discuss alternatives - We're happy to discuss if there's a simpler way to achieve your goal.
🐛 Reporting Bugs
When reporting bugs, please include:
Steps to reproduce
Expected behavior
Actual behavior
Environment (OS, Python version, Docker, etc.)
Error messages or logs
Screenshots if applicable
💡 Suggesting Features
When suggesting features:
Explain the problem you're trying to solve
Describe your proposed solution
Discuss alternatives you've considered
Explain who would benefit from this feature
📞 Getting Help
Open an issue for bugs or feature requests
Check existing issues and documentation first
Be patient and respectful in discussions
📜 Legal Notes
Licensing Contributions
By submitting a pull request, you agree that your contributions will be licensed under the MIT License, the same license that covers the entire project. You retain copyright to your contributions, but grant permission for them to be used, modified, and distributed under the MIT License.
No additional license sections or attribution files are required - the project's MIT License covers all contributions.
🙏 Thank You!
Your contributions, whether code, documentation, bug reports, or feature suggestions, are greatly appreciated. Even if a specific PR isn't merged, your ideas and feedback help make NoteDiscovery better.
Remember: The goal is to build something useful together while keeping the project maintainable and true to its core values. Thank you for understanding! ❤️
121 files · 115 not served here
- .dockerignore (not served here)
- .github/FUNDING.yml (not served here)
- .github/workflows/docker-publish.yml (not served here)
- .github/workflows/ghcr-stats.yml (not served here)
- .github/workflows/hf-space-restart.yml (not served here)
- .gitignore (not served here)
- ATTRIBUTION.md
- CONTRIBUTING.md
- Dockerfile (not served here)
- LICENSE
- OLLAMA-STACK.md
- README.md
- SECURITY.md
- VERSION (not served here)
- backend/__init__.py (not served here)
- backend/export.py (not served here)
- backend/main.py (not served here)
- backend/mcp_http.py (not served here)
- backend/note_index.py (not served here)
- backend/plugins.py (not served here)
- backend/share.py (not served here)
- backend/themes.py (not served here)
- backend/utils.py (not served here)
- config.yaml (not served here)
- docker-compose.ghcr.yml (not served here)
- docker-compose.ollama-stack.yml (not served here)
- docker-compose.yml (not served here)
- docs/CNAME (not served here)
- docs/carousel-1.jpg (not served here)
- docs/carousel-1.webp (not served here)
- docs/carousel-2.jpg (not served here)
- docs/carousel-2.webp (not served here)
- docs/carousel-3.jpg (not served here)
- docs/carousel-3.webp (not served here)
- docs/carousel-4.jpg (not served here)
- docs/carousel-4.webp (not served here)
- docs/carousel-5.jpg (not served here)
- docs/carousel-5.webp (not served here)
- docs/carousel-6.jpg (not served here)
- docs/carousel-6.webp (not served here)
- docs/carousel-7.png (not served here)
- docs/carousel-7.webp (not served here)
- docs/demo-button.svg (not served here)
- docs/favicon.svg (not served here)
- docs/index.html (not served here)
- docs/logo-512.svg (not served here)
- docs/logo-cropped.svg (not served here)
- docs/logo.png (not served here)
- docs/logo.svg (not served here)
- docs/og-image.png (not served here)
- docs/robots.txt (not served here)
- docs/sitemap.xml (not served here)
- docs/website-button.svg (not served here)
- documentation/API.md (not served here)
- documentation/AUTHENTICATION.md (not served here)
- documentation/DRAWING.md (not served here)
- documentation/ENVIRONMENT_VARIABLES.md (not served here)
- documentation/FEATURES.md (not served here)
- documentation/MATHJAX.md (not served here)
- documentation/MCP.md (not served here)
- documentation/MERMAID.md (not served here)
- documentation/PLUGINS.md (not served here)
- documentation/PLUGIN_NOTE_STATISTICS.md (not served here)
- documentation/SHARING.md (not served here)
- documentation/TAGS.md (not served here)
- documentation/TEMPLATES.md (not served here)
- documentation/THEMES.md (not served here)
- documentation/THIRD_PARTY.md (not served here)
- documentation/templates/daily-journal.md (not served here)
- documentation/templates/meeting-notes.md (not served here)
- documentation/templates/project-plan.md (not served here)
- frontend/app.js (not served here)
- frontend/editor-markdown-continue.js (not served here)
- frontend/favicon.svg (not served here)
- frontend/index.html (not served here)
- frontend/login.html (not served here)
- frontend/logo.svg (not served here)
- frontend/manifest.json (not served here)
- frontend/markdown-preview.css (not served here)
- frontend/pikapods-run-button.svg (not served here)
- frontend/sw.js (not served here)
- locales/de-DE.json (not served here)
- locales/en-GB.json (not served here)
- locales/en-US.json (not served here)
- locales/es-ES.json (not served here)
- locales/fr-FR.json (not served here)
- locales/hu-HU.json (not served here)
- locales/it-IT.json (not served here)
- locales/ja-JP.json (not served here)
- locales/pl-PL.json (not served here)
- locales/ru-RU.json (not served here)
- locales/sl-SI.json (not served here)
- locales/zh-CN.json (not served here)
- mcp_server/__init__.py (not served here)
- mcp_server/__main__.py (not served here)
- mcp_server/client.py (not served here)
- mcp_server/config.py (not served here)
- mcp_server/server.py (not served here)
- mcp_server/tools.py (not served here)
- plugins/contrib/README.md (not served here)
- plugins/contrib/search_open_tasks.py (not served here)
- plugins/note_stats.py (not served here)
- pyproject.toml (not served here)
- release.ps1 (not served here)
- render.yaml (not served here)
- requirements.txt (not served here)
- run.py (not served here)
- scripts/vendor_assets.py (not served here)
- scripts/vendor_lock.json (not served here)
- themes/cobalt2.css (not served here)
- themes/dark.css (not served here)
- themes/dracula.css (not served here)
- themes/gruvbox-dark.css (not served here)
- themes/hacker.css (not served here)
- themes/light.css (not served here)
- themes/matcha-light.css (not served here)
- themes/monokai.css (not served here)
- themes/nord.css (not served here)
- themes/ubuntu.css (not served here)
- themes/vs-blue.css (not served here)
- themes/vue-high-contrast.css (not served here)
Advantages
- Complete data ownership with plain markdown files stored on your own server. evidence: README.md
- Built-in MCP server enables direct interaction between AI assistants and your notes. evidence: README.md
- Works offline and on air-gapped networks by serving all browser libraries locally. evidence: README.md
Limitations
- Requires manual configuration and security measures like reverse proxies when exposed to the internet. evidence: README.md
- Authentication is disabled by default and must be manually configured for secure deployments. evidence: README.md
Security
Risk level: No risk found
This brain runs
MCP servers (1)
README.md(notediscovery):docker run --rm -i -e NOTEDISCOVERY_URL=http://host.docker.internal:8000 ghcr.io/gamosoft/notediscovery:latest python -m mcp_server
Attribution and licence
- First committed by
gamosoft
- Declared authors
- NoteDiscovery (declared in pyproject.toml)
- Publisher
- Guillermo Villar (Community)
- Source
- gamosoft/NoteDiscovery · commit 81d70a4
- Licence
- MIT License (files served here)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
- Contributors
- gamosoft, juanlb, lubeda, Leylines-Prism, fbartels
AutoGineer is not affiliated with or endorsed by gamosoft.
Install from source
115 of its files are not served here, so there is no ZIP. gamosoft/NoteDiscovery at 81d70a4