
marimo
Reactive Python notebook stored as a plain .py file
About marimo
marimo is a Python notebook that fixes the two things people complain about most in Jupyter. The first is hidden state: in marimo, changing a cell reruns every cell that depends on it, and deleting a cell deletes its variables and updates whatever used them, so what you see on screen and what is actually in memory cannot drift apart. For expensive notebooks you can configure it to mark dependent outputs stale instead of rerunning them automatically. The second is the file format. A marimo notebook is stored as a plain .py file, which means it diffs cleanly in a pull request, imports as a module, runs as a script in a pipeline, and can be tested with PyTest like any other Python.
The project is Apache-2.0 with 23,381 GitHub stars and commits landing continuously. The endorsements on its own homepage are unusually specific: Simon Willison, creator of Django and llm; Samuel Colvin, founder of Pydantic, who writes that marimo solves his well-known frustrations with Jupyter notebooks elegantly; Anthony Goldbloom, founder of Kaggle and now Sumble, who calls it one of the few truly transformational technologies for him; and Eric Zhang of Thinking Machines. The case studies are named too: Bunkerhill Health, DNB Cyber Defense (who replaced Databricks notebooks with it), Sumble (who replaced Jupyter) and SLAC National Accelerator Laboratory. One caveat worth stating up front: there is no pricing page and no published business model, which is a neutral fact for a reader but a real open question about the company.
You install it with pip and open a notebook, or try one in the browser on molab, the project's free hosted notebook platform where notebooks are public by default. In the editor, cells form a dependency graph rather than a sequence, so execution order is deterministic regardless of the order you ran things in. Interactive elements are first-class: a slider, dropdown, dataframe table or selectable plot is bound to a Python variable, and moving it reruns the cells that depend on it without any callback wiring.
Because the file is ordinary Python it leaves the notebook behind cleanly. Serialise package requirements into the notebook with PEP 723 metadata and marimo manages the virtual environment for you with uv. Export to WebAssembly-powered HTML to share a running notebook as a static page, or serve it as a web app from the marimo CLI, or run the same file as a script in a pipeline. For agent workflows, marimo pair connects any AI agent to a running notebook session, and the editor itself carries copilot-style completion, inline edits and context-aware chat against hosted or local models.
- •Reactive Execution - Run one cell and every dependent cell reruns; delete a cell and its variables go with it. Expensive notebooks can mark outputs stale instead of autorunning.
- •Stored as Pure Python - The notebook is a .py file: version it with Git, review it in a pull request, import it as a module, run it as a script, test it with PyTest.
- •Interactive Elements Without Callbacks - Sliders, dropdowns, dataframe tables and selectable plots bind directly to Python values, and changing one reruns what depends on it.
- •First-Class SQL Cells - Query dataframes and databases from SQL cells that integrate with Polars, Pandas, PyArrow, DuckDB, SQLite, Postgres and MySQL among others.
- •Share as an App, Run as a Script - Export to WebAssembly-backed HTML or serve the notebook as a web app from the CLI, with the same file still runnable headlessly.
- •Reproducible Environments - Package requirements can be serialised into the notebook itself with PEP 723 metadata, with marimo managing the virtual environment.
- •Built for Agents - marimo pair connects an external AI agent to a live notebook session, and the editor has completion, inline edits and context-aware chat using any model, hosted or local.
Data scientists, ML engineers, analysts and researchers who have been bitten by a notebook that ran green and was wrong, and engineering teams that want notebooks to go through code review like everything else. The Git-friendly format is the feature that wins arguments with a platform team. Educators are a real constituency too, with a classes programme on the site. The organisations that have written it up publicly (DNB Cyber Defense, Bunkerhill Health, Sumble, SLAC) are mostly replacing an incumbent notebook rather than adopting a first one.
Two honest caveats. This is the least obviously AI-shaped entry in this directory: it is a notebook with AI assistance and agent integration built in, not an AI product, and someone arriving from an AI tools list may feel mis-sold. And reactivity is a real constraint, not only a gift. Notebooks with expensive cells need the stale-output mode configured, and the no-hidden-state discipline means some patterns that work in Jupyter (redefining a name in a later cell, for instance) are not allowed. If you want a notebook that does exactly what Jupyter does, this is not it, which is rather the point.
Pricing
No pricing page found
Free and Apache-2.0. There is no pricing page on marimo.io (the /pricing path returns 404), and molab, the hosted notebook platform, is described on their own site as free. The for-enterprises page carries case studies and a contact form but no prices.
Checked 2026-10-31















