Skip to content

Latest commit

 

History

218 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

KnowNote

A local-first research workspace.

Research your documents. Trust every answer.

Desktop · Local RAG · Bring your own model · Open source

GitHub release GitHub stars License GitHub issues

English | 简体中文


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.

Preview

KnowNote main interface

Three-column layout: Knowledge Library · AI Q&A · Note Output

What it does

  • 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).

Use it from an agent (MCP)

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.

// your MCP client's config
{
  "mcpServers": {
    "knownote": {
      "command": "/path/to/knownote",
      "args": ["--mcp"]
    }
  }
}

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.

What is not here yet

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.

Quick start

Install

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.

macOS

  1. Open the .dmg and drag KnowNote into Applications.

  2. Clear the quarantine flag once:

    sudo xattr -rd com.apple.quarantine /Applications/KnowNote.app
  3. 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.

Windows

If SmartScreen shows "Windows protected your PC", choose More info → Run anyway.

First run

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.

Development

git clone https://github.com/MrSibe/KnowNote.git
cd KnowNote
npm install
npm run dev

CONTRIBUTING.md has the full command list, the Node version CI uses, and the checks that are gates before a pull request.

Architecture

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, officeparser and turndown. 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-small through 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

Contributing

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.

License

GPL-3.0. See LICENSE.

Acknowledgments

  • Google NotebookLM — inspiration for the workflow
  • Electron — cross-platform desktop framework
  • React — UI framework
  • SQLite & sqlite-vec — local storage and vector retrieval

Star History

Star History Chart

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

About

A local-first AI knowledge base & NotebookLM alternative built with Electron. More convenient, more lightweight, and understands you better!

Topics

Resources

Contributing

Stars

1.1k stars

Watchers

12 watching

Forks

Releases

Used by

Contributors

Languages