Prepare notebook results. Share them anywhere.
Documentation · Getting started · Browser example · Reference
Precompute selected input combinations from a marimo reactive Python notebook and share the results as a notebook export. Applications and agents read its static files without running Python or receiving the notebook source.
- Choose the results. Publish named data, tables, charts, rendered cells, and interactive widgets for a finite set of states.
- Reuse the computation. Reuse prepared states across exports and marimo's native cell cache when a new state needs to run.
- Build your own application. Read through Python, TypeScript, or the documented export format. Your application owns presentation and deployment.
- Verify what you ship. The exporter and
marimo-export verifycompare every asset with its digest. The browser reader validates the index, then checks each asset's size and format before decoding.
Try the exported application or compare deployment options.
Install with uv in a Python project:
uv add marimo-exportThe quickstart creates report.py and
report.export.yaml, selecting weekly and monthly reports. Build and verify them:
mkdir -p dist
uv run marimo-export build report.py --spec report.export.yaml --output dist/report
uv run marimo-export verify dist/reportBuilding executes notebook code with your Python environment's access. The
result is index.json and its assets, ready to read or serve from a static host.
from marimo_export import open_export
export = open_export("dist/report")
print(dict(export.state("monthly").output("summary").json()))
# {'days': 30, 'label': 'Last 30 days'}- Choose states and outputs, build or capture a live session, and understand caching.
- Read an export, build a browser application, or deploy updates.
- Look up the Python API, TypeScript API, CLI, and export format.
See compatibility for runtime and loader requirements, and integrity and trust before mounting executable widgets or custom modules.