Marimo Reactive Notebook
A reactive Python notebook powered by Marimo + Pyodide. Cells re-execute automatically when dependencies change. Nothing leaves your machine.
Unlike traditional notebooks, Marimo is reactive — change a cell and all dependent cells update automatically. No stale state, no hidden bugs. Notebooks are stored as pure Python files.
Why Marimo over Jupyter?
| Feature | Marimo | Jupyter |
|---|---|---|
| Reactivity | Cells auto-update when dependencies change | Manual re-run required |
| No hidden state | Deleting a cell removes its variables | Variables persist invisibly |
| File format | Pure .py files (git-friendly) | JSON .ipynb (merge conflicts) |
| Reproducible | Always — deterministic execution order | Often not — depends on run order |
| Interactive UI | Built-in sliders, dropdowns, tables | Requires ipywidgets |
Install packages:
import micropip
await micropip.install("seaborn")Use DuckDB:
import micropip
await micropip.install("duckdb")
import duckdb
result = duckdb.sql("SELECT 42 AS answer")Reactive variables: Change x in one cell and every cell using x re-runs automatically:
# Cell 1
x = mo.ui.slider(1, 100, value=50, label="Threshold")
x
# Cell 2 (auto-updates when slider moves)
filtered = df[df["value"] > x.value]
mo.ui.table(filtered)