marimo
Reactive Python notebook stored as pure .py files: no hidden state, Git-friendly, SQL built in, deploys as apps or WASM.
🔗 Visit marimoDescription
Data scientists write their analyses in 'notebooks' — documents that mix code, text and charts. The standard tool, Jupyter, has old design flaws: results can silently get out of sync with the code, and its files don't work well with team collaboration tools. marimo is a modern replacement that fixes those flaws, and it can even turn a notebook into a small interactive web page.
marimo is a reactive Python notebook that fixes the two structural problems of Jupyter: hidden state and unversionable files. Notebooks are stored as pure Python files, so they diff cleanly in Git and run as scripts; execution is a reactive dependency graph, so changing a cell automatically re-runs everything that depends on it and stale state simply cannot exist. SQL is first class — cells can query dataframes (Polars, Pandas), DuckDB, PostgreSQL, MySQL or SQLite and return results as dataframes. Interactive UI elements like sliders, dropdowns, dataframe viewers and chat panels bind directly to Python values without callback plumbing, which lets a notebook double as a deployable web application, a slide deck, or a WebAssembly page that runs entirely in the browser. AI-assisted coding is built in, and a VS Code extension plus CLI cover both editor camps. In one tool it replaces Jupyter, Jupytext, ipywidgets, Papermill and part of Streamlit. marimo is Apache 2.0 with no paid tier, has 21k+ GitHub stars, and is used at Stanford, UC Berkeley, OpenAI, BlackRock, Shopify and Moderna.
💬 Our review
The short version: if you're starting a new Python data project today, this is probably the notebook to pick — free, modern, and it removes Jupyter's classic traps.
marimo attacks the two things everyone quietly hates about Jupyter — hidden out-of-order state and JSON files that make code review impossible — and its answers are the right ones: a reactive dependency graph and pure-Python storage. The deploy-as-app story is a real bonus; many teams can delete a Streamlit wrapper that existed only to share a notebook. Adoption names (OpenAI, BlackRock, Stanford) and 21k+ stars say this is past the experiment phase. The honest costs: the reactive model enforces discipline — no cyclic dependencies, no redefining a variable across cells — so gnarly legacy notebooks won't port without refactoring; the Jupyter extension and widget ecosystem doesn't carry over; and very expensive cells need explicit lazy execution configuration to avoid unwanted re-runs. Against alternatives: Jupyter still wins on ecosystem breadth, Hex on hosted team collaboration, Observable on JS-native data apps. But marimo is free, Apache 2.0, with no paid tier and no lock-in — for new Python data and ML projects in 2026, it should honestly be the default choice.
💰 Pricing
📊 Global score
🤖 AI-enriched data
Apache 2.0 open source, no paid tier
Pros
No hidden state (reactive execution)
Pure .py files, Git-friendly
Deploys as web app or WASM
Cons
Jupyter widgets don't carry over
Legacy notebooks need refactoring
