Open-Notebook is a free, open source note taking & knowledge management project written in TypeScript and released under MIT. It has 39,087 GitHub stars, 4,527 forks and 110 open issues, and was last pushed 4 days ago. On this registry it ranks #7 of 25 tracked projects in Note Taking & Knowledge Management, with 5 head-to-head comparisons available. It gained 439 stars over the last 6 tracked days.

What is Open-Notebook?

What it is

Open Notebook is an open-source, privacy-focused research notebook that replicates and extends Google’s Notebook LM functionality. It runs locally or self-hosted, letting users manage AI-powered research workflows without surrendering data to cloud providers. Built with TypeScript, Next.js, React, SurrealDB, and LangChain, it targets researchers, students, and knowledge workers seeking control over their data and tools.

It solves the problem of vendor lock-in and data exposure inherent in proprietary AI notebooks. Users lose flexibility in model choice, face opaque pricing, and risk privacy when using hosted alternatives. Open Notebook removes these constraints by enabling self-hosting, multi-model support, and full API access while retaining core features like multi-modal content ingestion and AI chat.

Key capabilities

  • Supports 18+ AI providers including OpenAI, Anthropic, Ollama, and LM Studio
  • Processes PDFs, videos, audio, and web pages as source material
  • Generates multi-speaker podcasts with custom speaker profiles (up to 4 speakers)
  • Performs full-text and vector search across all ingested content
  • Offers a REST API for automation and integration
  • Provides multi-language UI (English, Portuguese, Chinese, Japanese, Russian, Bengali)
  • Uses SurrealDB as its embedded database for structured and unstructured data

Who uses it and how

Researchers self-host the app to keep sensitive source material and AI outputs private while using cheaper or local models (e.g., via Ollama). Students ingest lecture recordings and papers, then chat with context or generate study podcasts. Teams deploy it on internal servers to build custom knowledge workflows with full auditability and no recurring subscription fees beyond AI API costs.

Getting started

Install via Docker using docker-compose.yml downloaded from the repo; SurrealDB runs embedded with default root:root credentials (changeable via .env). No manual database setup required for local use.

When to use it — and when not to

Use Open Notebook when data privacy, model flexibility, or self-hosting are priorities. Avoid it if you require comprehensive citation sourcing (currently basic) or prefer a fully managed service with zero infrastructure effort. Self-hosting requires managing SurrealDB, storage, and SMTP (if email notifications needed), but avoids monthly subscriptions—cost is limited to AI provider usage.

project readme (upstream, from github) — read inline

[![Forks][forks-shield]][forks-url] [![Stargazers][stars-shield]][stars-url] [![Issues][issues-shield]][issues-url] [![MIT License][license-shield]][license-url]


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

Deutsch | Español | français | 日本語 | 한국어 | Português | Русский | 中文

A private, multi-model, 100% local, full-featured alternative to Notebook LM

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][Python]][Python-url] [![Next.js][Next.js]][Next-url] [![React][React]][React-url] [![SurrealDB][SurrealDB]][SurrealDB-url] [![LangChain][LangChain]][LangChain-url]

🚀 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

readme truncated — read the full docs on github

Frequently asked questions

Is Open-Notebook free to use?

Open-Notebook is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Open-Notebook do?

AI-powered research notebook with full privacy control

What is Open-Notebook written in?

Open-Notebook is primarily written in TypeScript. Its source is publicly available at https://github.com/lfnovo/open-notebook, and it has 39,087 GitHub stars.