Jupyter Notebooks

Open .ipynb files in a dedicated editor and run cells with a live kernel bound to your selected local Python interpreter.

Prerequisites

CrispyVibe uses your existing Jupyter install and does not bundle one. The notebook editor embeds the Jupyter Notebook 7 web app, so a classic Notebook (≤6) or a JupyterLab-only install will not work.

RequirementMinimum version
Python3.11
Jupyter Notebook (Notebook 7)7.5

Install Jupyter into the Python environment you want to use:

python3 -m venv ~/my-venv
~/my-venv/bin/pip install "notebook>=7.5" ipykernel

Make sure jupyter is on your PATH. CrispyVibe also looks in common locations such as ~/.local/bin, /opt/homebrew/bin, and /usr/local/bin. If Jupyter isn’t found, the notebook tab explains what to install. The rest of the app remains available.

Opening a notebook

  1. Single- or double-click an .ipynb file in the explorer.
  2. The notebook editor renders the cells and saved outputs in order.

All cell types (Markdown, code, raw) and outputs (text streams, HTML, images, error tracebacks, and rich MIME bundles) render with their execution counts preserved.

Editing cells

Edit code, Markdown, and raw cells directly. You can:

  • Add, delete, move, split, and merge cells
  • Convert a cell’s type

Edits mark the document dirty, and an unsaved indicator appears in the tab.

Running cells

Run code against a live kernel bound to your selected interpreter:

  • Run a single cell
  • Run All cells in order
  • Interrupt a running cell
  • Restart the kernel

Output streams into each cell incrementally, and execution counts update in place. The embedded Jupyter Notebook 7 interface provides its editing and execution shortcuts.

Choosing a kernel

Pick the interpreter for a notebook from your registered kernelspecs (jupyter kernelspec list) and from discoverable environments (venv, conda, system). The selection persists with the notebook session, so reopening the notebook reuses the same kernel.

💡 Tip: Kernel state and outputs persist when you move a notebook between the inline editor, a split, and Spotlight. Your variables stay defined.

Saving

Save from the notebook toolbar. Jupyter writes a valid .ipynb file while preserving cell ids, metadata, execution counts, and any nbformat fields the editor doesn’t model. If another tool or an agent changes the .ipynb on disk, the open notebook reloads automatically to show the change.

⚠️ Note: A reload re-reads the file from disk. Unsaved outputs since your last save are not restored, so save before triggering a reload.

Cell comments

Notebooks participate in File Comments. Comments anchor to a cell’s id, so a thread stays attached to its cell even as you reorder others. The comments panel labels each notebook thread by position, such as Cell 1 or Cell 2.

Remote (SSH) notebooks

Notebooks on SSH remote hosts open and run the same way they do locally. CrispyVibe launches Jupyter on the remote host and reaches it through a loopback port forwarded over your existing SSH connection. This does not expose an extra port on the remote machine.

The remote host needs jupyter (Notebook 7.5+) and python3 (3.11+) on its login-shell PATH, with the same versions required locally. If either is missing, the notebook tab shows an “unavailable” state explaining what to install.

The remote server starts when you open the first notebook and shuts down when you quit the app.

⚠️ Note: If the SSH connection drops, the remote Jupyter process can keep running. CrispyVibe cleans it up after you reconnect and quit.

Security

The notebook front-end runs against a local Jupyter server scoped to each root directory:

  • The server binds to 127.0.0.1 only and requires token authentication.
  • The server starts when you open the first notebook and shuts down when you quit the app, ending its kernel and server processes.
  • Notebook outputs are treated as untrusted content, and external links open in your system browser.

Known limitations

  • CrispyVibe requires your own Jupyter install; none is bundled locally or on remote hosts.
  • An external edit reloads the notebook from disk, so unsaved kernel output can be lost.
  • After a dropped SSH connection, the remote Jupyter process can continue running until you reconnect and quit.