[![Forks][forks-shield]][forks-url] [![Stargazers][stars-shield]][stars-url] [![Issues][issues-shield]][issues-url] [![MIT License][license-shield]][license-url]
Logo

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

lfnovo%2Fopen-notebook | Trendshift

Deutsch | EspaΓ±ol | franΓ§ais | ζ—₯本θͺž | ν•œκ΅­μ–΄ | PortuguΓͺs | Русский | δΈ­ζ–‡
## A private, multi-model, 100% local, full-featured alternative to Notebook LM ![New Notebook](docs/assets/asset_list.png) 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 Learn more about our project at [https://www.open-notebook.ai](https://www.open-notebook.ai) --- ## πŸ†š Open Notebook vs Google Notebook LM | Feature | Open Notebook | Google Notebook LM | Advantage | |---------|---------------|--------------------|-----------| | **Privacy & Control** | Self-hosted, your data | Google cloud only | Complete data sovereignty | | **AI Provider Choice** | 18+ 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 | | **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** | Basic references (will improve) | Comprehensive with sources | Research integrity | | **Customization** | Open source, fully customizable | Closed system | Unlimited extensibility | | **Cost** | Pay only for AI usage | Free tier + Monthly subscription | 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 ### Built With [![Python][Python]][Python-url] [![Next.js][Next.js]][Next-url] [![React][React]][React-url] [![SurrealDB][SurrealDB]][SurrealDB-url] [![LangChain][LangChain]][LangChain-url] ## πŸš€ Quick Start (2 Minutes) ### Prerequisites - [Docker Desktop](https://www.docker.com/products/docker-desktop/) installed - That's it! (API keys configured later in the UI) ### Step 1: Get docker-compose.yml **Option A:** Download directly ```bash curl -o docker-compose.yml https://raw.githubusercontent.com/lfnovo/open-notebook/main/docker-compose.yml ``` **Option B:** Create the file manually Copy this into a new file called `docker-compose.yml`: ```yaml 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 ``` ### Step 2: Set Your Encryption Key Edit `docker-compose.yml` and change this line: ```yaml - OPEN_NOTEBOOK_ENCRYPTION_KEY=change-me-to-a-secret-string ``` to any secret value (e.g., `my-super-secret-key-123`) ### Step 3: Start Services ```bash docker compose up -d ``` Wait 15-20 seconds, then open: **http://localhost:8502** ### Step 4: Configure AI Provider 1. Go to **Models** and choose your provider (OpenAI, Anthropic, Google, etc.) 2. Click **+ Add Configuration** 3. Paste your API key and other info as needed and click **Add Configuration** 4. Click **Test** to test connection 5. Click **Sync Models** and check models to include 6. Under **Default Model Assignments**, click **Auto-Assign Defaults** or manually specify which models to use for what Done! You're ready to create your first notebook. > **Need an API key?** Get one from: > [OpenAI](https://platform.openai.com/api-keys) Β· [Anthropic](https://console.anthropic.com/) Β· [Google](https://aistudio.google.com/) Β· [Groq](https://console.groq.com/) (free tier) > **Want free local AI?** See [examples/docker-compose-ollama.yml](examples/) for Ollama setup --- ### πŸ“š More Installation Options - **[With Ollama (Free Local AI)](examples/docker-compose-ollama.yml)** - Run models locally without API costs - **[From Source (Developers)](docs/1-INSTALLATION/from-source.md)** - For development and contributions - **[Complete Installation Guide](docs/1-INSTALLATION/index.md)** - All deployment scenarios --- ### πŸ“– Need Help? - **πŸ€– AI Installation Assistant**: [CustomGPT to help you install](https://chatgpt.com/g/g-68776e2765b48191bd1bae3f30212631-open-notebook-installation-assistant) - **πŸ†˜ Troubleshooting**: [5-minute troubleshooting guide](docs/6-TROUBLESHOOTING/quick-fixes.md) - **πŸ’¬ Community Support**: [Discord Server](https://discord.gg/37XJPXfz2w) - **πŸ› Report Issues**: [GitHub Issues](https://github.com/lfnovo/open-notebook/issues) --- ## Star History [![Star History Chart](https://star-history.dera.page/svg?repos=lfnovo/open-notebook&type=date&legend=top-left)](https://star-history.dera.page/#lfnovo/open-notebook&type=date&legend=top-left) ## Provider Support Matrix Thanks to the [Esperanto](https://github.com/lfnovo/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 | βœ… | βœ… | ❌ | ❌ | | oMLX | βœ… | βœ… | ❌ | ❌ | | Perplexity | βœ… | ❌ | ❌ | ❌ | | ElevenLabs | ❌ | ❌ | βœ… | βœ… | | Deepgram | ❌ | ❌ | βœ… | βœ… | | Azure OpenAI | βœ… | βœ… | βœ… | βœ… | | Mistral | βœ… | βœ… | βœ… | βœ… | | DeepSeek | βœ… | ❌ | ❌ | ❌ | | Cohere | βœ… | βœ… | ❌ | ❌ | | Voyage | ❌ | βœ… | ❌ | ❌ | | xAI | βœ… | ❌ | ❌ | βœ… | | OpenRouter | βœ… | βœ… | βœ… | βœ… | | DashScope (Qwen) | βœ… | ❌ | ❌ | ❌ | | MiniMax | βœ… | ❌ | ❌ | ❌ | | Novita | βœ… | ❌ | ❌ | ❌ | | PayPerQ (PPQ) | βœ… | βœ… | βœ… | βœ… | | OpenAI Compatible* | βœ… | βœ… | βœ… | βœ… | *Supports LM Studio and any OpenAI-compatible endpoint. Prefer the native **oMLX** provider for [oMLX](https://omlx.ai/) (Apple Silicon); see [docs/5-CONFIGURATION/omlx.md](docs/5-CONFIGURATION/omlx.md). ## ✨ Key Features ### Core Capabilities - **πŸ”’ 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**: 18+ 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 ### Advanced Features - **⚑ 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 [![API Docs](https://img.shields.io/badge/API-Documentation-blue?style=flat-square)](http://localhost:5055/docs) - **πŸ” 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 ## Podcast Feature [![Check out our podcast sample](https://img.youtube.com/vi/D-760MlGwaI/0.jpg)](https://www.youtube.com/watch?v=D-760MlGwaI) ## πŸ“š Documentation ### Getting Started - **[πŸ“– Introduction](docs/0-START-HERE/index.md)** - Learn what Open Notebook offers - **[⚑ Quick Start with OpenAI](docs/0-START-HERE/quick-start-openai.md)** - Get up and running in 5 minutes - **[πŸ”§ Installation](docs/1-INSTALLATION/index.md)** - Comprehensive setup guide - **[🎯 Run It Fully Local](docs/0-START-HERE/quick-start-local.md)** - Ollama/LM Studio, completely private ### User Guide - **[πŸ“± Interface Overview](docs/3-USER-GUIDE/interface-overview.md)** - Understanding the layout - **[πŸ“š Notebooks, Sources & Notes](docs/2-CORE-CONCEPTS/notebooks-sources-notes.md)** - Organizing your research - **[πŸ“„ Adding Sources](docs/3-USER-GUIDE/adding-sources.md)** - Managing content types - **[πŸ“ Working with Notes](docs/3-USER-GUIDE/working-with-notes.md)** - Creating and managing notes - **[πŸ’¬ Chatting Effectively](docs/3-USER-GUIDE/chat-effectively.md)** - AI conversations - **[πŸ” Search](docs/3-USER-GUIDE/search.md)** - Finding information ### Advanced Topics - **[πŸŽ™οΈ Podcast Generation](docs/2-CORE-CONCEPTS/podcasts-explained.md)** - Create professional podcasts - **[πŸ”§ Content Transformations](docs/3-USER-GUIDE/transformations.md)** - Customize content processing - **[πŸ€– AI Models](docs/4-AI-PROVIDERS/index.md)** - AI model configuration - **[πŸ”Œ MCP Integration](docs/5-CONFIGURATION/mcp-integration.md)** - Connect with Claude Desktop, VS Code and other MCP clients - **[πŸ”§ REST API Reference](docs/7-DEVELOPMENT/api-reference.md)** - Complete API documentation - **[πŸ” Security](docs/5-CONFIGURATION/security.md)** - Password protection and privacy - **[πŸš€ Deployment](docs/1-INSTALLATION/index.md)** - Complete deployment guides for all scenarios - **[🧭 Vision & Principles](VISION.md)** - What Open Notebook is, and where it's going - **[πŸ› οΈ Developer Docs](docs/7-DEVELOPMENT/index.md)** - Architecture, setup, contributing, decision records

(back to top)

## πŸ—ΊοΈ Roadmap ### Upcoming Features - **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 ### Recently Completed βœ… - **Next.js Frontend**: Modern React-based frontend with improved performance - **Comprehensive REST API**: Full programmatic access to all functionality - **Multi-Model Support**: 18+ 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 Explore [GitHub Discussions](https://github.com/lfnovo/open-notebook/discussions/categories/ideas) for proposed features and product ideas, and [open Issues](https://github.com/lfnovo/open-notebook/issues) for known bugs and approved work.

(back to top)

## πŸ“– Need Help? - **πŸ€– AI Installation Assistant**: We have a [CustomGPT built to help you install Open Notebook](https://chatgpt.com/g/g-68776e2765b48191bd1bae3f30212631-open-notebook-installation-assistant) - it will guide you through each step! - **New to Open Notebook?** Start with our [Getting Started Guide](docs/0-START-HERE/index.md) - **Need installation help?** Check our [Installation Guide](docs/1-INSTALLATION/index.md) - **Want to see it in action?** Try our [Quick Start Tutorial](docs/0-START-HERE/index.md) ## 🀝 Community & Contributing ### Join the Community - πŸ’¬ **[Discord Server](https://discord.gg/37XJPXfz2w)** - Get help, share ideas, and connect with other users - 𝕏 **[Follow @lfnovo on X](https://x.com/lfnovo)** - Project updates and news from the maintainer - πŸ’‘ **[GitHub Discussions](https://github.com/lfnovo/open-notebook/discussions)** - Ask questions and shape features, product direction, design, and architecture - πŸ› **[GitHub Issues](https://github.com/lfnovo/open-notebook/issues)** - Report reproducible bugs and find approved work - ⭐ **Star this repo** - Show your support and help others discover Open Notebook ### Contributing 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](CONTRIBUTING.md) for detailed information on how to get started, including our guidelines for [AI-assisted contributions](docs/7-DEVELOPMENT/contributing.md#ai-assisted-and-agent-generated-prs). To understand what we're building (and what we'll say no to), read [VISION.md](VISION.md).

(back to top)

## πŸ“„ License Open Notebook is MIT licensed. See the [LICENSE](LICENSE) file for details. **Community Support**: - πŸ’¬ [Discord Server](https://discord.gg/37XJPXfz2w) - Get help, share ideas, and connect with users - 𝕏 [Follow @lfnovo on X](https://x.com/lfnovo) - Project updates and news from the maintainer - πŸ’‘ [GitHub Discussions](https://github.com/lfnovo/open-notebook/discussions) - Ask questions and shape ideas - πŸ› [GitHub Issues](https://github.com/lfnovo/open-notebook/issues) - Report reproducible bugs and find approved work - 🌐 [Website](https://www.open-notebook.ai) - Learn more about the project

(back to top)

[contributors-shield]: https://img.shields.io/github/contributors/lfnovo/open-notebook.svg?style=for-the-badge [contributors-url]: https://github.com/lfnovo/open-notebook/graphs/contributors [forks-shield]: https://img.shields.io/github/forks/lfnovo/open-notebook.svg?style=for-the-badge [forks-url]: https://github.com/lfnovo/open-notebook/network/members [stars-shield]: https://img.shields.io/github/stars/lfnovo/open-notebook.svg?style=for-the-badge [stars-url]: https://github.com/lfnovo/open-notebook/stargazers [issues-shield]: https://img.shields.io/github/issues/lfnovo/open-notebook.svg?style=for-the-badge [issues-url]: https://github.com/lfnovo/open-notebook/issues [license-shield]: https://img.shields.io/github/license/lfnovo/open-notebook.svg?style=for-the-badge [license-url]: https://github.com/lfnovo/open-notebook/blob/master/LICENSE.txt [linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge&logo=linkedin&colorB=555 [linkedin-url]: https://linkedin.com/in/lfnovo [product-screenshot]: images/screenshot.png [Next.js]: https://img.shields.io/badge/Next.js-000000?style=for-the-badge&logo=next.js&logoColor=white [Next-url]: https://nextjs.org/ [React]: https://img.shields.io/badge/React-61DAFB?style=for-the-badge&logo=react&logoColor=black [React-url]: https://reactjs.org/ [Python]: https://img.shields.io/badge/Python-3776AB?style=for-the-badge&logo=python&logoColor=white [Python-url]: https://www.python.org/ [LangChain]: https://img.shields.io/badge/LangChain-3A3A3A?style=for-the-badge&logo=chainlink&logoColor=white [LangChain-url]: https://www.langchain.com/ [SurrealDB]: https://img.shields.io/badge/SurrealDB-FF5E00?style=for-the-badge&logo=databricks&logoColor=white [SurrealDB-url]: https://surrealdb.com/