Skip to main content

marimo-book

PyPI version Python versions CI License: MIT Docs

Build clean, searchable static books from marimo notebooks and Markdown files.

marimo-book is a Jupyter-Book-style static site generator built specifically for marimo .py notebooks. It produces polished multi-page sites with:

  • Anywidgets that render statically — interactive Canvas/Three.js/Plotly widgets without a marimo kernel
  • Static reactivity for discrete sliders (mo.ui.slider with explicit steps) — pre-rendered lookup tables, no kernel
  • WASM render mode per chapter — opt into Pyodide-driven full reactivity for chapters that need it
  • Material for MkDocs theming — full-text search, dark mode, code-copy, breadcrumbs, responsive layout
  • Launch buttons per chapter — molab / GitHub / download .py
  • Incremental build cache — content-hashed; only changed chapters re-render
  • GitHub Pages deploy workflow scaffolded by marimo-book new

Status

Alpha (0.1.x). Used in production by at least one real course (dartbrains.org). The book.yml schema is stable for v0.1; pin a minor version (marimo-book>=0.1.5,<0.2) until 1.0. Major changes always go through a new minor version.

Install

pip install marimo-book

Requires Python 3.11+. Optional extras for opt-in features:

pip install 'marimo-book[social]'      # OpenGraph card generation (libcairo)
pip install 'marimo-book[linkcheck]'   # external-link verification (htmlproofer)
pip install 'marimo-book[pdf]'         # single-PDF export (WeasyPrint)

mkdocs-autorefs (cross-page heading references) ships in the base install — flip cross_references: true in book.yml to enable.

Quickstart

# Scaffold a new book
marimo-book new mybook
cd mybook

# Live-reload dev server (http://127.0.0.1:8000/)
marimo-book serve

# One-shot static build (emits ./_site/)
marimo-book build

# Validate book.yml + content without building
marimo-book check

# Remove build artifacts
marimo-book clean

Deploy to GitHub Pages by pushing the scaffolded workflow (.github/workflows/deploy.yml) to the default branch on a repo with Pages enabled.

How it works

Two-stage build, by design:

content/*.md + *.py + book.yml
  → marimo-book preprocessor
  → _site_src/docs/*.md  +  _site_src/mkdocs.yml
  → mkdocs build (Material theme)
  → _site/

The preprocessor is not a mkdocs plugin — it emits plain Markdown + inline HTML. This keeps the shell swappable: Material today, zensical (Material's Rust successor) tomorrow, or a hand-rolled Jinja shell as a last-resort fallback.

For each marimo .py it runs marimo export ipynb --include-outputs and translates the cells into Markdown + inline HTML — embedding Plotly figures, anywidget mounts, and matplotlib renders directly. For WASM-mode chapters, it routes through marimo's MarimoIslandGenerator and ships marimo's runtime + Pyodide bundle.

book.yml minimal example

title: My Book
description: A static site from marimo notebooks + Markdown.
authors:
  - name: Your Name
repo: https://github.com/you/yourbook

theme:
  palette:
    primary: "#1976D2"

launch_buttons:
  molab: true
  github: true
  download: true

# Static reactivity for discrete mo.ui widgets
precompute:
  enabled: true

toc:
  - file: content/intro.md
  - section: Chapters
    children:
      - file: content/chapter1.py
      - file: content/chapter2.py
        mode: wasm           # this one runs in Pyodide for full reactivity

See marimo-book new for the full starter template, and the book.yml reference for every field.

Notebook dependencies

book.yml picks one of two modes:

  • env (default): re-use the active venv. Pin notebook deps in your book root's pyproject.toml. Fast.
  • sandbox: pass --sandbox to marimo export. Each notebook declares its own deps via PEP 723 inline metadata; marimo provisions per-notebook envs via uv. Slower on first run; portable.

Override per invocation with --sandbox / --no-sandbox on build or serve.

Build cache

A content-addressed cache at {book_root}/.marimo_book_cache/ skips re-rendering chapters whose source + book.yml-relevant fields haven't changed. Typical incremental rebuilds drop from 100+ s to ~3 s on real-world books. Reset with marimo-book clean or override per invocation with marimo-book build --rebuild. CI runners get warm cache reuse via actions/cache@v4.

marimo-book build --strict fails on broken in-tree links and anchors (use this on CI). For external URL and image src validation, opt into htmlproofer:

# book.yml
check_external_links: true
pip install 'marimo-book[linkcheck]'
marimo-book build --strict

External link checking hits the live web (~1–3 s per link), so we recommend gating it behind a release-cutting workflow rather than running on every PR.

License

MIT

  • marimo-grader (source) — a grading service for marimo assignments: students sign in and submit from inside a notebook, instructors grade in a web app. A book publishes the student notebooks as pages and links them to the grader; see the Assignments and grading docs page.

Metadata

Release files for marimo-book 0.1.39

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for marimo-book 0.1.39
File Size Uploaded
marimo_book-0.1.39.tar.gz 378.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for marimo-book 0.1.39
File Interpreter ABI Platform
marimo_book-0.1.39-py3-none-any.whl Python 3 none any Details

Total release size: 556.9 kB

Release files / marimo_book-0.1.39.tar.gz

Download URL marimo_book-0.1.39.tar.gz
Size 378.3 kB
Tags Source
SHA-256 checksum
How to use checksums
6c5b396fd346375e2cb5f4c9511a04f08a10ab29caf24ce3b28b4df92f39b96a
BLAKE2b-256 checksum
How to use checksums
0eb60bad2d78f8526f0e69fd6047d7684da52c64887bdaf7cca912772d1d5d54
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log

Release files / marimo_book-0.1.39-py3-none-any.whl

Download URL marimo_book-0.1.39-py3-none-any.whl
Size 178.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bde4ffdfeb6f3c585a6b8e0dca732761cea807014e7a1ea8479c63b53d5ec182
BLAKE2b-256 checksum
How to use checksums
35bbe71daabae8bc4d57233eae8e6ae39db56b98cd7b7eafe27ffa64a426789e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log

Release history Release notifications | RSS feed

0.1.47

2 release files

0.1.46

2 release files

0.1.45

2 release files

0.1.44

2 release files

0.1.43

2 release files

0.1.42

2 release files

0.1.41

2 release files

0.1.40

2 release files

This release

0.1.39 This release

2 release files

0.1.38

2 release files

0.1.37

2 release files

0.1.36

2 release files

0.1.35

2 release files

0.1.34

2 release files

0.1.33

2 release files

0.1.32

2 release files

0.1.31

2 release files

0.1.26

2 release files

0.1.25

2 release files

0.1.24

2 release files

0.1.17

2 release files

0.1.16

2 release files

0.1.15

2 release files

0.1.14

2 release files

0.1.13

2 release files

0.1.12

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page