Find a file
Luis Novo 62b071b917
Some checks failed
Tests / Backend Tests (push) Has been cancelled
Tests / Backend Lint (push) Has been cancelled
Tests / Backend Typecheck (push) Has been cancelled
Tests / Frontend Tests (push) Has been cancelled
Tests / Frontend Lint (push) Has been cancelled
Tests / Frontend Build (push) Has been cancelled
Development Build / extract-version (push) Has been cancelled
Development Build / changes (push) Has been cancelled
Development Build / build-regular (push) Has been cancelled
Development Build / build-single (push) Has been cancelled
Development Build / summary (push) Has been cancelled
feat(frontend): Quiet Green screen-by-screen reskin — shell, workspace, home, modals, remaining screens (#1220)
* feat(frontend): reskin app shell — pebble wordmark, fern nav spine, hued destination icons

* feat(frontend): reskin screens — workspace, home, sources, modals, settings, podcasts, search

Visual-only pass per screen: panel headers with hue ticks, one-line
source card metadata with top-right overflow, de-washed chat bubbles
(AI speaks teal), library treatment on the sources table (type pebbles,
quiet embedded pills), flattened dialog internals with uniform breathing
room, badge diet on models/settings, quiet podcast player containers,
mono for data everywhere. No behavior, columns or i18n changes.

* docs: changelog entry for the screen-by-screen reskin
2026-07-24 17:59:08 -03:00
.agents/skills/release feat: add anthropic_compatible credential provider (#1043) 2026-07-19 15:14:17 -03:00
.codex/agents feat: add anthropic_compatible credential provider (#1043) 2026-07-19 15:14:17 -03:00
.github docs: route feature ideas through Discussions (#1205) 2026-07-22 08:53:51 -03:00
api fix(sources): fall back to auto when a selected engine's runtime is absent (#1194) 2026-07-20 18:09:00 -03:00
commands fix(proxy): keep internal SurrealDB websocket out of HTTP proxy (#1185) 2026-07-19 18:11:00 -03:00
docs docs: route feature ideas through Discussions (#1205) 2026-07-22 08:53:51 -03:00
examples docs: fix stale auth env var references (#1189) 2026-07-21 09:20:19 -03:00
frontend feat(frontend): Quiet Green screen-by-screen reskin — shell, workspace, home, modals, remaining screens (#1220) 2026-07-24 17:59:08 -03:00
open_notebook fix(sources): fall back to auto when a selected engine's runtime is absent (#1194) 2026-07-20 18:09:00 -03:00
prompts feat(prompts): steer models toward $$ math delimiters (#1057) 2026-07-11 18:25:39 -03:00
scripts chore(release): automate container probes + document post-tag re-cut (#1198) 2026-07-21 07:04:19 -03:00
tests fix(sources): fall back to auto when a selected engine's runtime is absent (#1194) 2026-07-20 18:09:00 -03:00
.dockerignore feat(sources): opt-in Docling + Crawl4AI runtimes installed at startup (#1122) (#1123) 2026-07-13 08:26:20 -03:00
.env.example docs: fix stale auth env var references (#1189) 2026-07-21 09:20:19 -03:00
.gitattributes fix(docker): make wait-for-api.sh POSIX and enforce LF line endings (#586) (#598) 2026-04-19 15:49:11 -03:00
.gitignore chore: remove committed QA screenshots and debug history file (#1053) 2026-07-11 18:17:07 -03:00
.pre-commit-config.yaml chore(dev): add pre-commit config mirroring the CI gates (#1129) 2026-07-14 08:04:07 -03:00
.python-version forcing 3.12 as maximum python version to fix pydub issue 2025-04-26 06:23:31 -03:00
.worktreeinclude feat(ui): add command palette for quick navigation and search (#288) 2025-12-01 14:59:17 -03:00
AGENTS.md docs: route feature ideas through Discussions (#1205) 2026-07-22 08:53:51 -03:00
CHANGELOG.md feat(frontend): Quiet Green screen-by-screen reskin — shell, workspace, home, modals, remaining screens (#1220) 2026-07-24 17:59:08 -03:00
CLAUDE.md docs: restructure documentation around AGENTS.md, VISION.md and decision records (#1032) 2026-07-10 15:33:19 -03:00
CODE_OF_CONDUCT.md docs: add Code of Conduct (Contributor Covenant v2.1) (#856) 2026-06-13 09:13:49 -03:00
CONFIGURATION.md docs: restructure documentation around AGENTS.md, VISION.md and decision records (#1032) 2026-07-10 15:33:19 -03:00
CONTRIBUTING.md docs: route feature ideas through Discussions (#1205) 2026-07-22 08:53:51 -03:00
cubic.yaml refactor(frontend): consume GET /api/providers instead of the manual provider table (#1108) 2026-07-12 12:46:38 -03:00
dev-init.sh feat(worker): expose OPEN_NOTEBOOK_WORKER_MAX_TASKS to control worker concurrency (#1141) 2026-07-14 12:28:48 -03:00
docker-compose.override.yml.example docs: stop teaching 0.0.0.0 SurrealDB port exposure in setup snippets (#1060) 2026-07-12 08:42:52 -03:00
docker-compose.yml feat(worker): expose OPEN_NOTEBOOK_WORKER_MAX_TASKS to control worker concurrency (#1141) 2026-07-14 12:28:48 -03:00
Dockerfile feat(sources): opt-in Docling + Crawl4AI runtimes installed at startup (#1122) (#1123) 2026-07-13 08:26:20 -03:00
LICENSE Initial commit with all features 2024-10-21 14:56:10 -03:00
logo.png fix discord link 2025-04-24 10:14:59 -03:00
MAINTAINER_GUIDE.md docs: restructure documentation with new organized layout 2026-01-03 20:10:24 -03:00
Makefile feat(worker): expose OPEN_NOTEBOOK_WORKER_MAX_TASKS to control worker concurrency (#1141) 2026-07-14 12:28:48 -03:00
mypy.ini ci: gate PRs on mypy, start ignore_errors burn-down (#1076) 2026-07-11 19:25:29 -03:00
pyproject.toml fix(sources): fall back to auto when a selected engine's runtime is absent (#1194) 2026-07-20 18:09:00 -03:00
README.dev.md docs: restructure documentation around AGENTS.md, VISION.md and decision records (#1032) 2026-07-10 15:33:19 -03:00
README.md docs: route feature ideas through Discussions (#1205) 2026-07-22 08:53:51 -03:00
run_api.py Api podcast migration (#93) 2025-07-17 08:36:11 -03:00
SECURITY.md docs: add SECURITY.md with disclosure policy (#954) 2026-06-21 18:04:02 -03:00
supervisord.conf feat(worker): expose OPEN_NOTEBOOK_WORKER_MAX_TASKS to control worker concurrency (#1141) 2026-07-14 12:28:48 -03:00
supervisord.surrealdb.conf build: converge Docker builds into a single multi-stage Dockerfile (#1066) 2026-07-11 18:46:43 -03:00
uv.lock fix(sources): fall back to auto when a selected engine's runtime is absent (#1194) 2026-07-20 18:09:00 -03:00
VISION.md docs: restructure documentation around AGENTS.md, VISION.md and decision records (#1032) 2026-07-10 15:33:19 -03:00

Forks Stargazers Issues MIT License


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 »
Follow @lfnovo on X for updates

📚 Get Started · 📖 User Guide · Features · 🚀 Deploy

lfnovo%2Fopen-notebook | Trendshift

New Notebook

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


🆚 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 Next.js React SurrealDB LangChain

🚀 Quick Start (2 Minutes)

Prerequisites

  • Docker Desktop installed
  • That's it! (API keys configured later in the UI)

Step 1: Get docker-compose.yml

Option A: Download directly

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:

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:

- 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

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 · Anthropic · Google · Groq (free tier)

Want free local AI? See examples/docker-compose-ollama.yml for Ollama setup


📚 More Installation Options


📖 Need Help?


Star History

Star History Chart

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
  • 🔍 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
  • 🔐 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

📚 Documentation

Getting Started

User Guide

Advanced Topics

(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

Explore GitHub Discussions for proposed features and product ideas, and open Issues for known bugs and approved work.

(back to top)

📖 Need Help?

🤝 Community & Contributing

Join the Community

  • 💬 Discord Server - Get help, share ideas, and connect with other users
  • 𝕏 Follow @lfnovo on X - Project updates and news from the maintainer
  • 💡 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 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 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.

(back to top)

📄 License

Open Notebook is MIT licensed. See the LICENSE file for details.

Community Support:

(back to top)