robzilla1738
Memorwise
TypeScript

A local, open-source alternative to NotebookLM. Chat with your documents using any LLM.

Last updated Aug 1, 2026
38
Stars
2
Forks
2
Issues
0
Stars/day
Attention Score
43
Language breakdown
TypeScript 89.2%
JavaScript 6.5%
Shell 1.9%
CSS 1.3%
Python 1.0%
โ–ธ Files click to expand
README

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 http or https addresses. 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.1 by default. Its request body and text length are capped. Use KOKOROHOST or KOKOROMAXTEXTCHARS only 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

๐Ÿ”— More in this category

ยฉ 2026 GitRepoTrend ยท robzilla1738/Memorwise ยท Updated daily from GitHub