marimo
A library for making reactive notebooks and apps
What it is and what it does
Marimo is a reactive notebook environment designed as an alternative to traditional notebooks. Unlike Jupyter, marimo automatically tracks cell dependencies and re-runs affected cells when you modify code or interact with UI elements, eliminating hidden state and keeping outputs consistent with code. Notebooks are stored as pure Python files (executable as scripts), can be deployed as interactive web apps, and support SQL queries, dataframe filtering, and AI-assisted code generation.
The package bundles a modern editor with code completion via jedi, syntax highlighting with pygments, and interactive UI elements (sliders, dropdowns, tables, chat interfaces) that bind directly to Python without callbacks. It includes built-in package management, deterministic execution based on variable references rather than cell order, and support for deployment via web services using starlette and uvicorn.
Use it for:
- Build reproducible data analysis workflows that auto-update when inputs change, replacing manual cell re-running
- Deploy interactive dashboards and parameter-driven reports as web apps without rewriting code for a web framework
- Convert notebooks to version-control-friendly Python files that can be executed as scripts or tested with pytest
- Create AI-assisted notebooks that generate cells with context about in-memory variables and data schemas
- Query databases or dataframes with SQL while keeping results synchronized to Python variables
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
A reactive Python notebook environment that automatically runs dependent cells when code changes, stores notebooks as pure Python files, and deploys as scripts or web apps.
Yes. Marimo is actively maintained with no known vulnerabilities, and offers a genuine alternative with reactive semantics that solve real problems (hidden state, manual re-running). Low install friction, permissive Apache-2.0 license, and broad Python version support (3.10–3.14) make it straightforward to adopt. Install if you want reproducible, git-friendly notebooks with automatic dependency tracking; skip if you need deep ecosystem integration with existing .ipynb workflows.
Install
marimo on PyPI
pip
pip install marimouv
uv add marimopoetry
poetry add marimoInstalling marimo
Before you install
Low friction installation with a pure wheel distribution. Active maintenance with recent releases; last commit 2026-08-14. Supports Python 3.10 through 3.14. Dependency chain includes web framework (starlette, uvicorn), data processing (narwhals), and editor support (jedi) — all common, well-maintained packages.
License in practice
Licensed under Apache-2.0 (permissive), allowing use in commercial and proprietary projects with minimal restrictions. Derivative works and modifications are permitted provided license and copyright notices are retained.
Quickstart
pip install marimo
marimo edit
# Or run as a script:
python your_notebook.py
# Or deploy as a web app:
marimo run your_notebook.py
Requires Python 3.10 or later.
Verify before relying
- Whether the reactive execution model handles all edge cases in complex dependency graphs without user intervention
- Performance characteristics when working with very large dataframes or long-running cell computations
- Compatibility of SQL query engine with all advertised database and warehouse backends
Package facts
| License | Apache-2.0 (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 20 — click, jedi, markdown, pymdown-extensions, pygments, tomlkit, pyyaml, uvicorn, starlette, python-multipart, websockets, loro, typing-extensions, docutils, psutil, itsdangerous, narwhals, packaging, msgspec, pyzmq |
| Maintenance | actively maintained — 14 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 2,721,159/month — #2,922 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: marimo-0.23.16-py3-none-any.whl
Tags
More Application Frameworks packages
FastAPI is a Python web framework for building…
permissive · top 100 on PyPI
annotated-docProvides a way to document function parameters,…
permissive · top 100 on PyPI
textualTextual is a Python framework for building…
permissive · top 100 on PyPI
typerTyper builds command-line applications from…
permissive · top 1,000 on PyPI
mcpBuild and connect to Model Context Protocol…
permissive · top 1,000 on PyPI
WerkzeugWerkzeug is a WSGI utility library providing…
permissive · top 1,000 on PyPI
ipyflow-coreA reactive Python kernel for Jupyter that…
permissive · top 15,000 on PyPI
nbclientnbclient executes Jupyter notebooks…
permissive · top 1,000 on PyPI
itablesRenders Pandas and Polars DataFrames as…
permissive · top 5,000 on PyPI
nbdevnbdev is a notebook-driven development platform…
permissive · top 15,000 on PyPI
nbvalA pytest plugin that treats Jupyter notebooks…
permissive · top 15,000 on PyPI
solaraSolara is a React-style Python framework for…
permissive · top 15,000 on PyPI
jupytextJupytext converts Jupyter notebooks to and from…
permissive · top 5,000 on PyPI
jupyterlabJupyterLab is an extensible web-based…
permissive · top 1,000 on PyPI
jupyter-dashJupyter Dash lets you develop and run Plotly…
permissive · top 15,000 on PyPI
nb-cleannb-clean removes execution counts, metadata,…
permissive · top 15,000 on PyPI