A reactive Python notebook that's reproducible, git-friendly, and deployable as scripts or apps.
marimo is a reactive Python notebook that automatically runs dependent cells when inputs change, ensuring consistent code and outputs. It stores notebooks as pure Python files, making them reproducible, git-friendly, and executable as scripts or deployable as interactive apps. It integrates SQL for data querying and AI for code generation, all within a modern editor.
Data scientists, researchers, and Python developers who need reproducible notebooks, interactive data exploration, and shareable applications without the pitfalls of traditional tools like Jupyter.
Developers choose marimo for its reactive execution that eliminates hidden state, its pure Python storage for easy version control, and its ability to seamlessly transition from exploratory notebooks to deployable apps, all while offering built-in SQL and AI features.
A reactive notebook for Python — run reproducible experiments, query with SQL, execute as a script, deploy as an app, and version with git. Stored as pure Python. All in a modern, AI-native editor.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Automatically runs cells that depend on changed variables, eliminating hidden state and ensuring consistency, as demonstrated in the reactive GIF in the README.
Notebooks are stored as .py files, making them easy to version control, diff, and execute as scripts, unlike Jupyter's JSON format.
Bind sliders, dropdowns, and dataframes directly to Python with automatic re-execution, simplifying interactive app development compared to callback-heavy frameworks.
Integrates SQL for querying data from various sources and AI assistants for context-aware code generation, tailored for data work as shown in the examples.
As a newer project, marimo lacks the extensive third-party extensions, themes, and community plugins available in the Jupyter ecosystem, limiting customization.
Deploying notebooks as interactive web apps requires the marimo server, which adds deployment complexity compared to static site generators or serverless options.
Users accustomed to Jupyter's manual execution may struggle with marimo's automatic dependency tracking, especially when debugging or organizing complex notebooks.
marimo is an open-source alternative to the following products:
Streamlit is an open-source Python framework for building interactive web applications for data science and machine learning projects.
ipywidgets is an interactive HTML widgets library for Jupyter notebooks and the IPython kernel, enabling interactive controls like sliders, buttons, and text boxes.
Papermill is a Python tool for parameterizing and executing Jupyter Notebooks, enabling notebook automation, reproducibility, and pipeline integration.
Jupytext is a Jupyter plugin that allows notebooks to be saved and executed as plain text scripts in formats like Markdown, Python, R, or Julia.
Jupyter is an open-source web application that allows you to create and share documents that contain live code, equations, visualizations and narrative text.