JupyterLab extension

Claude Code, in your notebook.

A JupyterLab extension built for agentic AI — first-class Claude Code, with GitHub Copilot, Ollama, and OpenAI-compatible models as drop-in alternates. Skills, Plugins, MCP, and admin policy included.

JupyterLab with the Notebook Intelligence chat sidebar open, mid-conversation with Claude Code.

Works with

Claude Code GitHub Copilot Ollama OpenAI vLLM LiteLLM

Claude Code, first

Sessions, Skills, Plugins, and MCP — all from JupyterLab.

Run Claude Code as a first-class provider for chat, agent runs, and notebook editing. Resume any transcript from the launcher. Manage Skills and Plugins from the UI. Agent mode edits, runs, and fixes cells without leaving the notebook.

Read more →
JupyterLab launcher showing a Claude Code tile with session picker.

Bring any other model

GitHub Copilot, Ollama, OpenAI-compatible — same chat surface.

Sign in to Copilot once and use any of its chat or completion models. Point Ollama at a local model you already pulled. Wire NBI to any OpenAI- or LiteLLM-compatible endpoint with a base URL, model ID, and key.

Compare providers →
{
  "chat_model": {
    "provider": "openai-compatible",
    "model": "gpt-oss-120b",
    "base_url": "https://gateway.internal/v1",
    "api_key": "sk-..."
  },
  "inline_completion_model": {
    "provider": "ollama",
    "model": "qwen2.5-coder:7b"
  }
}

Extend it

MCP servers, Claude Skills, and Plugins — managed from the lab.

Expose your own tools, databases, and APIs over the Model Context Protocol. Author Skills inline or import from GitHub. Sync an org-wide manifest so every user in the lab lands with the same set.

Skills, Plugins, MCP →
Skills management panel inside the JupyterLab Settings dialog.

For administrators

Pin the provider. Lock the endpoint. Ship to your team.

Environment-variable policies set the provider, model, and endpoints — useful for managed JupyterHub deployments. Each policy is a force-on / force-off / user-choice triad, surfaced in Settings as a locked control. Org-managed Skills sync from a manifest you control.

Admin and policy →
# Pin the Claude provider and a specific model.
export NBI_CHAT_MODEL_PROVIDER=anthropic
export NBI_CLAUDE_CHAT_MODEL=claude-sonnet-4-6

# Force-on Claude mode; users can't turn it off.
export NBI_CLAUDE_MODE_POLICY=force-on

# Disable user-driven GitHub Skill imports
# (org manifest still works).
export NBI_ALLOW_GITHUB_SKILL_IMPORT=false

First run

Install and try it in five minutes.

NBI installs into any JupyterLab 4 environment. Restart the lab and the chat sidebar appears on the left.

pip install notebook-intelligence

  1. Install. pip install notebook-intelligence into the same env as your JupyterLab.
  2. Restart JupyterLab. The NBI sidebar appears on the left.
  3. Pick a provider. Open Settings → NBI and configure Claude Code, Copilot, Ollama, or an OpenAI-compatible endpoint.
  4. Send your first prompt. Or hit Cmd+I inside a code cell for inline chat.

Full install guide →