To get Open Notebook running on your machine, you can choose between a streamlined Docker deployment or a manual installation from the source code.
# Create a project directory
mkdir open-notebook && cd open-notebook
# Download the configuration files
curl -O https://raw.githubusercontent.com/lfnovo/open-notebook/main/docker-compose.yml
curl -O https://raw.githubusercontent.com/lfnovo/open-notebook/main/.env.example
# Rename the environment file and configure your keys
mv .env.example docker.env
# Edit docker.env to add your API keys.
# Start the application stack
docker compose up -d
# Clone the repository and prepare the environment
git clone https://github.com/lfnovo/open-notebook
cd open-notebook
cp .env.example .env
# Edit the .env file and insert your API keys.
# Install dependencies and launch the services
uv sync
make start-all
Once the setup is complete, navigate to http://localhost:8502 in your browser to begin.
| Method | Target Audience | Difficulty | Pros | Cons |
|---|---|---|---|---|
| Docker (Single Container) | New users and quick testing | Easy | Rapid setup and clean isolation | Limited configuration; harder to debug |
| Docker (Multi-Container) | Production environments | Medium | Scalable and professional configuration | More complex management |
| Source Install | Developers and power users | Advanced | Full control and easier debugging | Requires Python environment expertise |
Open Notebook consists of four primary components working in tandem:
/api/notebooks, /api/sources, /api/notes, and /api/chat.Request Lifecycle:
Browser → Streamlit UI → FastAPI Backend → SurrealDB
↓
Background Worker ← Task Queue
Open Notebook stores its configuration in a .env file (or docker.env for Docker users).
# Security (Recommended for public-facing deployments)
OPEN_NOTEBOOK_PASSWORD=your_secure_password
# Database Configuration
SURREAL_URL="ws://localhost:8000/rpc"
SURREAL_USER="root"
SURREAL_PASSWORD="root"
SURREAL_NAMESPACE="open_notebook"
SURREAL_DATABASE="production"
# Supports language models, embeddings, TTS, and STT
OPENAI_API_KEY=sk-your-key-here
# For high-quality reasoning and language generation
ANTHROPIC_API_KEY=sk-ant-your-key-here
# Large context windows, embeddings, and TTS
GEMINI_API_KEY=your-gemini-key
# Enterprise-grade model access
VERTEX_PROJECT=your-gcp-project-name
GOOGLE_APPLICATION_CREDENTIALS=./google-credentials.json
VERTEX_LOCATION=us-east5
# DeepSeek — Cost-effective processing
DEEPSEEK_API_KEY=your-deepseek-key
# Mistral — European-based models
MISTRAL_API_KEY=your-mistral-key
# Groq — High-speed inference
GROQ_API_KEY=your-groq-key
# xAI (Grok) — Advanced reasoning
XAI_API_KEY=your-xai-key
# ElevenLabs — Premium voice synthesis
ELEVENLABS_API_KEY=your-elevenlabs-key
# Ollama — Support for local models
OLLAMA_API_BASE="http://localhost:11434"
# OpenRouter — Aggregated multi-model access
OPENROUTER_BASE_URL="https://openrouter.ai/api/v1"
OPENROUTER_API_KEY=your-openrouter-key
# Azure OpenAI
AZURE_OPENAI_API_KEY=your-azure-key
AZURE_OPENAI_ENDPOINT=https://your-endpoint.openai.azure.com/
AZURE_OPENAI_API_VERSION="2024-12-01-preview"
AZURE_OPENAI_DEPLOYMENT_NAME=your-deployment-name
# OpenAI-Compatible Services (e.g., LM Studio)
OPENAI_COMPATIBLE_BASE_URL=http://localhost:1234/v1
OPENAI_COMPATIBLE_API_KEY=your-key # Optional
# Firecrawl — Optimized web scraping
FIRECRAWL_API_KEY=your-firecrawl-key
# Jina — Advanced embedding models
JINA_API_KEY=your-jina-key
# Voyage AI — High-performance embeddings
VOYAGE_API_KEY=your-voyage-key
# LangSmith — Monitoring and debugging
LANGCHAIN_TRACING_V2=true
LANGCHAIN_ENDPOINT="https://api.smith.langchain.com"
LANGCHAIN_API_KEY=your-langsmith-key
LANGCHAIN_PROJECT="Open Notebook"
# Install Homebrew if not already installed
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install system dependencies
brew install libmagic
# Install the uv package manager
brew install uv
# Install Docker Desktop
brew install --cask docker
# Update repositories and install dependencies
sudo apt update
sudo apt install -y libmagic-dev python3-dev build-essential
# Install uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install and configure Docker
sudo apt install -y docker.io docker-compose-plugin
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -aG docker $USER
# Install system dependencies
sudo dnf install -y file-devel python3-devel gcc
# Install uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install and configure Docker
sudo dnf install -y docker docker-compose
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -aG docker $USER
git clone https://github.com/lfnovo/open-notebook.git
cd open-notebook
cp .env.example .env
nano .env # Enter your API keys
uv sync
uv pip install python-magic
make database
# Wait approximately 10 seconds for initialization
make start-all
This command starts the following services:
# Separate terminals
make database
make api
make worker
make run
Ideal for individual users or lightweight hosting platforms like PikaPods.
mkdir open-notebook
cd open-notebook
cat > docker-compose.yml << 'EOF'
services:
open_notebook:
image: lfnovo/open_notebook:latest-single
ports:
- "8502:8502"
- "5055:5055"
env_file:
- ./docker.env
pull_policy: always
volumes:
- ./notebook_data:/app/data
- ./surreal_single_data:/mydata
restart: always
EOF
cat > docker.env << 'EOF'
# Required AI Provider Key
OPENAI_API_KEY=your-openai-key
# Database Configuration (Defaults)
SURREAL_ADDRESS=localhost
SURREAL_PORT=8000
SURREAL_USER=root
SURREAL_PASS=root
SURREAL_NAMESPACE=open_notebook
SURREAL_DATABASE=production
# Optional Password
# OPEN_NOTEBOOK_PASSWORD=your_secure_password
EOF
docker compose up -d
Designed for higher scalability.
curl -O https://raw.githubusercontent.com/lfnovo/open-notebook/main/docker-compose.yml
curl -o docker.env https://raw.githubusercontent.com/lfnovo/open-notebook/main/.env.example
nano docker.env
docker compose --profile multi up -d
# View container status
docker compose ps
# Monitor logs
docker compose logs -f
# Shut down all services
docker compose down
# Update and restart
docker compose pull
docker compose up -d
After logging in, you can fine-tune your model selections via the UI.
http://localhost:8502.gpt-4o-mini (OpenAI), deepseek-chat (DeepSeek), or gemini-2.0-flash (Google).gpt-4o (OpenAI), claude-3.5-sonnet (Anthropic), or grok-3 (xAI).text-embedding-3-small (OpenAI) or text-embedding-004 (Google).eleven_turbo_v2_5 (ElevenLabs) for premium quality or tts-1 (OpenAI) for reliability.whisper-1 (OpenAI) or scribe_v1 (ElevenLabs).gpt-4o-mini, text-embedding-3-small, tts-1.claude-3.5-sonnet, text-embedding-004, eleven_turbo_v2_5.Check service status using make status (Source) or docker compose ps (Docker). You can also verify individual ports:
curl http://localhost:8000/healthcurl http://localhost:5055/healthOPEN_NOTEBOOK_PASSWORD.Authorization: Bearer <password> header.lsof -i :8502 to find and terminate the conflicting process.apt or brew as shown in the prerequisites.docker-compose.yml and that the host directory has write permissions.
Sora 2 AI Watermark Remover: Remove Sora Watermarks Cleanly
How to Set Up Clash for Android With TizLink VPN (2026 Guide)
Kode CLI: A Multi-Model AI Terminal Assistant for Smarter Development
Smart-Admin Setup Guide: Environment, Backend, Frontend, and Mobile Deployment
Prompt Optimizer: Write Better AI Prompts in Seconds
NotebookLlama: An Open-Source NotebookLM Alternative with AI Voice
Claude Code SDK for Python: Installation, Quick Start, and API Reference
Microsandbox Guide: Secure MicroVM Code Execution in 200ms
KVoiceWalk: Clone Any Voice for Kokoro TTS Using Random Walks
BiliNote: Convert YouTube and Bilibili Videos Into Markdown Notes
Motionity: Free Online Animation Editor with Keyframes and Masks
Spacedrive: An Open-Source Cross-Platform File Manager