An open source, privacy-focused alternative to Google's Notebook LM!
Join our Discord server for help, to share workflow ideas, and suggest features! Checkout our website »
Follow @lfnovo on X for updates
A private, multi-model, 100% local, full-featured alternative to Notebook LM
In a world dominated by Artificial Intelligence, having the ability to think 🧠 and acquire new knowledge 💡, is a skill that should not be a privilege for a few, nor restricted to a single provider.
Open Notebook empowers you to:
🔒 Control your data - Keep your research private and secure
🤖 Choose your AI models - Support for 18+ providers including OpenAI, Anthropic, Ollama, LM Studio, and more
📚 Organize multi-modal content - PDFs, videos, audio, web pages, and more
🎙️ Generate professional podcasts - Advanced multi-speaker podcast generation
🔍 Search intelligently - Full-text and vector search across all your content
💬 Chat with context - AI conversations powered by your research
🌐 Multi-language UI - English, Portuguese, Chinese (Simplified & Traditional), Japanese, Russian, and Bengali support
Option B: Create the file manually
Copy this into a new file called docker-compose.yml:
services:
surrealdb:
image: surrealdb/surrealdb:v2
# Credentials default to root:root for a zero-config local setup. Before
# exposing this instance to a network, set SURREAL_USER / SURREAL_PASSWORD
# in a .env file (see .env.example) — they are applied here and to the
# open_notebook service below, so the two always stay in sync.
# List (exec) form so each interpolated value stays a single argument —
# a password containing spaces would otherwise be split into several.
command: ["start", "--log", "info", "--user", "${SURREAL_USER:-root}", "--pass", "${SURREAL_PASSWORD:-root}", "rocksdb:/mydata/mydatabase.db"]
user: root # Required for bind mounts on Linux
ports:
# Bound to localhost only: the open_notebook service reaches this over
# the internal compose network regardless, so the host port is purely
# for local debugging (e.g. Surrealist, `surreal sql`). Exposing this
# on 0.0.0.0 would let anyone who can reach the host connect with the
# default root:root credentials.
- "127.0.0.1:8000:8000"
volumes:
- ./surreal_data:/mydata
environment:
- SURREAL_EXPERIMENTAL_GRAPHQL=true
restart: always
pull_policy: always
open_notebook:
image: lfnovo/open_notebook:v1-latest
ports:
- "8502:8502" # Web UI
- "5055:5055" # REST API
environment:
# REQUIRED: Change this to your own secret string
# This encrypts your API keys in the database
- OPEN_NOTEBOOK_ENCRYPTION_KEY=change-me-to-a-secret-string
# Database connection. SURREAL_USER / SURREAL_PASSWORD default to root:root
# for local use; override them in a .env file before exposing the instance
# (the same values configure the surrealdb service above).
- SURREAL_URL=ws://surrealdb:8000/rpc
- SURREAL_USER=${SURREAL_USER:-root}
- SURREAL_PASSWORD=${SURREAL_PASSWORD:-root}
- SURREAL_NAMESPACE=open_notebook
- SURREAL_DATABASE=open_notebook
volumes:
- ./notebook_data:/app/data
depends_on:
- surrealdb
restart: always
pull_policy: always
See our Contributing Guide for detailed information on how to get started, including our guidelines for AI-assisted contributions. To understand what we’re building (and what we’ll say no to), read VISION.md.
Open Notebook
An open source, privacy-focused alternative to Google's Notebook LM!
Join our Discord server for help, to share workflow ideas, and suggest features!
Checkout our website »
Follow @lfnovo on X for updates
📚 Get Started · 📖 User Guide · ✨ Features · 🚀 Deploy
A private, multi-model, 100% local, full-featured alternative to Notebook LM
In a world dominated by Artificial Intelligence, having the ability to think 🧠 and acquire new knowledge 💡, is a skill that should not be a privilege for a few, nor restricted to a single provider.
Open Notebook empowers you to:
Learn more about our project at https://www.open-notebook.ai
🆚 Open Notebook vs Google Notebook LM
Why Choose Open Notebook?
Built With
🚀 Quick Start (2 Minutes)
Prerequisites
Step 1: Get docker-compose.yml
Option A: Download directly
Option B: Create the file manually Copy this into a new file called
docker-compose.yml:Step 2: Set Your Encryption Key
Edit
docker-compose.ymland change this line:to any secret value (e.g.,
my-super-secret-key-123)Step 3: Start Services
Wait 15-20 seconds, then open: http://localhost:8502
Step 4: Configure AI Provider
Done! You’re ready to create your first notebook.
📚 More Installation Options
📖 Need Help?
Star History
Provider Support Matrix
Thanks to the Esperanto library, we support this providers out of the box!
*Supports LM Studio and any OpenAI-compatible endpoint. Prefer the native oMLX provider for oMLX (Apple Silicon); see docs/5-CONFIGURATION/omlx.md.
✨ Key Features
Core Capabilities
Advanced Features
Podcast Feature
📚 Documentation
Getting Started
User Guide
Advanced Topics
(back to top)
🗺️ Roadmap
Upcoming Features
Recently Completed ✅
Explore GitHub Discussions for proposed features and product ideas, and open Issues for known bugs and approved work.
(back to top)
📖 Need Help?
🤝 Community & Contributing
Join the Community
Contributing
We welcome contributions! We’re especially looking for help with:
Current Tech Stack: Python, FastAPI, Next.js, React, SurrealDB Future Roadmap: Real-time updates, enhanced async processing
See our Contributing Guide for detailed information on how to get started, including our guidelines for AI-assisted contributions. To understand what we’re building (and what we’ll say no to), read VISION.md.
(back to top)
📄 License
Open Notebook is MIT licensed. See the LICENSE file for details.
Community Support:
(back to top)