marimo is a modern Python notebook alternative that solves Jupyter’s biggest pain point: hidden out-of-order state. Its reactive dataflow graph tracks dependencies between cells: updating a parameter automatically recalculates all dependent variables, eliminating stale state bugs.
Combined with built-in layout views, marimo turns Python scripts into interactive web applications without requiring dedicated web frameworks.
If you are new to marimo, explore its bundled interactive walkthrough:
Anatomy of a Reactive Marimo App
A basic reactive dashboard pairs interactive UI widgets directly with data transformations:
When a user drags slider, Cell 2 updates automatically.
Compiling to Serverless WebAssembly
Paying for a cloud VM just to serve an internal analytical dashboard is unnecessary overhead. Through Pyodide and WebAssembly (WASM), marimo can compile and execute entire Python data science stacks (polars, pandas, matplotlib, plotly) client-side inside the browser.
Here is how to compile and export a serverless Marimo dashboard:
- Build your interactive notebook: Author your script using
marimo edit app.py. - Export to standalone WASM HTML:
- To check if your dashboard works, you can use a simple HTTP server to serve the files locally. For example, you can use Python’s built-in HTTP server module:
Host your dashboard on a static site hosting service like GitHub Pages, Netlify, or Vercel. Since the dashboard is just a static file, you don’t need to worry about server maintenance or costs.
When you open the dashboard in your browser, it loads the WebAssembly runtime and executes your Python code to render the reactive components. Pyodide executes all computations locally in the visitor’s browser, consuming client CPU cycles rather than expensive server compute.
You can test the live Marimo WebAssembly dashboard.
Download the full script from the Serverless Marimo Dashboard example script.
