Announcing marimo AI:

Get started

Deployable and Reproducible

marimo notebooks can be deployed as web apps, run as scripts, executed in browsers via WASM, and made fully reproducible with embedded dependencies using modern Python tooling.

Deployable and Reproducible

One of marimo’s greatest strengths is that notebooks double as reusable and deployable software artifacts. Unlike traditional notebooks, marimo notebooks can seamlessly transition from exploration to production deployment without requiring rewrites or complex packaging steps.

marimo runs by default as an interactive notebook, but marimo notebooks can also be seamlessly reused for and deployed as production web applications and data pipelines.

Apps

You can run your marimo notebook as a clean, interactive web application. When you run marimo run notebook.py, marimo strips away the development interface and presents your notebook as a polished app that end users can interact with through widgets and controls you’ve defined.

This is perfect for creating data dashboards, interactive reports, or analytical tools that non-technical stakeholders can use. The same notebook you used for exploration becomes a production-ready application with no additional coding required. Users see only the outputs, visualizations, and interactive elements - not the underlying code or development interface.

Apps made with marimo also support custom CSS styling, layout control, and the ability to hide or show specific cells. You can create professional applications that look like custom web apps rather than exposed notebooks.

Scripts

Since marimo stores notebooks as Python files, you can execute them directly with python notebook.py, making them well-suited for automation, batch processing, or integration into existing workflows.

This capability bridges the gap between interactive analysis and production automation. The same notebook you use for data exploration can be scheduled as a cron job, called from other scripts, or integrated into data pipelines without modification.

Scripts made with marimo follow the reactive execution model, ensuring that all dependencies are properly resolved even when running non-interactively. It also means your automated processes benefit from the same consistency guarantees as your interactive sessions.

Browser (WebAssembly)

You can choose to share marimo as lightweight notebooks without a backend using WebAssembly (WASM) by exporting it via marimo export html-wasm. This way you can share marimo notebooks to run entirely in the browser without requiring a Python server. Anyone can run it by visiting a URL - no installation, no setup, no server infrastructure required.

WASM is powered by Pyodide, which brings the Python scientific stack to the browser. It doesn’t cover all the packages, but the most popular ones from the PyData stack are supported. Users can interact with your notebook, modify parameters, and see results update in real-time, all while running completely client-side. This feature makes marimo notebooks incredibly portable and accessible, and you won’t need to worry about untrusted code from users.

Primary use cases include education, demos, incremental or hybrid computing with remote servers, or sharing interactive analyses without requiring recipients to install Python or manage dependencies. The notebook becomes a self-contained web application that works on most modern browsers.

Reproducible down to the packages, with uv

Instead of maintaining separate requirements.txt files or complex environment setups, you can embed dependencies directly in the notebook file via inline script metadata, thanks to a tight integration with the uv package manager. The following is an example:

# /// script
# requires-python = ">=3.12"
# dependencies = [
#     "numpy>=1.20"
# ]
# ///

So when someone receives your marimo notebook, they’ll automatically get the correct environment populated with dependencies based on this embedded metadata. This feature makes marimo notebooks self-contained and eliminates the “it works on my machine” problem that plagues collaborative data work.