AI/TLDR

marimo

A reactive Python notebook stored as plain .py, runnable as a script or deployable as an app

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.

bashbash
pip install marimo

Run 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.

bashbash
pip install marimo && marimo tutorial intro

Commands 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.

ToolStarsWhat it does
Streamlit★ 45kA Python framework that turns scripts into interactive data and ML web apps with simple widget calls and no frontend code.
Gradio★ 43kA Python library for quickly building shareable web demos and UIs for machine learning models, APIs, and arbitrary functions.
Reflex★ 28.6kA framework for building full-stack web apps entirely in Python, compiling component code to a React frontend and Python backend.
Dash★ 24.3kA Python framework from Plotly for building analytical web dashboards and data apps with interactive charts and no JavaScript required.
marimo★ 21.5kA reactive Python notebook stored as plain .py, runnable as a script or deployable as an app
NiceGUI★ 15.9kA backend-first Python UI framework built on FastAPI and Vue for creating web interfaces, dashboards, and internal tools.
Data Formulator★ 15.8kA Microsoft Research tool that combines a UI with AI to help users create rich data visualizations through natural language and direct manipulation.
Mesop★ 6.6kA Python UI framework, started at Google, for rapidly building AI demos and internal web apps using composable components.