thcThought Control

marimo

Reactive, reproducible Python notebooks stored as plain .py files.

marimo.io ↗repo ↗docs ↗MCP server docs ↗AI tools (edit_notebook in agent mode) ↗marimo pair: notebooks as a tool for agents (2026-07-20) ↗marimo-pair repo ↗Marimo is joining CoreWeave ↗

license
Apache-2.0. CoreWeave's acquisition announcement says the notebook 'will remain freely available and permissively-licensed'. marimo-pair is also Apache-2.0.
language
Python (kernel/server), TypeScript/React (front end)
backing
Marimo Inc. (founders Akshay Agrawal, Myles Scolnick; $5M seed led by AIX Ventures, Nov 2024), acquired by CoreWeave (announced Oct 2025).
stars
23,076 (as of 2026-10-09)
downloads
558,731/week PyPI marimo (pypistats, 2026-10-09)
latest release
0.25.1, 2026-10-01
first release
2022-01
borrow

The best reference in this group for how an agent should edit a live structured instance; different medium and job from scene.

Borrow from it: take a specific idea, API or format.

the steelman: the best honest case for it

marimo fixes the reproducibility rot that made Jupyter a poor medium for teaching and for agents: because execution follows a dataflow graph, what you see is always what the code produces, and the notebook is a plain .py file that diffs, reviews and runs as a script or app. That same rigour makes it the best agent substrate here. With marimo pair an agent works inside the live kernel, inspects any value with ordinary Python, and commits cells through transactions that marimo validates exactly as it validates a human's edit, rejecting the whole batch and naming the broken cells if the graph would break. The team learned in public that fixed MCP read tools were a detour and that 'give the model Python plus a small transactional API' works better: a design lesson worth more than the code. It is funded (CoreWeave), shipping weekly, and permissively licensed.

scores
datadriveseeedittimeratetermpxteachmatureopen
UI as data3 scene 5Notebook is a Python file of cells; outputs are code-defined, not a JSON UI value.
Agent can drive it4 scene 5Live create/edit/run via marimo pair, but the API is internal and unversioned, and MCP is read-only.
Agent can see it4 scene 5Structured live state via kernel Python; rendered view not offered to the agent as such.
Small, targeted edits4 scene 5Cell-addressed, transactional, validated.
Time travel2 scene 0Undo in the editor; deterministic re-execution; no agent history API.
Live data rate2 scene 5
Terminal native0 scene 5
Pixel graphics4 scene 4
Teaching3 scene 3Widely used for interactive course notebooks and slides; no tours or narration.
Maturity4 scene 1
Openness4 scene 4Apache-2.0, company-controlled (CoreWeave).

marimo scene now scene planned

how agents use it

How

Three routes: (1) MCP server via `marimo edit notebook.py --mcp` (read-only inspection tools); (2) marimo pair, an agent skill plus CLI (`execute-code`) that runs Python in the live kernel, with `marimo._code_mode` to create/edit/delete/run cells in validated transactions (Claude Code, Codex CLI); (3) editing the .py file with `--watch`. Plus the built-in AI chat with agent-mode cell editing.

Wiring it in

Low: `npx skills add marimo-team/marimo-pair` and a running notebook.

Seeing the result

Arbitrary live kernel values via executed Python; per-cell status (clean/errored/broken upstream) returned after each batch; notebook structure via MCP.

Small edits

Cell-id-addressed create/edit/delete/run, batched and atomically validated; rejected batches name the faulty cells.

History

No agent-facing history or replay; reproducibility comes from deterministic DAG re-execution, not a recorded log. Code-mode API is explicitly unversioned/internal.

In short

The most serious agent integration in this group: a model operates a live notebook with structured, transactional, validated edits.

architecture

A notebook is a Python file of cells; marimo statically analyses each cell's definitions and references to build a dataflow DAG. Running or editing a cell reruns its dependents (or marks them stale), and deleting a cell removes its variables, so there is no hidden state and the outputs always match the code. Notebooks run as apps (`marimo run`), as scripts, or in the browser via WebAssembly; `--sandbox` pins inline dependencies for reproducibility. UI elements (mo.ui.*) are reactive: interacting reruns dependent cells.

performance

No published numbers for update rate. Live refresh is cell reruns (e.g. timer-driven refresh UI elements), seconds-scale.

adoption and upkeep

Adoption

Fast-growing Jupyter alternative (23k stars, ~0.56M weekly downloads); integrations into Quarto, Jupyter Book and MDX. Named organisational users not verified here.

Maintainability

Very active, well-funded, with a growing contributor base.

Releases: Every 1–3 weeks: 0.24.0 2026-08-17, 0.24.1 2026-09-10, 0.24.2 2026-09-11, 0.25.0 2026-09-23, 0.25.1 2026-10-01. · Contributors: ~359 (GitHub, incl. anonymous) · Recent: 535 PRs merged since 2026-07-11; second launch week started 2026-09-28. · Bus factor: medium-high: two founders dominate commits (mscolnick 2,629, akshayka 1,239) but a funded team under CoreWeave.

weaknesses
and thc-scene

Overlap

Agent operating a live, stateful instance with addressable units (cells vs nodes), structured readback, and validation before applying changes.

What scene would be reinventing

Transactional, validated, id-addressed edits to a live document by an agent, with per-unit status reported back; marimo pair already does this well for notebooks.

The gap it leaves

A terminal UI with high-rate data streams bypassing the model, screen-as-text readback, pixel layer and teaching tours with recorded history; marimo is a browser notebook without an agent-facing history.

What to borrow

  • Batch transactions: queue patches in a context, validate the whole batch (ids exist, bindings resolve, no cycles), apply atomically or reject naming the faulty nodes.
  • Return per-node status after a batch (clean / errored / broken by upstream).
  • Self-describing agent API: the skill tells the model to call help() at runtime so docs and implementation can't drift.
  • Lesson from the 'MCP detour': fixed read-only tools underperform a general query surface; offer a flexible state query, not only canned getters.
sources
  1. marimo MCP docs docs.marimo.io
  2. marimo AI tools docs docs.marimo.io
  3. Implementing marimo pair (Trevor Manz, 2026-07-20) marimo.io
  4. CoreWeave acquires Marimo coreweave.com
  5. Simon Willison on the acquisition (2025-10-31) simonwillison.net
  6. HPCwire: Marimo emerges with $5M seed hpcwire.com
  7. marimo launch week 2 marimo.io
  8. GitHub API marimo-team/marimo api.github.com
  9. pypistats marimo pypistats.org