Skip to content
Tech News
← Back to articles

Show HN: Persistent Jupyter kernel execution and live output streaming in VSCode

read original get Anker 737 Power Bank (PowerCore 24K) → more articles
Why This Matters

Tithon addresses a long-standing annoyance in interactive computing: Jupyter kernels and their output are tied to the client, so closing an editor or dropping an SSH connection can kill a long-running job or wipe the output printed while you were away. By moving session state to the host, it makes remote notebook work on GPU boxes behave more like tmux while preserving rich outputs. Its plain-.py storage and image-as-file approach also make notebooks far more usable for AI coding agents.

Key Takeaways
Worth a Look

Anker 737 Power Bank (PowerCore 24K) — If you're the kind of person babysitting long-running notebook jobs over SSH from a laptop, keeping that laptop alive matters as much as keeping the kernel alive. The Anker 737 is a beefy USB-C power bank that can top up a laptop and phone on the go, so you can close the lid and move without hunting for an outlet. A solid companion for persistent remote sessions.

See Anker 737 Power Bank (PowerCore 24K) on Amazon → Affiliate link — we may earn a commission on purchases, at no extra cost to you. Product picked by AI based on this article; it is not a tested recommendation.

Tithon

Your Jupyter kernel dies with your client. It shouldn't.

Keep a Jupyter kernel—and its output—alive independently of the client. Close your editor, lose your connection, or return later; the same session is still there and still streaming.

Status: alpha. It works and it's in daily use, but you will hit rough edges. Bug reports are genuinely useful — please open an issue.

The problem

You SSH into a GPU box, start a long run in a notebook, and close your laptop. When you come back, depending on your setup:

JupyterLab reconnects, but everything printed while you were away is gone. iopub output is streamed over the WebSocket and never persisted server-side, so there is nothing to replay.

reconnects, but everything printed while you were away is gone. iopub output is streamed over the WebSocket and never persisted server-side, so there is nothing to replay. VSCode Jupyter ties the kernel to the extension-host process. Close the window or drop the network and the kernel dies, taking the session with it.

ties the kernel to the extension-host process. Close the window or drop the network and the kernel dies, taking the session with it. tmux + jupyter console survives the disconnect, but you lose rich output (plots, HTML, widgets) and you can't open the same session from a second client.

The root cause is the same in all three: the source of truth for your session lives on the client, or in a channel that doesn't outlive a disconnect. Tithon moves it to the host.

... continue reading