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.
Puter: An Open-Source Personal Cloud OS for Files, Apps, and Games
Cline AI Coding Assistant for VS Code: Powered by Claude Sonnet
JoyAgent-JDGenie: An Open-Source Multi-Agent System for Direct Report Generation
Claude Code Chat UI: Run Claude Code on Windows Without WSL
Jessibuca Setup Guide: H5 Player Configuration, Decoding Modes, and Troubleshooting
Transformers Library: Installation, Pipeline API, and Model Examples
AgentCPM-GUI: A Local LLM Agent for Navigating Chinese Mobile Apps
Deepwiki MCP Server: Fetch and Convert Wiki Pages to Markdown
Motionity: Free Online Animation Editor with Keyframes and Masks
MCP SuperAssistant: Bring MCP Tools to ChatGPT, Gemini, and Beyond
How to Install Unregistered Apps on Android
Shendeng VPN: Genuine Unlimited Data & High-Speed Gaming Acceleration