AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Jupyter Live Kernel

skill-john-data-chen-hermes-agent-backup-jupyter-live-kernel · by john-data-chen

Iterative Python via live Jupyter kernel (hamelnb).

No reviews yet
0 installs
18 views
0.0% view→install

Install

$ agentstack add skill-john-data-chen-hermes-agent-backup-jupyter-live-kernel

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access Used
  • Filesystem access Used
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-john-data-chen-hermes-agent-backup-jupyter-live-kernel)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
1mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Jupyter Live Kernel? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Jupyter Live Kernel (hamelnb)

Gives you a stateful Python REPL via a live Jupyter kernel. Variables persist across executions. Use this instead of execute_code when you need to build up state incrementally, explore APIs, inspect DataFrames, or iterate on complex code.

When to Use This vs Other Tools

| Tool | Use When | |------|----------| | This skill | Iterative exploration, state across steps, data science, ML, "let me try this and check" | | execute_code | One-shot scripts needing hermes tool access (web_search, file ops). Stateless. | | terminal | Shell commands, builds, installs, git, process management |

Rule of thumb: If you'd want a Jupyter notebook for the task, use this skill.

Prerequisites

  1. uv must be installed (check: which uv)
  2. JupyterLab must be installed: uv tool install jupyterlab
  3. A Jupyter server must be running (see Setup below)

Setup

The hamelnb script location:

SCRIPT="$HOME/.agent-skills/hamelnb/skills/jupyter-live-kernel/scripts/jupyter_live_kernel.py"

If not cloned yet:

git clone https://github.com/hamelsmu/hamelnb.git ~/.agent-skills/hamelnb

Starting JupyterLab

Check if a server is already running:

uv run "$SCRIPT" servers

If no servers found, start one:

jupyter-lab --no-browser --port=8888 --notebook-dir=$HOME/notebooks \
  --IdentityProvider.token='' --ServerApp.password='' > /tmp/jupyter.log 2>&1 &
sleep 3

Note: Token/password disabled for local agent access. The server runs headless.

Creating a Notebook for REPL Use

If you just need a REPL (no existing notebook), create a minimal notebook file:

mkdir -p ~/notebooks

Write a minimal .ipynb JSON file with one empty code cell, then start a kernel session via the Jupyter REST API:

curl -s -X POST http://127.0.0.1:8888/api/sessions \
  -H "Content-Type: application/json" \
  -d '{"path":"scratch.ipynb","type":"notebook","name":"scratch.ipynb","kernel":{"name":"python3"}}'

Core Workflow

All commands return structured JSON. Always use --compact to save tokens.

1. Discover servers and notebooks

uv run "$SCRIPT" servers --compact
uv run "$SCRIPT" notebooks --compact

2. Execute code (primary operation)

uv run "$SCRIPT" execute --path  --code '' --compact

State persists across execute calls. Variables, imports, objects all survive.

Multi-line code works with $'...' quoting:

uv run "$SCRIPT" execute --path scratch.ipynb --code $'import os\nfiles = os.listdir(".")\nprint(f"Found {len(files)} files")' --compact

3. Inspect live variables

uv run "$SCRIPT" variables --path  list --compact
uv run "$SCRIPT" variables --path  preview --name  --compact

4. Edit notebook cells

# View current cells
uv run "$SCRIPT" contents --path  --compact

# Insert a new cell
uv run "$SCRIPT" edit --path  insert \
  --at-index  --cell-type code --source '' --compact

# Replace cell source (use cell-id from contents output)
uv run "$SCRIPT" edit --path  replace-source \
  --cell-id  --source '' --compact

# Delete a cell
uv run "$SCRIPT" edit --path  delete --cell-id  --compact

5. Verification (restart + run all)

Only use when the user asks for a clean verification or you need to confirm the notebook runs top-to-bottom:

uv run "$SCRIPT" restart-run-all --path  --save-outputs --compact

Practical Tips from Experience

  1. First execution after server start may timeout — the kernel needs a moment

to initialize. If you get a timeout, just retry.

  1. The kernel Python is JupyterLab's Python — packages must be installed in

that environment. If you need additional packages, install them into the JupyterLab tool environment first.

  1. --compact flag saves significant tokens — always use it. JSON output can

be very verbose without it.

  1. For pure REPL use, create a scratch.ipynb and don't bother with cell editing.

Just use execute repeatedly.

  1. Argument order matters — subcommand flags like --path go BEFORE the

sub-subcommand. E.g.: variables --path nb.ipynb list not variables list --path nb.ipynb.

  1. If a session doesn't exist yet, you need to start one via the REST API

(see Setup section). The tool can't execute without a live kernel session.

  1. Errors are returned as JSON with traceback — read the ename and evalue

fields to understand what went wrong.

  1. Occasional websocket timeouts — some operations may timeout on first try,

especially after a kernel restart. Retry once before escalating.

Timeout Defaults

The script has a 30-second default timeout per execution. For long-running operations, pass --timeout 120. Use generous timeouts (60+) for initial setup or heavy computation.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.