Zasper 2.1.0 · Open source

Agentic notebooks, on your own machine.

Zasper is a Jupyter IDE you run on your own machine. It opens the notebooks and kernels you already have, uses a fraction of JupyterLab's memory, and lets Claude Code, Codex or Gemini read, edit and run cells while you watch.

brew install zasper-io/tap/zasper

More ways to install

04-data-analysis.ipynb · Claude Code
A penguins notebook in Zasper with a scatter plot of bill length against bill depth, coloured by predicted species with the misclassified penguins circled, and Claude Code's panel beside it: the tool calls it made to read, edit and run the notebook, its two-sentence answer, and the notebook listed as the file the turn changed, with Undo this turn.
5× less CPU than JupyterLab
40× less memory than JupyterLab
10 MB to download. One app, nothing else to install.

Featured and supported by

425 points Hacker News I Programmer January 2025 Techzine January 2025 FOSDEM 2026 Talk, Brussels
The Fifth Elephant Talk, Bangalore, 2025
IndiaFOSS 2025 Talk
Zerodha Supporter
FOSS United Supporter

Agents

Your agent works in your notebook. You stay in charge.

Bring Claude Code, Gemini CLI, Codex or any agent that speaks ACP. It works in your live kernel, and you can review and undo every change it makes.

  1. 01 · Bring

    Use the agent you already pay for

    It signs in with your own account. Zasper never sees a key or your conversation.

  2. 02 · Work

    Live in your kernel

    It reads cells and outputs, runs code and inspects your data. It can even see your plots.

  3. 03 · Ask

    Nothing happens unasked

    It asks before it edits a file or runs a command. Every cell it runs carries its name.

  4. 04 · Review

    Undo anything

    See each change as a diff. Keep it, or roll back a cell, a file or the whole turn.

04-data-analysis.ipynb (turn 1)
Zasper showing a turn by Claude Code: a notebook diff, Before the turn against Now, with one of 24 cells added, a classifier on three standardised measurements, and an undo beside it. The agent panel lists the tool calls, its answer of 97.0% accuracy up from 88.0%, and the changed notebook with Undo this turn.
Every change, cell by cell, with its own undo.
Terminal 1
Zasper's terminal panel running claude -p connected to Zasper's MCP server. Above it, the notebook's last cell has re-run with the agent's mark beside it and prints 97.0% accuracy, and Claude's one-line answer is in the terminal.
Claude Code in a terminal, working in the same notebook through zasper mcp.

Prefer your terminal?

Zasper is an MCP server too. Add it once, and Claude Code, Codex, Cursor or Gemini CLI can work in the notebooks you have open.

claude mcp add zasper -- zasper mcp

Read more in Coding agents and MCP server.

Open by design

No cloud required. No lock-in, either.

Hosted notebooks keep your work in their cloud and their format. Zasper is an app you run, on files you already have.

Comparing it with a hosted platform? See Zasper and Hex, side by side.

Benchmarks

The more you run, the bigger the lead.

We ran Zasper and Jupyter Server against the same load on an Apple M4: 10 requests a second to every kernel, from 2 kernels to 100. Zasper used less memory and less CPU at every step. At 100 kernels, Jupyter Server held 1.9 GB and had dropped every connection. Zasper held 49 MB and answered every request.

100 concurrent kernels

Peak RAM
Zasper 49 MB
Jupyter Server 1.9 GB

38× less RAM

Average CPU
Zasper 12.5%
Jupyter Server 14.3%

1.1× less CPU

Replies per request
Zasper 5.0 of 5
Jupyter Server 1.5 of 5

Jupyter Server is dropping replies

Average CPU use against concurrent kernels, 2 to 100. Jupyter Server rises from 2.7% to a peak of 15.5% at 64 kernels; Zasper rises from 0.8% to 12%. The widest gap is 4.5 times less, at 4 kernels. Crosses mark Jupyter Server losing kernel connections from 64 kernels, and all of them at 100.
Peak RAM use against concurrent kernels, 2 to 100. Jupyter Server rises from 90 MB to 133 MB at 32 kernels, then climbs to 1.9 GB at 100; Zasper stays under 50 MB throughout. The widest gap is 38 times less, at 100 kernels. Crosses mark Jupyter Server losing kernel connections from 64 kernels, and all of them at 100.

CPU is the average across each run; memory is the peak. The memory gap grows with load, from 4× at 2 kernels to 38× at 100. The CPU gap is widest at light load, 4.5× at 4 kernels, and closes at 100, where Jupyter Server is still busy but no longer replying. Every number comes from the raw runs in zasper-benchmark, where the method is public.

Features

A full IDE, around your notebooks.

Every screen here is from a live session.

SQL cells

SQL, right next to Python

Query PostgreSQL, DuckDB, Snowflake or your own DataFrames, and get a DataFrame back.

SQL cells · Tutorial: query data with SQL

nyc_taxi.ipynb
A notebook of New York taxi trips in Zasper. The Data panel lists a SQLite connection named taxi with its three tables, and the DataFrames the kernel holds. Beside it, a SQL cell on taxi joins trips to zones and writes df_boroughs, and its output shows 8 rows: trips and average fare by borough, Manhattan first with 2,615,336 trips.
Environments

Your environments, found for you

Kernels, conda environments and your project's .venv, one click from a new notebook.

Launcher
Zasper's file explorer beside the launcher, showing Python kernels (ipykernel, Xeus and the project's own environment), each one click from a new notebook, and below them kernels for C, C++, R, Bash, Deno, Go, Julia, Ruby and Scala.
Terminal

A real terminal

Your own shell, right below the notebook.

Terminals
A penguins notebook open in Zasper with the terminal panel beneath it, where a Python session imports the tutorial's helpers and prints the count and mean body mass of each species.
Source control

Git, built in

Branch, stage, commit and read diffs without leaving the window.

Source control
Zasper's source control panel on branch main, listing three changed and four untracked files above the last commit, with a notebook diff of 04-data-analysis.ipynb beside it: one of 23 cells edited, its removed and added lines marked, and the unchanged cells folded.

Zasper reads and writes standard .ipynb files and runs the kernels you already have. The notebooks above are ordinary Jupyter notebooks.

Also included

And plenty more, in the same 10 MB.

Small things you will use every day.

Kernels

Every kernel you already use.

If it runs in Jupyter, it runs in Zasper. Nothing to set up again.

Python ipykernel & Xeus
R IRkernel
Julia IJulia
C++ xeus-cpp
Scala Almond
Ruby IRuby
JavaScript Deno, with TypeScript
Go GoNB
Bash bash_kernel
Any kernel kernelspec

Python runs on ipykernel or Xeus. Zasper also finds any Python environment with ipykernel in it. Installing kernels shows how to add your own.

Deployment

On your laptop, or on your server.

One app, either way. Run it on your own machine, or on a server you can open from anywhere. It is small enough to keep a shared server cheap.

Secure from the first run

Every server starts with an access token. Sign in with the link it prints.

Behind your HTTPS

Put it behind a reverse proxy, with the certificate you already have.

Docker or systemd

Run it in a container, or as a service that starts with the machine.

Deploying on Cloud walks through all three, and both ways to sign in.

Get started

Start here

From install to your first saved notebook.

Step one

Install it

Homebrew, snap, conda or a direct download. For notebooks, pip install ipykernel is all you need.

Installation
Step two

Your first notebook

Create one, pick a kernel, run a cell and save it, with a screenshot of every step.

Your first notebook
Step three

Bring your environment

Register the conda or uv environment you already use, and it shows up in the kernel list.

Working with Conda

License

Open source. Commercial license available.

Use Zasper under the GNU AGPL, or under a commercial license if the AGPL does not fit your product.

Open source

AGPL-3.0-only

Running Zasper, on your machine or a server, needs nothing more. If you distribute it, or offer a modified version over a network, the AGPL asks you to share your changes under the same license.

Read the license
Commercial

Commercial license

For companies building Zasper into a proprietary product, or keeping their changes private.

prasun@zasper.io

Contributions are made under a Contributor License Agreement, which lets Zasper offer both licenses.

FAQ

Questions, answered.

Is Zasper a drop-in replacement for JupyterLab?

For your notebooks and kernels, yes: same files, same kernelspecs, same protocol. It is its own app, though, not a copy of JupyterLab's interface or extension system.

How is Zasper different from a hosted notebook like Hex?

Hex runs your code in its cloud and keeps projects in its own format. Zasper runs on your machine or server, keeps plain .ipynb files, and uses your own agent subscription. Hex suits teams publishing dashboards; Zasper is for the people writing the notebooks. Zasper and Hex, side by side

Do my JupyterLab extensions work?

No. Zasper has its own extension model, so JupyterLab extensions will not load. If one is essential to you, that is a good reason to stay.

Does it work on Windows?

Yes, there is a Windows build. The built-in terminal needs WSL, so we recommend running Zasper under WSL.

Is it really free?

Yes. Under the AGPL-3.0 you can install it, run it, host it and change it. The commercial license is only for building it into a proprietary product.

What happens to my conda and uv environments?

Any environment registered as a Jupyter kernel shows up in the launcher. Zasper also finds the active environment, your base conda install, or a trusted project's .venv, as long as it has ipykernel.

Which coding agents work, and what do they cost?

Claude Code, Gemini CLI, Codex and any agent that speaks ACP. Claude Code is the one tested most. Each runs on your own subscription, so Zasper adds no cost and never holds a key. Agents outside Zasper can connect through its MCP server.

Does my code leave my machine?

No. Zasper runs on your machine, and your files stay there. A coding agent you start talks to its own provider, as it would in a terminal. Zasper sends anonymous usage data with no file names, paths, contents or IP address; ZASPER_TELEMETRY=0 turns it off, and PRIVACY.md lists everything. It also checks zasper.io for updates once a day, and loads widget libraries from jsDelivr unless you turn that off in Settings.

Community

Built in the open, with the people who use it.

Here is what to know before you depend on it.

Latest release 2.1.0, with coding agents, a variables panel and SQL cells 16 October 2026
Stability The HTTP and WebSocket API, the config file and the command-line flags follow semantic versioning. Breaking changes come only in major releases, with notes.
Written in Go on the server, TypeScript and React in the browser, in one repository AGPL-3.0
Contribute

Good first issues

Start with an open issue. The developer guide gets you building from source in two commands.

Open issues
Ask

Discussions

Ask questions and share ideas in the open, where answers stay findable.

GitHub Discussions
Talk

Slack

Quick questions and everyday conversation.

Join the Slack

Download Zasper. Open your notebooks in seconds.

No account. Your files stay on your machine.