Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
k-dense-ai avatar

Open Notebook

  • 893 installs
  • 32k repo stars
  • Updated July 29, 2026
  • k-dense-ai/scientific-agent-skills

open-notebook is an agent skill that connects coding agents to the Open Notebook HTTP API so developers maintain persistent research notebooks agents can list, create, update, and archive during multi-step projects.

About

open-notebook is a scientific-agent skill that integrates agents with the Open Notebook REST API at http://localhost:5055/api, with Swagger UI at /docs and ReDoc at /redoc. It covers notebook CRUD, archival filters, sorting, and optional password auth via OPEN_NOTEBOOK_PASSWORD on protected routes. Agents use it to read prior findings, append structured notes, and organize research across sessions instead of losing context in chat history. Developers reach for open-notebook on literature reviews, experiment logs, or any project needing durable, queryable notebooks the agent can manage programmatically.

  • REST API with full CRUD operations for notebooks and sources
  • Built-in authentication via OPEN_NOTEBOOK_PASSWORD
  • Interactive Swagger UI and ReDoc documentation at /docs and /redoc
  • Supports archiving, ordering, and selective source deletion
  • Local-first design optimized for agentic workflows

Open Notebook by the numbers

  • 893 all-time installs (skills.sh)
  • +40 installs in the week ending Jul 29, 2026 (Skillselion tracking)
  • Ranked #1,185 of 16,570 AI & Agent Building skills by installs in the Skillselion catalog
  • Security screen: HIGH risk (skills.sh audit)
  • Data as of Jul 29, 2026 (Skillselion catalog sync)
npx skills add https://github.com/k-dense-ai/scientific-agent-skills --skill open-notebook

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs893
repo stars32k
Security audit2 / 3 scanners passed
Last updatedJuly 29, 2026
Repositoryk-dense-ai/scientific-agent-skills

How do agents persist research notes across sessions?

Maintain persistent research notebooks that an AI coding agent can read from, write to, and organize during complex projects.

Who is it for?

Developers running Open Notebook locally who need agents to read and write durable research notes during long scientific or technical investigations.

Skip if: Teams without Open Notebook running or projects that only need ephemeral chat context without structured notebook storage.

When should I use this skill?

The user references Open Notebook, localhost:5055, research notebooks, or asks the agent to save, organize, or recall project research across sessions.

What you get

Structured notebook records, archived research logs, and API-backed note entries retrievable via GET /api/notebooks.

  • Notebook entries via API
  • Archived research records

By the numbers

  • Documents Open Notebook base URL at http://localhost:5055/api
  • Lists 6 unauthenticated routes including /health, /docs, /redoc, and /api/config

Files

SKILL.mdMarkdownGitHub ↗

Open Notebook

Overview

Open Notebook is an open-source, self-hosted alternative to Google's NotebookLM that enables researchers to organize materials, generate AI-powered insights, create podcasts, and have context-aware conversations with their documents — all while maintaining complete data privacy.

Unlike Google's Notebook LM, which has no publicly available API outside of the Enterprise version, Open Notebook provides a comprehensive REST API, supports 16+ AI providers, and runs entirely on your own infrastructure.

Key advantages over NotebookLM:

  • Full REST API for programmatic access and automation
  • Choice of 16+ AI providers (not locked to Google models)
  • Multi-speaker podcast generation with 1-4 customizable speakers (vs. 2-speaker limit)
  • Complete data sovereignty through self-hosting
  • Open source and fully extensible (MIT license)

Repository: https://github.com/lfnovo/open-notebook

Quick Start

Prerequisites

  • Docker Desktop installed
  • API key for at least one AI provider (or local Ollama for free local inference)

Installation

Deploy Open Notebook using Docker Compose:

# Download the docker-compose file
curl -o docker-compose.yml https://raw.githubusercontent.com/lfnovo/open-notebook/main/docker-compose.yml

# Set the required encryption key
export OPEN_NOTEBOOK_ENCRYPTION_KEY="your-secret-key-here"

# Launch the services
docker-compose up -d

Access the application:

  • Frontend UI: http://localhost:8502
  • REST API: http://localhost:5055
  • API Documentation: http://localhost:5055/docs

Configure AI Provider

After startup, configure at least one AI provider:

1. Navigate to Settings > API Keys in the UI 2. Add credentials for your preferred provider (OpenAI, Anthropic, etc.) 3. Test the connection and discover available models 4. Register models for use across the platform

Or configure via the REST API:

import requests

BASE_URL = "http://localhost:5055/api"

# Add a credential for an AI provider
response = requests.post(f"{BASE_URL}/credentials", json={
    "provider": "openai",
    "name": "My OpenAI Key",
    "api_key": "sk-..."
})
credential = response.json()

# Discover available models
response = requests.post(
    f"{BASE_URL}/credentials/{credential['id']}/discover"
)
discovered = response.json()

# Register discovered models
requests.post(
    f"{BASE_URL}/credentials/{credential['id']}/register-models",
    json={"model_ids": [m["id"] for m in discovered["models"]]}
)

Core Features

Notebooks

Organize research into separate notebooks, each containing sources, notes, and chat sessions.

import requests

BASE_URL = "http://localhost:5055/api"

# Create a notebook
response = requests.post(f"{BASE_URL}/notebooks", json={
    "name": "Cancer Genomics Research",
    "description": "Literature review on tumor mutational burden"
})
notebook = response.json()
notebook_id = notebook["id"]

Sources

Ingest diverse content types including PDFs, videos, audio files, web pages, and Office documents. Sources are processed for full-text and vector search.

# Add a web URL source
response = requests.post(f"{BASE_URL}/sources", data={
    "url": "https://arxiv.org/abs/2301.00001",
    "notebook_id": notebook_id,
    "process_async": "true"
})
source = response.json()

# Upload a PDF file
with open("paper.pdf", "rb") as f:
    response = requests.post(
        f"{BASE_URL}/sources",
        data={"notebook_id": notebook_id},
        files={"file": ("paper.pdf", f, "application/pdf")}
    )

Notes

Create and manage notes (human or AI-generated) associated with notebooks.

# Create a human note
response = requests.post(f"{BASE_URL}/notes", json={
    "title": "Key Findings",
    "content": "TMB correlates with immunotherapy response in NSCLC...",
    "note_type": "human",
    "notebook_id": notebook_id
})

Context-Aware Chat

Chat with your research materials using AI that cites sources.

# Create a chat session
session = requests.post(f"{BASE_URL}/chat/sessions", json={
    "notebook_id": notebook_id,
    "title": "TMB Discussion"
}).json()

# Send a message with context from sources
response = requests.post(f"{BASE_URL}/chat/execute", json={
    "session_id": session["id"],
    "message": "What are the key biomarkers for immunotherapy response?",
    "context": {"include_sources": True, "include_notes": True}
})

Search

Search across all materials using full-text or vector (semantic) search.

# Vector search across the knowledge base
results = requests.post(f"{BASE_URL}/search", json={
    "query": "tumor mutational burden immunotherapy",
    "search_type": "vector",
    "limit": 10
}).json()

# Ask a question with AI-powered answer
answer = requests.post(f"{BASE_URL}/search/ask/simple", json={
    "query": "How does TMB predict checkpoint inhibitor response?"
}).json()

Podcast Generation

Generate professional multi-speaker podcasts from research materials with 1-4 customizable speakers.

# Generate a podcast episode
job = requests.post(f"{BASE_URL}/podcasts/generate", json={
    "notebook_id": notebook_id,
    "episode_profile_id": episode_profile_id,
    "speaker_profile_ids": [speaker1_id, speaker2_id]
}).json()

# Check generation status
status = requests.get(f"{BASE_URL}/podcasts/jobs/{job['job_id']}").json()

# Download audio when ready
audio = requests.get(
    f"{BASE_URL}/podcasts/episodes/{status['episode_id']}/audio"
)

Content Transformations

Apply custom AI-powered transformations to content for summarization, extraction, and analysis.

# Create a custom transformation
transform = requests.post(f"{BASE_URL}/transformations", json={
    "name": "extract_methods",
    "title": "Extract Methods",
    "description": "Extract methodology details from papers",
    "prompt": "Extract and summarize the methodology section...",
    "apply_default": False
}).json()

# Execute transformation on text
result = requests.post(f"{BASE_URL}/transformations/execute", json={
    "transformation_id": transform["id"],
    "input_text": "...",
    "model_id": "model_id_here"
}).json()

Supported AI Providers

Open Notebook supports 16+ AI providers through the Esperanto library:

ProviderLLMEmbeddingSpeech-to-TextText-to-Speech
OpenAIYesYesYesYes
AnthropicYesNoNoNo
Google GenAIYesYesNoYes
Vertex AIYesYesNoYes
OllamaYesYesNoNo
GroqYesNoYesNo
MistralYesYesNoNo
Azure OpenAIYesYesNoNo
DeepSeekYesNoNoNo
xAIYesNoNoNo
OpenRouterYesNoNoNo
ElevenLabsNoNoYesYes
PerplexityYesNoNoNo
VoyageNoYesNoNo

Environment Variables

Key configuration variables for Docker deployment:

VariableDescriptionDefault
OPEN_NOTEBOOK_ENCRYPTION_KEYRequired. Secret key for encrypting stored credentialsNone
SURREAL_URLSurrealDB connection URLws://surrealdb:8000/rpc
SURREAL_NAMESPACEDatabase namespaceopen_notebook
SURREAL_DATABASEDatabase nameopen_notebook
OPEN_NOTEBOOK_PASSWORDOptional password protection for the UINone

API Reference

The REST API is available at http://localhost:5055/api with interactive documentation at /docs.

Core endpoint groups:

  • /api/notebooks - Notebook CRUD and source association
  • /api/sources - Source ingestion, processing, and retrieval
  • /api/notes - Note management
  • /api/chat/sessions - Chat session management
  • /api/chat/execute - Chat message execution
  • /api/search - Full-text and vector search
  • /api/podcasts - Podcast generation and management
  • /api/transformations - Content transformation pipelines
  • /api/models - AI model configuration and discovery
  • /api/credentials - Provider credential management

For complete API reference with all endpoints and request/response formats, see references/api_reference.md.

Architecture

Open Notebook uses a modern stack:

  • Backend: Python with FastAPI
  • Database: SurrealDB (document + relational)
  • AI Integration: LangChain with the Esperanto multi-provider library
  • Frontend: Next.js with React
  • Deployment: Docker Compose with persistent volumes

Important Notes

  • Open Notebook requires Docker for deployment
  • At least one AI provider must be configured for AI features to work
  • For free local inference without API costs, use Ollama
  • The OPEN_NOTEBOOK_ENCRYPTION_KEY must be set before first launch and kept consistent across restarts
  • All data is stored locally in Docker volumes for complete data sovereignty

Related skills

How it compares

Pick open-notebook for structured, API-backed research notebooks; use inline markdown notes when persistence and query APIs are not required.

FAQ

What API does open-notebook use?

open-notebook targets the Open Notebook HTTP API at http://localhost:5055/api. Interactive docs live at /docs (Swagger UI) and /redoc; health and auth status routes are documented for local setup.

How does open-notebook handle authentication?

When OPEN_NOTEBOOK_PASSWORD is set, open-notebook includes the password on protected routes. Public routes such as /health, /docs, /openapi.json, /redoc, /api/auth/status, and /api/config skip authentication.

Is Open Notebook safe to install?

skills.sh reports 2 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.

AI & Agent Buildingagentsresearchautomation

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.