Tithon: un kernel de Jupyter persistente que sobrevive al cierre del editor

Fuentes: Tithon: a persistent Jupyter kernel that outlives your editor

Tithon es una herramienta de código abierto que mantiene vivo el kernel de Jupyter y todo su output en el host, independientemente del cliente que lo lanzó. El proyecto, aún en fase alpha pero en uso diario, resuelve un problema habitual: al cerrar JupyterLab, VSCode o perder una conexión SSH, el kernel muere junto con el editor y los mensajes iopub emitidos durante la ausencia se pierden porque nunca se persisten en el servidor. Tithon traslada la fuente de verdad al host mediante un demonio que corre en segundo plano, se comunica por un socket Unix (sin TCP) y registra cada evento en un SQLite append-only con WAL, junto a snapshots plegados del estado de visualización. El kernel se ejecuta detached con setsid, de modo que sobrevive a caídas, reinicios o actualizaciones del demonio y se reengancha al volver. Los clientes se conectan indicando el último número de secuencia visto y reciben un snapshot más un flujo delta ordenado y sin huecos, lo que convierte una reconexión en una simple reanudación del stream. Además, las salidas ricas (imágenes) se guardan como ficheros referenciados por hash, nunca embebidas en base64, y el estado de los ipywidgets se pliega en un snapshot, de modo que una barra tqdm o un slider reaparecen en su valor real. En el lado del editor, una extensión para VSCode abre un fichero .py con marcadores # %% como si fuera un notebook, con los mismos botones Run y el mismo output enriquecido que un .ipynb, pero sin que los outputs contaminen el fichero fuente: los diffs quedan limpios y el estado plegado se guarda en .tithon/cells dentro del proyecto, junto a las imágenes deduplicadas por sha256, listas para commit. La CLI se distribuye por PyPI (pip install tithon o uv add tithon) y la extensión en el Marketplace de VS Code. Requiere Python 3.11+, un host tipo Unix y, en Windows, WSL. El diseño completo está documentado en docs/SPEC.md.