marimo is a reactive notebook for Python that models notebooks as dataflow graphs. Run a cell or interact with a UI element, and marimo automatically runs affected cells (or marks them as stale), keeping code and outputs consistent and preventing bugs before they happen. Every marimo notebook is stored as pure Python, executable as a script, and deployable as an app.
Built from the ground up
marimo was built from the ground up to solve well-known problems associated with traditional notebooks.
pip install marimo && marimo tutorial intro
uv pip install marimo && marimo tutorial intro
conda install -c conda-forge marimo && marimo tutorial intro
Developer experience is core to marimo, with an emphasis on reproducibility, maintainability, composability, and shareability.
Highlights.
🚀 batteries-included: replaces
jupyter
,streamlit
,jupytext
,ipywidgets
,papermill
, & more⚡️ reactive: run a cell, and marimo reactively runs all dependent cells or marks them as stale
🖐️ interactive: bind sliders, tables, plots, and more to Python — no callbacks required
🔬 reproducible: no hidden state, deterministic execution, built-in package management
🏃 executable: execute as a Python script, parametrized by CLI args
🛜 shareable: deploy as an interactive web app or slides, run in the browser via WASM
🛢️ designed for data: query dataframes and databases with SQL, filter and search dataframes
🐍 git-friendly: notebooks are stored as
.py
files⌨️ a modern editor: GitHub Copilot, AI assistants, vim keybindings, variable explorer, and more
⚡ marimo notebooks run automatically with interactions and code changes
✨ express yourself with markdown, LaTeX, tables, accordions, tabs, grids, and more
🔬 do reproducible science in an environment that makes your data tangible
🚀 deploy as interactive web apps