explaingit

marimo-team/marimo

📈 Trending20,818PythonAudience · developerComplexity · 3/5ActiveLicenseSetup · moderate

TLDR

A reactive Python notebook that auto-updates cells when you change variables, stores files as plain Python, and deploys as interactive web apps without conversion.

Mindmap

mindmap
  root((marimo))
    What it does
      Reactive cells
      Auto re-runs
      Clean state
      Web deployment
    How it works
      Plain Python files
      Git-friendly
      Variable tracking
      SQL support
    Use cases
      Data exploration
      Interactive dashboards
      Slide presentations
      Shareable notebooks
    Tech stack
      Python
      WebAssembly
      SQL
      Web framework
    Features
      AI assistant integration
      Dataframe viewers
      Reactive UI elements
      No-setup browser mode

Things people build with this

USE CASE 1

Build interactive data dashboards that update automatically when you adjust sliders or filters.

USE CASE 2

Create and share reproducible analyses as plain Python files that work with git version control.

USE CASE 3

Deploy notebooks as live web apps or slide decks directly without converting to another format.

USE CASE 4

Write SQL queries that reference Python variables and run against dataframes or databases.

Tech stack

PythonWebAssemblySQLReact

Getting it running

Difficulty · moderate Time to first run · 30min

Requires Python environment setup and WebAssembly toolchain; initial notebook creation and reactivity demo takes time to configure.

Use freely for any purpose including commercial. Keep the notice and disclose changes to the patent grant.

In plain English

marimo is a notebook for writing and running Python, with a different design from Jupyter. A traditional notebook is a list of code cells you can run in any order, which makes it easy to end up with output on screen that no longer matches the code, because you ran an earlier cell and forgot to re-run the cells that depend on it. marimo is reactive: when you change or run one cell, it automatically runs every other cell whose code references that cell's variables (or, in lazy mode, marks them as stale). Deleting a cell also removes its variables from memory, so there is no hidden state lingering behind the scenes. A second core difference is that marimo notebooks are saved as plain Python .py files rather than the JSON format used by Jupyter. That means they show clean diffs in Git, can be imported as normal modules to reuse functions and classes, can be executed from the command line as scripts with parameters, and can be deployed as interactive web apps or slides, or run entirely in the browser through WebAssembly. The README also calls out first-class SQL cells that query dataframes, databases, or lakehouses and return Python dataframes, interactive UI elements such as sliders and dropdowns that re-run dependent cells automatically, built-in package management, pytest support, and AI features that let you connect agent CLIs like Claude Code or use a built-in AI assistant aware of your variables. People reach for marimo when they want notebooks for data work, machine learning experiments, dashboards, or teaching, but they also want reproducibility, version control, and the option to ship the same file as a deployed app. Installation is pip install marimo.

Copy-paste prompts

Prompt 1
Show me how to create a marimo notebook with a slider that filters a dataframe and updates a chart automatically.
Prompt 2
How do I deploy a marimo notebook as an interactive web app that others can use in their browser?
Prompt 3
Write a marimo notebook that queries a CSV file with SQL and displays results in a reactive table.
Prompt 4
How do I convert my Jupyter notebook to marimo to get automatic cell re-running and cleaner state management?
Prompt 5
Show me how to use marimo with Claude Code or GitHub Copilot for AI-assisted notebook development.
Open on GitHub → Explain another repo

Generated 2026-05-21 · Model: sonnet-4-6 · Verify against the repo before relying on details.