NotebookLlama is a fully open-source alternative to NotebookLM, designed for those who want local control over their document analysis. The system leverages LlamaCloud to index and manage data, utilizing a dedicated Llama extraction agent to retrieve information from uploaded files. While the OpenAI API provides the core analytical power for text processing and question answering, ElevenLabs adds a high-quality voice synthesis layer, enabling users to listen to responses or generate complete spoken summaries. The application features a streamlined interface built on Streamlit, allowing you to upload files and interact directly with your materials. The entire codebase is open for inspection and local deployment.
Prerequisites
This project utilizes uv for dependency management. Ensure it is installed on your system before proceeding.
curl -LsSf https://astral.sh/uv/install.sh | shpowershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"For alternative installation methods, please refer to the official uv documentation.
Step-by-Step Guide
1. Clone the Repository
git clone https://github.com/run-llama/notebookllama
cd notebookllama/
2. Install Dependencies
Execute uv sync to install all required packages and set up the environment.
3. Configure API Keys
mv .env.example .env.env file and input the following credentials:OPENAI_API_KEY: Available from the OpenAI platform.ELEVENLABS_API_KEY: Located in your ElevenLabs account settings.LLAMACLOUD_API_KEY: Retrievable from the LlamaCloud dashboard.4. Activate the Virtual Environment
source .venv/bin/activate.\.venv\Scripts\activate5. Initialize LlamaCloud Agent and Pipeline
uv run tools/create_llama_extract_agent.pyuv run tools/create_llama_cloud_index.pytext-embedding-3-small model.6. Start Backend Services
Run docker compose up -d to launch the Postgres and Jaeger containers in the background.
7. Launch the Application
You will need two separate terminal windows for this step:
uv run src/notebookllama/server.pystreamlit run src/notebookllama/Home.pyNote: Ensure
ffmpegis installed on your system, as it is required for audio processing.
Once both services are active, navigate to http://localhost:8501/ in your browser. From here, you can upload documents to begin querying your data or generating audio content.
IndexTTS2 Zero Shot Voice Cloning Beats Benchmarks for Accuracy and Emotion
VibeVoice: Long-Form Multi-Speaker TTS for Natural Dialogue Generation
How to Install Open Notebook: A Guide for Docker and Source Setup
Google Analytics MCP Server: Query GA4 Data With Gemini CLI
FossFLOW: Offline-Ready Isometric Diagram Builder for the Browser
Trae Agent: Run Complex Dev Workflows With Plain English Prompts
ERPNext Open Source ERP: Installation Guide for Accounting and Inventory
SelfyAI: Build Your Own AI Agent as a Virtual World Asset
KVoiceWalk: Clone Any Voice for Kokoro TTS Using Random Walks
GraphGen: Build Knowledge Graphs to Generate Smarter Training Data
SuperCoder: A Terminal-Based Coding Assistant for Searching, Editing, and Debugging
Shendeng VPN: Two Modes to Speed Up Games and Chinese Apps