diff --git a/README.en.md b/README.en.md new file mode 100644 index 0000000..4fe9418 --- /dev/null +++ b/README.en.md @@ -0,0 +1,386 @@ + + + +[![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 Β» +
+
+ πŸ“š 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://api.star-history.com/svg?repos=lfnovo/open-notebook&type=date&legend=top-left)](https://www.star-history.com/#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 | βœ… | βœ… | ❌ | ❌ | +| Perplexity | βœ… | ❌ | ❌ | ❌ | +| ElevenLabs | ❌ | ❌ | βœ… | βœ… | +| Deepgram | ❌ | ❌ | ❌ | βœ… | +| Azure OpenAI | βœ… | βœ… | βœ… | βœ… | +| Mistral | βœ… | βœ… | βœ… | βœ… | +| DeepSeek | βœ… | ❌ | ❌ | ❌ | +| Voyage | ❌ | βœ… | ❌ | ❌ | +| xAI | βœ… | ❌ | ❌ | βœ… | +| OpenRouter | βœ… | βœ… | ❌ | ❌ | +| DashScope (Qwen) | βœ… | ❌ | ❌ | ❌ | +| MiniMax | βœ… | ❌ | ❌ | ❌ | +| OpenAI Compatible* | βœ… | βœ… | βœ… | βœ… | + +*Supports LM Studio and any OpenAI-compatible endpoint + +## ✨ 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 + +See the [open issues](https://github.com/lfnovo/open-notebook/issues) for a full list of proposed features and known issues. + +

(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 +- πŸ› **[GitHub Issues](https://github.com/lfnovo/open-notebook/issues)** - Report bugs and request features +- ⭐ **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 +- πŸ› [GitHub Issues](https://github.com/lfnovo/open-notebook/issues) - Report bugs and request features +- 🌐 [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/