Overview
marimo is a Python notebook that reacts to changes. When you run a cell or move a UI control, marimo automatically reruns the cells that depend on it, so your code, outputs, and program state always stay in sync. Notebooks are saved as pure Python files, which makes them readable in diffs and easy to track in git.
It is aimed at data scientists, analysts, and Python developers who find traditional notebooks hard to reproduce or share. Because there is no hidden state and execution is deterministic, the same notebook gives the same result each time it runs.
As a data app builder, marimo lets the same .py file serve three jobs: an interactive notebook for exploration, a script you can run from the command line, and a web app you can deploy for others to use. It also offers first-class SQL support for querying dataframes and databases.
What it does
- Reactive execution: running a cell automatically reruns dependent cells, or marks them as stale in lazy mode
- Stored as pure .py files, making notebooks git-friendly and easy to review
- Interactive UI elements such as sliders, dropdowns, tables, and plots bind to Python with no callbacks
- Built for data: query dataframes and databases with SQL, and page, search, filter, and sort large dataframes
- Deployable as an interactive web app, as slides, or in the browser via WASM
- Executable as a Python script parameterized by CLI arguments, with no hidden state
Getting started
Install marimo from PyPI, then open the built-in intro tutorial to learn the basics.
Install marimo
Install the package from PyPI using pip.
pip install marimoRun the intro tutorial
Launch the interactive tutorial to see reactive execution in action. The README also shows you can do both steps in one line.
pip install marimo && marimo tutorial introCommands and code are distilled from the project's own documentation — always check the official repo for the latest.
When to use it
- Exploring and cleaning data in a reproducible notebook where reruns stay consistent and there is no hidden state
- Building a small interactive data app with sliders, dropdowns, and tables, then deploying it as a web app
- Tracking notebooks in git as plain .py files so changes show up clearly in code review
- Running a notebook as a command-line script, parameterized by CLI arguments, in an automated pipeline
How marimo compares
marimo alongside other open-source data app builders tools AI/TLDR tracks, ranked by GitHub stars.
| Tool | Stars | What it does |
|---|---|---|
| Streamlit | ★ 45k | A Python framework that turns scripts into interactive data and ML web apps with simple widget calls and no frontend code. |
| Gradio | ★ 43k | A Python library for quickly building shareable web demos and UIs for machine learning models, APIs, and arbitrary functions. |
| Reflex | ★ 28.6k | A framework for building full-stack web apps entirely in Python, compiling component code to a React frontend and Python backend. |
| Dash | ★ 24.3k | A Python framework from Plotly for building analytical web dashboards and data apps with interactive charts and no JavaScript required. |
| marimo | ★ 21.5k | A reactive Python notebook stored as plain .py, runnable as a script or deployable as an app |
| NiceGUI | ★ 15.9k | A backend-first Python UI framework built on FastAPI and Vue for creating web interfaces, dashboards, and internal tools. |
| Data Formulator | ★ 15.8k | A Microsoft Research tool that combines a UI with AI to help users create rich data visualizations through natural language and direct manipulation. |
| Mesop | ★ 6.6k | A Python UI framework, started at Google, for rapidly building AI demos and internal web apps using composable components. |