A local, open-source alternative to NotebookLM. Chat with your documents using any LLM.
Memorwise
An open-source, local-first alternative to NotebookLM. Drop in PDFs, images, audio, video, URLs, or YouTube links. Memorwise chunks and embeds them on your machine, then lets you chat with the material using the LLM provider you prefer.
Get Started
npx memorwise
That's it. The installer clones the repo, installs dependencies, starts the server, and opens your browser to http://localhost:4747. Head to Settings (gear icon), connect at least one LLM provider, create a notebook, add sources, and start chatting.
You can also visit local.memorwise.com โ it auto-detects and redirects to your running instance.
Requirements: Node.js 22.13+ or 24+ and git
Prefer to do it manually?
git clone https://github.com/robzilla1738/Memorwise.git cd Memorwise npm install npm run dev
Then open http://localhost:4747.
Connecting an LLM Provider
Open Settings โ Providers. Pick at least one โ you can always add more later.
| Provider | Setup | |----------|-------| | Ollama | Install Ollama, run ollama serve, then ollama pull llama3.1 | | LM Studio | Download LM Studio, load a model, start the local server | | OpenAI | Paste your API key from platform.openai.com | | Anthropic | Paste your API key from console.anthropic.com | | Gemini | Paste your API key from aistudio.google.com | | Groq | Paste your API key from console.groq.com | | Mistral | Paste your API key from console.mistral.ai | | OpenRouter | Paste your API key from openrouter.ai |
Mix and match providers per task โ use whatever combination makes sense for you:
- Chat โ Any provider (e.g., OpenAI GPT-5.4, Claude, local Ollama model)
- Embeddings โ Local model recommended (e.g., Ollama
nomic-embed-text) - Transcription โ OpenAI Whisper, Groq Whisper, or Local Whisper
- Text-to-Speech โ OpenAI voices or Kokoro (local, free)
What You Can Do
- Chat with your documents โ RAG-powered Q&A with source citations
- 8 LLM providers โ Ollama, OpenAI, Anthropic, Gemini, Groq, Mistral, OpenRouter, LM Studio
- 20+ file formats โ PDF, DOCX, XLSX, images (OCR), audio/video (Whisper), URLs, YouTube
- Knowledge graph โ AI-extracted concepts showing how your sources connect
- Study tools โ Flashcards, quizzes, study guides, and summaries, all saved per notebook
- Audio overview โ Generate a podcast-style multi-speaker discussion from your documents
- Source-focused chat โ Drill into a single source for deeper conversation
- Notes โ Markdown editor with backlinks and templates
- Per-task providers โ Different models for chat, embeddings, transcription, and TTS
- Completely local โ All data lives on your machine. No cloud. No account.
Adding Sources
| Source type | How | |------------|-----| | Files | Click "+ Add sources" and select files (PDF, DOCX, images, audio, video) | | URLs | Paste any web URL into the URL input | | YouTube | Paste a YouTube link (transcript is pulled automatically) |
Sources are chunked, embedded, and indexed on upload. Images go through local OCR via Tesseract.js. Audio and video are transcribed with Whisper.
Safety Limits
Memorwise runs locally, but imported content is still treated as untrusted.
- URL imports only fetch public
httporhttpsaddresses. Localhost, private networks, link-local addresses, and IPv4-in-IPv6 private forms are blocked. - File uploads stream to disk and are capped at 500MB per file.
- PDF text extraction is capped at 50MB because the parser needs an in-memory buffer.
- Chat context reads use bounded file prefixes, so a large source cannot force an oversized context buffer.
- Kokoro TTS listens on
127.0.0.1by default. Its request body and text length are capped. UseKOKOROHOSTorKOKOROMAXTEXTCHARSonly when you need to change that behavior.
Optional Dependencies
Everything below is optional โ only install what you need:
| Tool | What it enables | Install | |------|----------------|---------| | Ollama | Run LLMs locally | ollama.com | | LM Studio | Run LLMs locally (GUI) | lmstudio.ai | | ffmpeg | Video file transcription | brew install ffmpeg (macOS) / apt install ffmpeg (Linux) / choco install ffmpeg (Windows) | | espeak-ng | Kokoro local TTS | brew install espeak-ng (macOS) / apt install espeak-ng (Linux) / espeak-ng releases (Windows) |
Data Storage
All your data stays local in .memorwise/ at the project root:
.memorwise/
โโโ memorwise.db โ SQLite database
โโโ lancedb/ โ Vector embeddings
โโโ sources/ โ Uploaded files
โโโ whisper-models/ โ Local Whisper models (if used)
Want to store data somewhere else? Set the MEMORWISEDATADIR environment variable:
MEMORWISEDATADIR=/path/to/data npm run dev
Local TTS with Kokoro (Optional)
Kokoro is a small (82M parameter) text-to-speech model that runs on your machine. It powers Audio Overview when you want generated podcast audio without an OpenAI key.
Quick setup:
./scripts/setup-kokoro.sh
This handles Python 3.12, espeak-ng, the virtual environment, and all dependencies.
Manual setup
# 1. Install Python 3.12 (Kokoro doesn't support 3.13 yet)
brew install python@3.12 # macOS
sudo apt install python3.12 # Linux
2. Install espeak-ng
brew install espeak-ng # macOS
sudo apt install espeak-ng # Linux
3. Create a virtual environment
python3.12 -m venv .kokoro-venv
4. Install dependencies
source .kokoro-venv/bin/activate
pip install kokoro>=0.9.2 soundfile flask
Start the Kokoro server:
source .kokoro-venv/bin/activate python scripts/kokoro-server.py
Then in Memorwise: Settings โ Audio โ Kokoro (Local) โ pick a voice โ generate an Audio Overview.
Kokoro runs in a separate terminal. You only need it when generating audio.
Desktop App (Optional)
Add Memorwise to your Dock/app menu so you can launch it with a click:
./scripts/create-desktop-app.sh
macOS: Creates Memorwise.app in /Applications. Drag it to your Dock. Linux: Creates a .desktop launcher in your app menu.
The app automatically starts the server if it's not already running, waits for it to be ready, then opens your browser.
MCP Server (Claude Code / Cursor)
Memorwise ships with an MCP server so AI coding assistants can read, search, and interact with your notebooks directly.
Claude Code โ add to ~/.claude.json or .claude/settings.json:
{ "mcpServers": { "memorwise": { "command": "node", "args": ["/path/to/memorwise/mcp-server.js"] } } }
Cursor โ add to .cursor/mcp.json:
{ "mcpServers": { "memorwise": { "command": "node", "args": ["/path/to/memorwise/mcp-server.js"] } } }
No extra setup โ it uses node directly with the project's TypeScript compiler.
35 tools across 12 categories:
| Category | Tools | |----------|-------| | Notebooks | list, create, delete, get | | Sources | list, add URL, add text, delete, get content | | Chat | ask question (RAG), get context, search | | Notes | list, create, update, delete, get | | Generate | summary, quiz, flashcards, study guide, suggestions | | Tags | list, create, assign | | Folders | list, create | | Chat History | list sessions, get messages | | Generations | list saved outputs | | Settings | get/set provider, set model | | Graph | get knowledge graph | | Export | full notebook export |
Production Build
npm run build
npm start
โ http://localhost:4747
Tech Stack
Next.js 15 ยท TypeScript ยท React 19 ยท Tailwind CSS v4 ยท Framer Motion ยท Zustand ยท SQLite (better-sqlite3) ยท LanceDB ยท Tesseract.js
License
MIT