GitHub

jupyter-book-marimo

CI PyPI License: Apache 2.0

Make Jupyter Book pages reactive with marimo.

Jupyter Book builds books and documentation sites from MyST Markdown and notebooks. jupyter-book-marimo adds reactive Python, SQL, and Markdown cells to its MyST pages.

The plugin compiles each page's {marimo} cells into one marimo app. Jupyter Book places each result at its authored position and publishes the surrounding book as static HTML.

The browser runtime then hydrates the shared app so controls and dependent cells stay interactive across ordinary MyST sections.

Requires Python 3.10 or newer.

Quick start

Install the plugin in the environment that builds the book:

pip install jupyter-book-marimo

Register its executable in myst.yml:

project:
  plugins:
    - type: executable
      path: .venv/bin/jupyter-book-marimo

Paths are resolved from myst.yml. On Windows, use .venv/Scripts/jupyter-book-marimo.exe. A myst.yml in docs/ uses a path beginning with ../.venv/.

Write reactive cells in a MyST page:

```{marimo} python
import marimo as mo

slider = mo.ui.slider(start=1, stop=10, label="items")
slider
```
```{marimo} python
mo.md(f"The slider is set to **{slider.value}**.")
```

Build the book:

jupyter-book build --html

The plugin compiles every page into one marimo app. Each visible cell becomes an island backed by that shared app, so dataflow continues across ordinary MyST sections. The static output renders before the browser runtime starts.

Use {marimo-config} for page defaults, setup code, and dependencies:

```{marimo-config}
:echo: true
:pyproject: |
  requires-python = ">=3.10"
  dependencies = ["pandas"]
```

Documentation

Read the user documentation for authoring options, page configuration, styling, and runtime assets.

See CONTRIBUTING.md for local development.

Read the original on github.com ↗