🍃 Announcing molab:

Read our announcement

marimo as a Papermill alternative

marimo provides reactive notebooks with built-in parameterization and app deployment. It's a modern alternative to Papermill for parameterized notebook execution.

marimo as a Papermill alternative

marimo offers a modern approach to parameterized notebook execution, providing interactive and reproducible workflows without the need for external orchestration tools.

Interactive parameterization

Papermill allows you to inject parameters into Jupyter notebooks. It’s considered a feature on top of the notebook format because Jupyter does not enable parameterized execution by default. Papermill does not support marimo notebooks, but that’s because marimo already supports this feature natively.

marimo notebooks are stored as Python files, you’re always able to run them as a Python script as you see fit. It comes with utilities for parsing arguments but you can also use your favourite command-line argument parsing library like click or typer.

Mixing parameters with UI

You can design a marimo notebook to accept parameters from the command line or from a UI. This way, you can re-use the same code in multiple situations. The notebook could be used as a workbook that’s shared as a webapp or as a CLI tool that’s used as a batch job. This is especially useful when you want to share your notebook with others who may not have access to the command line.

Another benefit of marimo is that it is designed to work seamlessly with UV. marimo notebooks can declare all dependencies as metadata, making them fully reproducible and easy to sandbox.

Still just Jupyter

Papermill builds on top of Jupyter notebooks. That means that any bugs in the notebook will propagate to the papermill experience. Papermill is an extra feature for making Jupyter notebooks more executable in production use-cases, rather than a fundamental reimagining of what notebooks should be.

For a more in-depth comparison between marimo and Jupyter, see this guide.