Skip to main content

jupyterlab_claude_code_extension

GitHub Actions npm version PyPI version Total PyPI downloads JupyterLab 4 Brought To You By KOLOMOLO Donate PayPal

A full Claude Code launcher and manager for JupyterLab. Start, resume, fork, switch, and clean up Claude Code CLI sessions from a side panel - one click lands you in the right terminal with Claude already running, no duplicate tabs, no UUID hunting, with a live indicator showing which sessions are active right now.

Claude Code Sessions panel

Why this extension

One principle: Anthropic knows best how to build the agent harness; we know best how to make it work in JupyterLab.

Chat-panel extensions re-implement the agent loop and trail the real tool. This one runs the genuine, unmodified Claude Code CLI in JupyterLab terminals - skills, subagents, MCP, hooks, plan mode, every release the day it lands. The extension owns the JupyterLab side:

  • Launching - new, resumed, or forked sessions, with or without permission prompts, no wrapper shell, correctly sized before Claude draws its first frame
  • Finding - every Claude project in one panel: favourites, search, live activity
  • Reusing - clicking a session focuses its existing terminal, never a duplicate
  • Managing - parallel conversations: switch, fork with a name, delete - no --resume pickers, no raw UUIDs

Features

  • Three-section side panel - Favorites, Recent, and All projects, each scrolling independently
  • Remote control indicator - a green dot marks sessions that are actively under Claude's remote control, not merely a terminal that happens to be running
  • One-click resume - click a row to jump back into that session in a terminal. If a terminal for the project is already open, it's reused instead of duplicated
  • Background agents - a conversation held by a running background agent (claude --bg, /bg) cannot be resumed, so its row is marked with a small bg chip and clicking it attaches to the agent instead (claude attach). The agent is joined, never copied, and it keeps running when you close the terminal
  • Favorites - star projects you keep coming back to via the right-click menu
  • Remove - drop a project's Claude history from the panel via the right-click menu; a confirmation dialog names the project and warns it removes the whole project and all its conversations before anything is touched, then the history folder is moved to the trash (it honours JupyterLab's "move files to trash" setting), not deleted permanently
  • Clean up parallel sessions - when a project has accumulated extra sessions beyond the main one, a right-click menu item (showing the count in brackets) removes them all, keeping only the main session; a confirmation dialog naming the project and the count appears first, and removed files honour the same trash setting
  • Conversation switcher - a right-click "Switch and Manage Sessions" submenu lists a project's other conversations by name and short session id, e.g. home (3f2a1b9c), with last-activity time; pick one and it becomes the row's current conversation - the next click resumes exactly that one. The submenu shows the 5 most recent; "Manage Sessions..." opens a searchable popup - a scrollable table over the full list with the current conversation pinned at the top and accented. Conversations can also be deleted here - select one, many, or all via checkboxes, then click Delete; they move to trash immediately (no confirmation, with an "N moved to trash" message; removed files honour the trash setting). Rows with multiple conversations show a branch icon with the count after the name. Every conversation listed is marked for what it is: in the popup a branch icon for an ordinary fork or a bg chip for one held by a running background agent, and in either right-click submenu a (bg) suffix on the ones an agent holds - so a background conversation is recognisable before you pick it
  • Open branched conversation - a separate right-click "Open Branched Conversation" submenu (and an "Open" button on every row of the Manage Sessions popup) opens any conversation directly in its own terminal, so several branches of one project can run side by side; clicking a row reuses an open terminal only when it is already running that exact conversation, so switching a branch and clicking lands you in the right one rather than the original
  • Branch session - fork the current conversation into a new named session via the right-click menu (normal or skip-permissions mode); uses Claude's native --fork-session, opens in a new terminal, the chosen name is stamped automatically, and the fork becomes the row's current conversation
  • Copy session id - a right-click "Copy Session ID" item copies the row's current conversation id to the clipboard; the Manage Sessions popup adds a copy button on every row, so any parallel conversation's id is one click away
  • Activity at a glance - each row shows its last activity (now, 5m ago, 2h ago, 3d ago) in an aligned column, with the favourite star in its own column beside it; rows active within the last minute light up in the theme's brand colour (including the now label), rows idle for over a week dim slightly
  • Coloured terminal tabs - each Claude session's colour (set with /color, or auto-assigned) tints its terminal tab, so open sessions are easy to tell apart; needs the companion jupyterlab_colourful_tab_extension (>= 1.0.19, installed automatically), which supplies the tab-colouring API. On by default; turn it off with the "Coloured terminal tabs" setting and the tint is dropped straight away
  • Search - fuzzy filter toggled by the funnel button next to refresh; once you type, a clear button appears at the end of the field to empty it in one click
  • Presentation modes - label rows by session name (so a /rename shows through), folder name, or path relative to the JupyterLab root
  • Hover tooltip with project path, last activity, message count, branch, background agent, and session id
  • Auto-disabled when the Claude Code CLI is not installed

Requirements

  • JupyterLab >= 4.0.0
  • Python >= 3.10
  • claude CLI on PATH

Install

Developers must install via the project Makefile (which orchestrates clean, build, and pip install of the resulting wheel):

make install

End-users can install the published package from PyPI:

pip install jupyterlab_claude_code_extension

[!WARNING] package.json pins webpack: 5.106.0 and chalk: 4.1.2 in both resolutions and overrides. Do not remove these. webpack >= 5.106.1 changed its module-federation share identifier format and crashes the unmaintained license-webpack-plugin (split('=')[1].trim()) that @jupyterlab/builder injects into every production build; the duplicate chalk@2.4.2 pulled by duplicate-package-checker-webpack-plugin crashes on Node 24+ in the build-isolation install. Without the pins, make publish and CI fail on python -m build.

Claude statusline

The package ships a companion CLI that installs the claude-code-statusline powerline status line (context %, model, effort, git, env, pwd) into ~/.claude and points statusLine in settings.json at it - after asking for confirmation, since it downloads the script from that repo:

jupyterlab_claude_code install-claude-statusline

Uninstall

pip uninstall jupyterlab_claude_code_extension

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jupyterlab_claude_code_extension-1.2.72.tar.gz (2.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file jupyterlab_claude_code_extension-1.2.72.tar.gz.

File metadata

File hashes

Hashes for jupyterlab_claude_code_extension-1.2.72.tar.gz
Algorithm Hash digest
SHA256 37cacda6bdaee82aca7dfd2172d77f65d1ac6d5d32e8a0acd6708140b8600697
MD5 c62c4f4cd8ff84f29d01a8459ca54989
BLAKE2b-256 1be10f0fe219b9b663ccc13e6d63c061849c304247a19a5a90afe2ca9ea62080

See more details on using hashes here.

File details

Details for the file jupyterlab_claude_code_extension-1.2.72-py3-none-any.whl.

File metadata

File hashes

Hashes for jupyterlab_claude_code_extension-1.2.72-py3-none-any.whl
Algorithm Hash digest
SHA256 cee36e093ba00cc88c90d6e328202d1936331382d48bea5a47ebe21ca7a533e3
MD5 39be206da76654c63159933311a93d5f
BLAKE2b-256 776f170ac0abbc884efbc84346d7e980354c9b308297efbd7d1b5d427421e7c1

See more details on using hashes here.

Release history Release notifications | RSS feed

1.2.73

2 files

This release

1.2.72 This release

2 files

1.2.71

2 files

1.2.64

2 files

1.2.59

2 files

1.2.54

2 files

1.2.53

2 files

1.2.51

2 files

1.2.50

2 files

1.2.49

2 files

1.2.48

2 files

1.2.45

2 files

1.2.44

2 files

1.2.43

2 files

1.2.42

2 files

1.2.41

2 files

1.2.40

2 files

1.2.39

2 files

1.2.38

2 files

1.2.37

2 files

1.2.36

2 files

1.2.35

2 files

1.2.34

2 files

1.2.33

2 files

1.2.26

2 files

1.2.25

2 files

1.2.24

2 files

1.2.23

2 files

1.2.22

2 files

1.2.21

2 files

1.2.20

2 files

1.2.19

2 files

1.2.17

2 files

1.2.12

2 files

1.2.9

2 files

1.2.7

2 files

1.2.5

2 files

1.2.4

2 files

1.2.2

2 files

1.1.31

2 files

1.1.29

2 files

1.1.27

2 files

1.1.25

2 files

1.1.23

2 files

1.1.21

2 files

1.1.20

2 files

1.1.19

2 files

1.1.18

2 files

1.1.17

2 files

1.1.16

2 files

1.1.15

2 files

1.1.14

2 files

1.1.13

2 files

1.1.12

2 files

1.1.11

2 files

1.1.10

2 files

1.1.9

2 files

1.1.8

2 files

1.1.7

2 files

1.1.5

2 files

1.1.3

2 files

1.1.1

2 files

1.0.60

2 files

1.0.59

2 files

1.0.58

2 files

1.0.57

2 files

1.0.56

2 files

1.0.55

2 files

1.0.54

2 files

1.0.53

2 files

1.0.50

2 files

1.0.47

2 files

1.0.45

2 files

1.0.43

2 files

1.0.41

2 files

1.0.39

2 files

1.0.38

2 files

1.0.37

2 files

1.0.34

2 files

1.0.32

2 files

1.0.29

2 files

1.0.26

2 files

1.0.21

2 files

1.0.19

2 files

1.0.16

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page