Skip to main content

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?
FeatureMarimoJupyter
ReactivityCells auto-update when dependencies changeManual re-run required
No hidden stateDeleting a cell removes its variablesVariables persist invisibly
File formatPure .py files (git-friendly)JSON .ipynb (merge conflicts)
ReproducibleAlways — deterministic execution orderOften not — depends on run order
Interactive UIBuilt-in sliders, dropdowns, tablesRequires 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)
Share this article