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
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.
reactive: run a cell and marimo automatically runs dependent cells
interactive: bind sliders, tables, plots, and more to Python — no callbacks required
reproducible: no hidden state, deterministic execution order
executable: execute as a Python script, parametrized by CLI args
shareable: deploy as an interactive web app, or run in the browser via WASM
data-centric: built-in SQL support and data sources panel
developer-friendly: git-friendly
.py
file format, GitHub Copilot, fast autocomplete, code formatting, 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