Apache-2.0. CoreWeave's acquisition announcement says the notebook 'will remain freely available and permissively-licensed'. marimo-pair is also Apache-2.0.
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
UI as data
3 scene 5
Notebook is a Python file of cells; outputs are code-defined, not a JSON UI value.
Agent can drive it
4 scene 5
Live create/edit/run via marimo pair, but the API is internal and unversioned, and MCP is read-only.
Agent can see it
4 scene 5
Structured live state via kernel Python; rendered view not offered to the agent as such.
Small, targeted edits
4 scene 5
Cell-addressed, transactional, validated.
Time travel
2 scene 0
Undo in the editor; deterministic re-execution; no agent history API.
Live data rate
2 scene 5
Terminal native
0 scene 5
Pixel graphics
4 scene 4
Teaching
3 scene 3
Widely used for interactive course notebooks and slides; no tours or narration.
Maturity
4 scene 1
Openness
4 scene 4
Apache-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.
Reproducibility by construction: DAG execution, no hidden state, git-friendly .py files.
MCP server (`marimo edit --mcp`) exposes read-only notebook data to agents.
marimo pair (2026): agent runs Python in the live kernel and edits cells through a transactional code-mode API (`marimo._code_mode`) whose batches are validated (syntax, multiply-defined names, cycles) before applying.
Built-in AI panel with an agent mode whose edit_notebook tool adds/removes/updates 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
Code-mode agent API is explicitly internal, unversioned and may change without notice (marimo blog).
MCP server is read-only; edits are not exposed through MCP (docs).
Browser UI only; no terminal renderer.
Live data is cell reruns; not built for high-frequency streams.
Corporate ownership by CoreWeave may steer roadmap toward its cloud (molab).
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.