A private AI research and media workspace that runs on your PC

NotebookE turns your documents, links, audio, and video into a searchable knowledge base. Ask questions with source context, organize research in notebooks, and create narrated podcasts or videos from the same material.
The system supports local AI through Ollama and OpenAI-compatible servers alongside cloud providers. Your frontend, API, database, background worker, Edge TTS narration, and video workflow can all run on your own computer.
NotebookE empowers you to:
- 🔒 Control your data - Keep your research private and secure
- 🤖 Use local or cloud AI - Connect Ollama, LM Studio, OpenAI-compatible endpoints, Google, OpenAI, Anthropic, and more
- 📚 Organize multi-modal content - PDFs, videos, audio, web pages, and more
- 🎙️ Generate multi-speaker podcasts - Reusable episode profiles, Eric and Luna presenters, live progress, outline tracking, and downloadable audio
- 🎬 Create videos on your PC - Build scripts, scenes, captions, visuals, narration, and final video from notebook content
- 🗣️ Use Edge TTS narration - Vietnamese voices with improved English technical pronunciation for podcasts and videos
- 🔍 Search intelligently - Full-text and vector search across all your content
- 💬 Chat with context - Stream answers from selected models, keep conversation history, and stop generation at any time
- ⚡ See updates without refreshing - Podcast and video jobs update in real time while background workers process them
- 🌐 Use a multilingual UI - Vietnamese, English, and other supported interface languages
See NotebookE in action
| Notebook workspace | Ask and Search |
|---|---|
![]() | ![]() |
| Podcast production | Video production |
|---|---|
![]() | ![]() |
How the system works
Next.js web app :3000
↓
FastAPI service :5055
↓
SurrealDB :8000 + background command worker
↓
Local/cloud LLMs · Edge TTS · Podcast pipeline · Video pipeline
🆚 NotebookE vs Google Notebook LM
| Feature | NotebookE | Google Notebook LM | Advantage |
|---|---|---|---|
| Privacy & Control | Self-hosted, your data | Google cloud only | Complete data sovereignty |
| AI Provider Choice | Local and cloud models, including Ollama and OpenAI-compatible APIs | Google models only | Flexibility and local processing |
| Podcast Speakers | 1-4 speakers with custom profiles | 2 speakers only | Extreme flexibility |
| Video Generation | Script, scenes, visuals, captions, Edge TTS, and final rendering | Limited | A complete research-to-video workflow on your PC |
| 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 NotebookE?
- 🔒 Privacy First: Your sensitive research stays completely private
- 💰 Cost Control: Choose a cloud provider or run compatible models locally
- 🎙️ Podcast and Video Creation: Reuse your notebook context to produce scripts, speech, and rendered media
- 🔧 Unlimited Customization: Modify, extend, and integrate as needed
- 🌐 No Vendor Lock-in: Switch providers, deploy anywhere, own your data
Built With
🚀 Quick Start
Prerequisites
- Python 3.11+
- Node.js 20+
- Docker Desktop for SurrealDB
- FFmpeg for Podcast and Video rendering
- An AI provider, or a local model server such as Ollama or LM Studio
Step 1: Clone and install
git clone https://github.com/Meranh05/NotebookE.git
cd NotebookE
uv sync
cd frontend && npm install && cd ..
Step 2: Configure the environment
Copy .env.example to .env, set OPEN_NOTEBOOK_ENCRYPTION_KEY, and configure any provider credentials you need. Provider models can also be added later from Models in the web interface.
Step 3: Start NotebookE
Start each service in dependency order:
make database
make api
make worker-start
make frontend
Or start the complete local stack:
make start-all
Open http://localhost:3000. The API runs at http://localhost:5055 and SurrealDB at http://localhost:8000.
The background worker is required for source processing, embeddings, Podcasts, and Videos. Jobs remain queued if the worker is not running.
Docker deployment
For a container-based installation, download the project compose file:
curl -o docker-compose.yml https://raw.githubusercontent.com/Meranh05/NotebookE/main/docker-compose.yml
Set OPEN_NOTEBOOK_ENCRYPTION_KEY in .env, then start the containers:
docker compose up -d
Use docker compose logs -f to follow startup and migration progress. See the installation guide for local AI, storage, and production deployment options.
Configure an AI provider
- Go to Models and choose your provider (OpenAI, Anthropic, Google, etc.)
- Click + Add Configuration
- Paste your API key and other info as needed and click Add Configuration
- Click Test to test connection
- Click Sync Models and check models to include
- Assign the chat, transformation, embedding, and optional media models you want to use
Done! You're ready to create your first notebook.
Need an API key? Get one from: OpenAI · Anthropic · Google · Groq (free tier)
Want free local AI? See examples/docker-compose-ollama.yml for Ollama setup
📚 More Installation Options
- With Ollama (Free Local AI) - Run models locally without API costs
- From Source (Developers) - For development and contributions
- Complete Installation Guide - All deployment scenarios
📖 Need Help?
- 🤖 AI Installation Assistant: CustomGPT to help you install
- 🆘 Troubleshooting: 5-minute troubleshooting guide
- 💬 Community Support: Discord Server
- 🐛 Report Issues: GitHub Issues
Provider Support Matrix
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 | ✅ | ✅ | ❌ | ❌ |
| 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 (Apple Silicon); see 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
- 🎬 Local Video Production: Generate structured scenes, captions, visuals, Edge TTS narration, and rendered videos
- 🔍 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
- ⚡ Live Job Updates: Follow Podcast and Video generation without reloading the page
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
- 🔐 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 and Video Creation
NotebookE uses the same notebook context for both media workflows. Podcast generation supports reusable speaker and episode profiles, while Video generation turns research into planned scenes with synchronized narration and captions. Both workflows run as background jobs and update the interface as progress changes.

📚 Documentation
Getting Started
- 📖 Introduction - Learn what NotebookE offers
- ⚡ Quick Start with OpenAI - Get up and running in 5 minutes
- 🔧 Installation - Comprehensive setup guide
- 🎯 Run It Fully Local - Ollama/LM Studio, completely private
User Guide
- 📱 Interface Overview - Understanding the layout
- 📚 Notebooks, Sources & Notes - Organizing your research
- 📄 Adding Sources - Managing content types
- 📝 Working with Notes - Creating and managing notes
- 💬 Chatting Effectively - AI conversations
- 🔍 Search - Finding information
Advanced Topics
- 🎙️ Podcast Generation - Create professional podcasts
- 🔧 Content Transformations - Customize content processing
- 🤖 AI Models - AI model configuration
- 🔌 MCP Integration - Connect with Claude Desktop, VS Code and other MCP clients
- 🔧 REST API Reference - Complete API documentation
- 🔐 Security - Password protection and privacy
- 🚀 Deployment - Complete deployment guides for all scenarios
- 🧭 Vision & Principles - What NotebookE is, and where it's going
- 🛠️ Developer Docs - Architecture, setup, contributing, decision records
🗺️ Roadmap
Upcoming Features
- Cross-Notebook Sources: Reuse research materials across projects
- Bookmark Integration: Connect with your favorite bookmarking apps
- More Video Templates: Expand reusable landscape and vertical storytelling styles
- Richer Citations: Improve source-level evidence in chat, search, and generated media
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
- Local Video Workflow: Script planning, visual generation, captions, Edge TTS, and rendering
- Live Front-End Updates: Podcast and Video progress refreshes without a full page reload
- Async Processing: Background workers keep long-running AI and media tasks responsive
- 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
📖 Need Help?
- 🤖 AI Installation Assistant: We have a CustomGPT built to help you install NotebookE - it will guide you through each step!
- New to NotebookE? Start with our Getting Started Guide
- Need installation help? Check our Installation Guide
- Want to see it in action? Try our Quick Start Tutorial
🤝 Community & Contributing
Join the Community
- 💬 Discord Server - Get help, share ideas, and connect with other users
- 💡 GitHub Discussions - Ask questions and shape features, product direction, design, and architecture
- 🐛 GitHub Issues - Report reproducible bugs and find approved work
- ⭐ Star this repo - Show your support and help others discover NotebookE
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 NotebookE 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, including our guidelines for AI-assisted contributions. To understand what we're building (and what we'll say no to), read VISION.md.
📄 License
NotebookE is MIT licensed. See the LICENSE file for details.




