A local-first research workspace.
Desktop · Local RAG · Bring your own model · Open source
KnowNote turns your own documents into a knowledge base you can question, and answers from those documents with a reference back to the passage the answer came from.
It is a desktop application rather than a self-hosted stack: no Docker, no server, no account. Parsing, splitting, embedding and vector search all run inside the app, and the only thing that leaves your machine is the request you send to the model endpoint you configured. If that endpoint is a local server, nothing leaves at all.
The website is the full story: knownote.pages.dev — the mechanism, the limits, and an honest comparison with NotebookLM and AnythingLLM.
- Local retrieval (RAG). Import PDF, Word, PowerPoint and web pages. Text is split into passages and embedded by a model that runs in-process, so retrieval keeps working with the network off.
- Traceable answers. Every answer keeps the passages it was built from, along with where each passage sat in the extracted text — so you can inspect what the answer was actually based on instead of taking it on faith.
- Bring your own model. Any OpenAI-, Anthropic- or Google-compatible endpoint, or a local server such as Ollama. No bundled chat model and no account.
- Notes and mind maps. Save what you concluded as structured notes beside the sources, and turn a notebook into a mind map.
- No deployment. Download, open, start reading. The embedder downloads once and then runs on your machine.
- An MCP export surface. Serve a notebook to a local agent over read-only stdio MCP — the same retrieval path the app uses, as a server, not a second client (see below).
KnowNote can serve your library over MCP on stdio, read-only, so an agent — Claude Code, Codex, Cursor, Claude Desktop — can search the documents you already have instead of asking you to paste them in.
The tools are list_notebooks, search_notebook, get_source, read_document
and search_notes. search_notebook returns passages with provenance
(document id, page, character offsets) rather than bare text, so a claim an agent
makes can be checked against the source. There is no write tool, no tool that
calls a model, and no result that reports a filesystem path — that is what makes
this surface safe to grant to an agent reading untrusted documents.
By default the server uses the same library as the desktop app. Point it at a
different profile with KNOWNOTE_DATA_DIR=/path/to/profile.
Written down because the alternative is that you find out after installing.
- Audio upload and transcription, quiz generation and slide generation are in development. They are not in any release.
- There is no Linux build, and the macOS build is Apple Silicon only.
- Builds are unsigned and not notarised — see the install steps below.
- No accounts, no sync, no collaboration and no telemetry: KnowNote is a single-user desktop tool.
Download the build for your platform from GitHub Releases:
- Windows:
knownote-{version}-setup.exe - macOS (Apple Silicon):
knownote-{version}-arm64.dmg
The builds are unsigned. There is no Apple Developer ID certificate in the release pipeline, so macOS refuses to launch the app on first run and Windows SmartScreen flags the installer. Neither means the download is broken — both are one-time prompts, and the steps below clear them.
-
Open the
.dmgand drag KnowNote into Applications. -
Clear the quarantine flag once:
sudo xattr -rd com.apple.quarantine /Applications/KnowNote.app
-
Launch it as usual.
Intel Macs are not built at the moment — the release ships an arm64 build only.
Without step 2, macOS reports "KnowNote is damaged and can't be opened" or "Apple cannot check it for malicious software". Only run this command on an app taken from this repository's Releases page.
If SmartScreen shows "Windows protected your PC", choose More info → Run anyway.
Nothing is configured out of the box: open Settings, add at least one model connection under Models (any OpenAI-, Anthropic- or Google-compatible endpoint, or a local server such as Ollama), then start asking questions. Notebooks, notes and embeddings all stay on your machine.
git clone https://github.com/MrSibe/KnowNote.git
cd KnowNote
npm install
npm run devCONTRIBUTING.md has the full command list, the Node version CI uses, and the checks that are gates before a pull request.
A short version. The website goes further on local RAG and citations, and DESIGN.md covers the interface.
- Shell — Electron with React, TypeScript and TailwindCSS, bundled by electron-vite. Tiptap for the note editor.
- Parsing —
pdfjs-dist,mammoth,officeparserandturndown. Each format keeps the structure it has: page boundaries, headings, slides. - Splitting — passages of roughly 500 characters with about 50 characters of overlap. Each passage records its start and end offset in the extracted text, and that is what lets a citation point at a passage rather than a file.
- Embedding —
Xenova/multilingual-e5-smallthrough ONNX, running in the Electron main process. 384 dimensions,q8, the revision pinned, and remote model loading disabled. Downloaded on demand and cached on disk. - Storage — SQLite with
sqlite-vec, through Drizzle ORM. Each notebook gets its own vector table carrying its own width, so vectors produced by different embedding spaces are never compared. - Models — the chat model is whatever endpoint you configure; it is not part of the application.
KnowNote/
├── src/
│ ├── main/ # Electron main process
│ │ ├── db/ # Database configuration and schema
│ │ ├── services/ # Core logic (document parsing, RAG, etc.)
│ │ └── models/ # Model connection resolution and API protocol adapters
│ ├── renderer/ # React renderer process
│ ├── preload/ # Electron preload scripts
│ └── shared/ # Shared types and utilities
├── resources/ # App resources (icons, etc.)
├── build/ # Build configuration
└── out/ # Build output
Issues, discussions and pull requests are all welcome. If you have ideas about learning workflows, knowledge visualization, or the model-connection layer, they are especially useful. See CONTRIBUTING.md before you start.
GPL-3.0. See LICENSE.
- Google NotebookLM — inspiration for the workflow
- Electron — cross-platform desktop framework
- React — UI framework
- SQLite & sqlite-vec — local storage and vector retrieval
If this project resonates with you, feel free to try it, star it, or leave feedback. Thanks for checking it out 🙏
Built with ❤️ by @MrSibe
