Package: marimo
A reactive Python notebook that's reproducible, git-friendly, and deployable as scripts or apps.Docs·Discord·Examplesmarimo is a reactive notebook for Python. It allows you to rapidly experiment
with data and models, code with confidence in your notebook's correctness, and
productionize notebooks as pipelines or interactive web apps.Highlights.reactive: run a cell, and marimo automatically updates all affected cells and outputsinteractive: bind sliders, tables, plots, and more to Python — no callbacks requiredreproducible: no hidden state, deterministic execution orderexecutable: execute as a Python scriptshareable: deploy as an appgit-friendly: stored as.pyfilespipinstallmarimo&&marimotutorialintroJump to thequickstartfor a primer on our CLI.A reactive programming environmentmarimo guarantees your notebook code, outputs, and program state are consistent. Thissolves many problemsassociated with traditional notebooks like Jupyter.A reactive programming environment.Run a cell and marimoreactsby automatically running the cells that
reference its variables, eliminating the error-prone task of manually
re-running cells. Delete a cell and marimo scrubs its variables from program
memory, eliminating hidden state.Deterministic execution order.Notebooks are executed in a deterministic
order, based on variable references instead of cells' positions on the page.
Organize your notebooks to best fit the stories you'd like to tell.Synchronized UI elements.Interact with UI elements like sliders,
dropdowns, and dataframe transformers, and the cells that use them are
automatically re-run with their latest values.Performant runtime.marimo runs only those cells that need to be run by
statically analyzing your code. You can optionally disable expensive cells to
prevent them from automatically running.Batteries-included.marimo comes with GitHub Copilot, Black code
formatting, HTML export, fast code completion, aVS Code
extension,
and many more quality-of-life features.QuickstartInstallation.In a terminal, runpipinstallmarimo# or conda install -c conda-forge marimomarimotutorialintroCreate notebooks.Create an empty notebook withmarimoeditor create/edit a notebook with a given name withmarimoedityour_notebook.pyRun apps.Run your notebook as a web app, with Python
code hidden and
uneditable:marimorunyour_notebook.pyExecute as scripts.marimo notebooks can be executed as scripts at the
command line:pythonyour_notebook.pyAutomatically convert Jupyter notebooks.Automatically convert Jupyter notebooks to marimo notebooks with the CLImarimoconvertyour_notebook.ipynb>your_notebook.pyor use ourweb interface.Tutorials.List all tutorials:marimotutorial--helpQuestions?See theFAQat our docs.Learn moremarimo is easy to get started with, with lots of room for power users.
For example, here's an embedding visualizer made in marimo
(video):Check out ourdocs,
theexamples/folder, and ourgalleryto learn more.TutorialInputsPlotsLayoutContributingWe appreciate all contributions! You don't need to be an expert to help out.
Please seeCONTRIBUTING.mdfor more details on how to get
started.Questions? Reach out to uson Discord.CommunityWe're building a community. Come hang out with us!🌟Star us on GitHub💬Chat with us on Discord📧Subscribe to our Newsletter☁️Join our Cloud Waitlist✏️Start a GitHub Discussion🐦Follow us on Twitter🕴️Follow us on LinkedInInspiration ✨marimo is areinventionof the Python notebook as a reproducible, interactive,
and shareable Python program, instead of an error-prone JSON scratchpad.We believe that the tools we use shape the way we think — better tools, for
better minds. With marimo, we hope to provide the Python community with a
better programming environment to do research and communicate it; to experiment
with code and share it; to learn computational science and teach it.Our inspiration comes from many places and projects, especiallyPluto.jl,ObservableHQ, andBret Victor's essays. marimo is part of
a greater movement toward reactive dataflow programming. FromIPyflow,streamlit,TensorFlow,PyTorch,JAX, andReact, the ideas of functional,
declarative, and reactive programming are transforming a broad range of tools
for the better.