Registry / data / marimo

marimo

JSON →
library0.24.0pypypi✓ verified 24d ago

marimo is an open-source reactive Python notebook library that enhances traditional notebooks by guaranteeing consistency between code and outputs. It stores notebooks as pure Python files, making them Git-friendly, executable as standalone scripts, and deployable as interactive web applications. marimo also provides built-in UI elements and first-class SQL support. The current version is 0.23.1, and the project has an active development and release cadence.

pip install marimo
INSTALL
IMPORT
SIG · MARIMO
M
marimo
datapythonv0.24.0
Install
11.5s avg
Import
2814ms
Disk
689MB
Pass rate
5/ 10
Env Coverage5 / 10
glibc
3.93.13
musl
3.93.13
Install & Compatibility
Where this runs
tested against v0.24.0 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
glibc
py 3.10
1/2 runs
✓ 12.2s
py 3.11
1/2 runs
✓ 11.7s
py 3.12
1/2 runs
✓ 10.65s
py 3.13
1/2 runs
✓ 10.85s
py 3.9
1/2 runs
✓ 11.95s
689MB installed
● package 689MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

marimo
import marimo as mo
from marimo import *
marimo explicitly disallows `import *` to maintain a clear dependency graph and avoid ambiguity.
ui elements
mo.ui.slider(...) mo.ui.dropdown(...)
UI elements are accessed through the `mo.ui` submodule.

This quickstart demonstrates creating a simple reactive marimo notebook. Save this code as a `.py` file (e.g., `my_notebook.py`) and run `marimo edit my_notebook.py` in your terminal to open it in your browser. The second cell will automatically update as you interact with the slider in the first cell.

import marimo as mo # Create an interactive slider slider = mo.ui.slider(1, 100, value=50, label="Select a value") slider # A reactive cell that uses the slider's value # This cell will automatically re-run when the slider moves. mo.md(f"The current value is **{slider.value}**")
marimo --version
Debug
Known issues
breakingmarimo's reactive model does not track mutations to objects across cells. If you modify an object in one cell and expect another dependent cell to react to that mutation, it will not work as expected. Instead, create new objects or perform all mutations within a single cell to ensure reactivity.
fix
Avoid in-place mutations of objects across cell boundaries. Instead, reassign variables to new objects, or ensure all operations on a specific object occur within the same cell that defines it.
affects: All versions
breakingEach variable can be defined in only one cell to ensure a clear and reproducible execution order. Defining the same variable in multiple cells will result in an error.
fix
Refactor your code to ensure each variable is assigned a value in only one cell. Use local variables or pass values between cells explicitly.
affects: All versions
breakingmarimo does not allow `import *` (importing all symbols from a library) to prevent ambiguity and maintain a well-defined dependency graph.
fix
Use explicit imports (e.g., `import marimo as mo` or `from marimo.ui import slider`) instead of wildcard imports.
affects: All versions
breakingCircular dependencies between cells are not allowed. If Cell A depends on Cell B, Cell B cannot simultaneously depend on Cell A. This prevents infinite loops and ensures a deterministic execution flow.
fix
Analyze your cell dependencies and refactor your code to break any circular references. This typically involves rethinking data flow and variable assignments.
affects: All versions
gotchaUI elements (e.g., `mo.ui.slider`) will reset to their initial `value` argument if the cell defining them reruns. This can happen if the cell itself depends on other changing variables.
fix
Isolate UI element definitions in cells that do not have upstream dependencies that would cause them to re-execute unnecessarily. Use `mo.state` for persistent, mutable state across reruns if an element's value needs to survive cell re-execution without resetting.
affects: All versions
gotchamarimo notebooks are pure Python files (`.py`), which means GitHub does not render their outputs directly like Jupyter's `.ipynb` files.
fix
To share notebooks with rendered outputs on GitHub, configure marimo to automatically snapshot outputs to an `.ipynb` file or use services like molab for live previews.
affects: All versions
Errors
Common errors & fixes
SyntaxError: importing symbols with import * is not allowed in marimo
marimo's reactive execution model and pure Python file format are incompatible with wildcard imports (`from module import *`) as they make it unclear which names are present in the namespace and conflict with its internal design for reproducible execution.
fix
Replace `from module import *` with explicit imports, such as `import module` and then access members using `module.item`, or `from module import specific_item`.
Multiple definitions of a variable across cells (leads to runtime errors or inconsistent state)
marimo enforces that each global variable can be defined in only one cell to ensure a reproducible and consistent program state. Defining the same variable in multiple cells violates this fundamental principle.
fix
Consolidate the definition of a variable into a single cell. Use marimo's built-in dataflow tools (minimap, variables explorer, or dependency graph) to visualize variable definitions and references and refactor your code accordingly.
KeyError: 'plotly_mimetype+notebook'
This error occurs when using Plotly within marimo because marimo's internal integration with Plotly does not correctly handle compound renderer keys like 'plotly_mimetype+notebook', which might be set as the default Plotly renderer.
fix
Explicitly use `mo.ui.plotly()` to render Plotly figures, or ensure that the default Plotly renderer is set to a simple key that marimo can directly access. Upgrading marimo to a newer version might also resolve this, as a fix was discussed on GitHub.
AttributeError: 'CellConfig' object has no attribute '__dict__'
This specific AttributeError occurs during the `marimo convert` process, typically when attempting to convert a Jupyter notebook that contains a markdown cell ending with double quotes, which causes an issue in marimo's code generation for cell configuration.
fix
Before converting, edit the original Jupyter notebook to remove any trailing double quotes from markdown cells that are causing the conversion to fail.
Upgrade
Version history
0.24.0latest on PyPI · released Aug 17, 2026
Audit
Dependencies
clickrequiredPowers the command-line interface.
starletterequiredASGI framework for web server.
uvicornrequiredASGI server for running notebooks as web apps.
websocketsrequiredUsed for real-time communication in the notebook.
msgspecrequiredHigh-performance serialization library.
duckdboptionalProvides SQL capabilities (part of `marimo[sql]`).
polarsoptionalHigh-performance DataFrame library (often used with `marimo[sql]`).
altairoptionalDeclarative statistical visualization library (for interactive plotting).
Agent activity
7 hits · last 30 days
node
4
Resources
marimo — pip install marimo · libregistry