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.


  • reactive: run a cell and marimo automatically runs affected cells and updates their outputs

  • interactive: bind sliders, tables, plots, and more to Python — no callbacks required

  • reproducible: no hidden state, deterministic execution order — code with confidence in your notebook’s correctness

  • deployable: executable as a script, deployable as an app

  • 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