Jupyter Notebooks

Open .ipynb files in a dedicated notebook editor and run cells against a live kernel bound to your actual local Python interpreter — not a read-only viewer and not an in-browser kernel.

Prerequisites

CrispyVibe uses your existing Jupyter install — it 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 keeps working.

Opening a notebook

  1. Single- or double-click an .ipynb file in the explorer.
  2. The file opens in the notebook editor — cells and previously saved outputs render 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. In-cell editing and execution shortcuts are provided by the embedded Jupyter Notebook 7 interface.

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 as you move a notebook between inline, split, and Spotlight surfaces — your variables stay defined.

Saving

Save from the notebook toolbar. Jupyter round-trips the file to valid .ipynb, 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. 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 — Cell 1, Cell 2, and so on.

Remote (SSH) notebooks

Notebooks open and run on SSH remote hosts 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 — no extra ports are exposed on the remote machine.

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

The remote server starts on the first notebook you open and is shut down when you quit the app.

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

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 lazily on the first notebook you open and shuts down when you quit the app — no kernel or server process is left running.
  • 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.
  • Reloading after an external edit re-reads from disk, so unsaved kernel output can be lost.
  • A dropped SSH connection can leave a remote Jupyter process running until the next reconnect-and-quit cleans it up.