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 »
📚 Get Started
·
📖 User Guide
·
✨ Features
·
🚀 Deploy
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 16+ 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
Learn more about our project at https://www.open-notebook.ai
If you're upgrading from a previous version, please note:
- 🏷️ Docker tags have changed: The
latesttag is now frozen at the last Streamlit version - 🆕 Use
v1-latesttag for the new React/Next.js version (recommended) - 🔌 Port 5055 required: You must expose port 5055 for the API to work
- 📖 Read the migration guide: See MIGRATION.md for detailed upgrade instructions
New users: You can ignore this notice and proceed with the Quick Start below using the v1-latest-single tag.
| Feature | Open Notebook | Google Notebook LM | Advantage |
|---|---|---|---|
| Privacy & Control | Self-hosted, your data | Google cloud only | Complete data sovereignty |
| AI Provider Choice | 16+ providers (OpenAI, Anthropic, Ollama, LM Studio, etc.) | Google models only | Flexibility and cost optimization |
| Podcast Speakers | 1-4 speakers with custom profiles | 2 speakers only | Extreme flexibility |
| Context Control | 3 granular levels | All-or-nothing | Privacy and performance tuning |
| Content Transformations | Custom and built-in | Limited options | Unlimited processing power |
| API Access | Full REST API | No API | Complete automation |
| Deployment | Docker, cloud, or local | Google hosted only | Deploy anywhere |
| Citations | Comprehensive with sources | Basic references | Research integrity |
| Customization | Open source, fully customizable | Closed system | Unlimited extensibility |
| Cost | Pay only for AI usage | Monthly subscription + usage | Transparent and controllable |
Why Choose Open Notebook?
- 🔒 Privacy First: Your sensitive research stays completely private
- 💰 Cost Control: Choose cheaper AI providers or run locally with Ollama
- 🎙️ Better Podcasts: Full script control and multi-speaker flexibility vs limited 2-speaker deep-dive format
- 🔧 Unlimited Customization: Modify, extend, and integrate as needed
- 🌐 No Vendor Lock-in: Switch providers, deploy anywhere, own your data
Docker Images Available:
- Docker Hub:
lfnovo/open_notebook:v1-latest-single - GitHub Container Registry:
ghcr.io/lfnovo/open-notebook:v1-latest-single
Both registries contain identical images - choose whichever you prefer!
|
Perfect if Docker runs on the same computer where you'll access Open Notebook. mkdir open-notebook && cd open-notebook
docker run -d \
--name open-notebook \
-p 8502:8502 -p 5055:5055 \
-v ./notebook_data:/app/data \
-v ./surreal_data:/mydata \
-e OPENAI_API_KEY=your_key_here \
-e SURREAL_URL="ws://localhost:8000/rpc" \
-e SURREAL_USER="root" \
-e SURREAL_PASSWORD="root" \
-e SURREAL_NAMESPACE="open_notebook" \
-e SURREAL_DATABASE="production" \
lfnovo/open_notebook:v1-latest-singleAccess at: http://localhost:8502 |
Use this for servers, Raspberry Pi, NAS, Proxmox, or any remote machine. mkdir open-notebook && cd open-notebook
docker run -d \
--name open-notebook \
-p 8502:8502 -p 5055:5055 \
-v ./notebook_data:/app/data \
-v ./surreal_data:/mydata \
-e OPENAI_API_KEY=your_key_here \
-e API_URL=http://YOUR_SERVER_IP:5055 \
-e SURREAL_URL="ws://localhost:8000/rpc" \
-e SURREAL_USER="root" \
-e SURREAL_PASSWORD="root" \
-e SURREAL_NAMESPACE="open_notebook" \
-e SURREAL_DATABASE="production" \
lfnovo/open_notebook:v1-latest-singleReplace Access at: http://YOUR_SERVER_IP:8502 |
⚠️ Critical Setup Notes:Both ports are required:
- Port 8502: Web interface (what you see in your browser)
- Port 5055: API backend (required for the app to function)
API_URL must match how YOU access the server:
- ✅ Access via
http://192.168.1.100:8502→ setAPI_URL=http://192.168.1.100:5055- ✅ Access via
http://myserver.local:8502→ setAPI_URL=http://myserver.local:5055- ❌ Don't use
localhostfor remote servers - it won't work from other devices!
Create a docker-compose.yml file:
services:
open_notebook:
image: lfnovo/open_notebook:v1-latest-single
# Or use: ghcr.io/lfnovo/open-notebook:v1-latest-single
ports:
- "8502:8502" # Web UI
- "5055:5055" # API (required!)
environment:
- OPENAI_API_KEY=your_key_here
# For remote access, uncomment and set your server IP/domain:
# - API_URL=http://192.168.1.100:5055
# Database connection (required for single-container)
- SURREAL_URL=ws://localhost:8000/rpc
- SURREAL_USER=root
- SURREAL_PASSWORD=root
- SURREAL_NAMESPACE=open_notebook
- SURREAL_DATABASE=production
volumes:
- ./notebook_data:/app/data
- ./surreal_data:/mydata
restart: alwaysStart with: docker compose up -d
What gets created:
open-notebook/
├── docker-compose.yml # Your configuration
├── notebook_data/ # Your notebooks and research content
└── surreal_data/ # Database files
| Problem | Solution |
|---|---|
| "Unable to connect to server" | Set API_URL environment variable to match how you access the server (see remote setup above) |
| Blank page or errors | Ensure BOTH ports (8502 and 5055) are exposed in your docker command |
| Works on server but not from other computers | Don't use localhost in API_URL - use your server's actual IP address |
| "404" or "config endpoint" errors | Don't add /api to API_URL - use just http://your-ip:5055 |
| Still having issues? | Check our 5-minute troubleshooting guide or join Discord |
┌─────────────────────────────────────────────────────────┐
│ Your Browser │
│ Access: http://your-server-ip:8502 │
└────────────────┬────────────────────────────────────────┘
│
▼
┌───────────────┐
│ Port 8502 │ ← Next.js Frontend (what you see)
│ Frontend │
└───────┬───────┘
│ needs to call ↓
▼
┌───────────────┐
│ Port 5055 │ ← FastAPI Backend (handles requests)
│ API │ This is why you need API_URL!
└───────┬───────┘
│
▼
┌───────────────┐
│ SurrealDB │ ← Database (internal, auto-configured)
│ (Port 8000) │
└───────────────┘
Key Point: Your browser loads the frontend from port 8502, but that frontend needs to know where to find the API (port 5055). When accessing remotely, you must tell it explicitly: API_URL=http://your-server-ip:5055
For development or customization:
git clone https://github.com/lfnovo/open-notebook
cd open-notebook
make start-all- 🤖 AI Installation Assistant: We have a CustomGPT built to help you install Open Notebook - it will guide you through each step!
- New to Open Notebook? Start with our Getting Started Guide
- Need installation help? Check our Installation Guide
- Want to see it in action? Try our Quick Start Tutorial
Thanks to the Esperanto library, we support this providers out of the box!
| Provider | LLM Support | Embedding Support | Speech-to-Text | Text-to-Speech |
|---|---|---|---|---|
| OpenAI | ✅ | ✅ | ✅ | ✅ |
| Anthropic | ✅ | ❌ | ❌ | ❌ |
| Groq | ✅ | ❌ | ✅ | ❌ |
| Google (GenAI) | ✅ | ✅ | ❌ | ✅ |
| Vertex AI | ✅ | ✅ | ❌ | ✅ |
| Ollama | ✅ | ✅ | ❌ | ❌ |
| Perplexity | ✅ | ❌ | ❌ | ❌ |
| ElevenLabs | ❌ | ❌ | ✅ | ✅ |
| Azure OpenAI | ✅ | ✅ | ❌ | ❌ |
| Mistral | ✅ | ✅ | ❌ | ❌ |
| DeepSeek | ✅ | ❌ | ❌ | ❌ |
| Voyage | ❌ | ✅ | ❌ | ❌ |
| xAI | ✅ | ❌ | ❌ | ❌ |
| OpenRouter | ✅ | ❌ | ❌ | ❌ |
| OpenAI Compatible* | ✅ | ❌ | ❌ | ❌ |
*Supports LM Studio and any OpenAI-compatible endpoint
- 🔒 Privacy-First: Your data stays under your control - no cloud dependencies
- 🎯 Multi-Notebook Organization: Manage multiple research projects seamlessly
- 📚 Universal Content Support: PDFs, videos, audio, web pages, Office docs, and more
- 🤖 Multi-Model AI Support: 16+ providers including OpenAI, Anthropic, Ollama, Google, LM Studio, and more
- 🎙️ Professional Podcast Generation: Advanced multi-speaker podcasts with Episode Profiles
- 🔍 Intelligent Search: Full-text and vector search across all your content
- 💬 Context-Aware Chat: AI conversations powered by your research materials
- 📝 AI-Assisted Notes: Generate insights or write notes manually
- ⚡ Reasoning Model Support: Full support for thinking models like DeepSeek-R1 and Qwen3
- 🔧 Content Transformations: Powerful customizable actions to summarize and extract insights
- 🌐 Comprehensive REST API: Full programmatic access for custom integrations
- 🔐 Optional Password Protection: Secure public deployments with authentication
- 📊 Fine-Grained Context Control: Choose exactly what to share with AI models
- 📎 Citations: Get answers with proper source citations
- Sources: Manage all your research materials
- Notes: Create manual or AI-generated notes
- Chat: Converse with AI using your content as context
- 📖 Introduction - Learn what Open Notebook offers
- ⚡ Quick Start - Get up and running in 5 minutes
- 🔧 Installation - Comprehensive setup guide
- 🎯 Your First Notebook - Step-by-step tutorial
- 📱 Interface Overview - Understanding the layout
- 📚 Notebooks - Organizing your research
- 📄 Sources - Managing content types
- 📝 Notes - Creating and managing notes
- 💬 Chat - AI conversations
- 🔍 Search - Finding information
- 🎙️ Podcast Generation - Create professional podcasts
- 🔧 Content Transformations - Customize content processing
- 🤖 AI Models - AI model configuration
- 🔧 REST API Reference - Complete API documentation
- 🔐 Security - Password protection and privacy
- 🚀 Deployment - Complete deployment guides for all scenarios
- Live Front-End Updates: Real-time UI updates for smoother experience
- Async Processing: Faster UI through asynchronous content processing
- Cross-Notebook Sources: Reuse research materials across projects
- Bookmark Integration: Connect with your favorite bookmarking apps
- Next.js Frontend: Modern React-based frontend with improved performance
- Comprehensive REST API: Full programmatic access to all functionality
- Multi-Model Support: 16+ AI providers including OpenAI, Anthropic, Ollama, LM Studio
- Advanced Podcast Generator: Professional multi-speaker podcasts with Episode Profiles
- Content Transformations: Powerful customizable actions for content processing
- Enhanced Citations: Improved layout and finer control for source citations
- Multiple Chat Sessions: Manage different conversations within notebooks
See the open issues for a full list of proposed features and known issues.
- 💬 Discord Server - Get help, share ideas, and connect with other users
- 🐛 GitHub Issues - Report bugs and request features
- ⭐ Star this repo - Show your support and help others discover Open Notebook
We welcome contributions! We're especially looking for help with:
- Frontend Development: Help improve our modern Next.js/React UI
- Testing & Bug Fixes: Make Open Notebook more robust
- Feature Development: Build the coolest research tool together
- Documentation: Improve guides and tutorials
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.
Open Notebook is MIT licensed. See the LICENSE file for details.
Luis Novo - @lfnovo
Community Support:
- 💬 Discord Server - Get help, share ideas, and connect with users
- 🐛 GitHub Issues - Report bugs and request features
- 🌐 Website - Learn more about the project
Open Notebook is built on the shoulders of amazing open-source projects:
- Podcast Creator - Advanced podcast generation capabilities
- Surreal Commands - Background job processing
- Content Core - Content processing and management
- Esperanto - Multi-provider AI model abstraction
- Docling - Document processing and parsing

