Serverless Marimo Dashboard

Building serverless interactive dashboards with Marimo.
Python Recipes
Published

April 24, 2026

Modified

April 27, 2026

Serverless Marimo Dashboard cover

Serverless Marimo Dashboard cover

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:

uv run marimo tutorial

Anatomy of a Reactive Marimo App

A basic reactive dashboard pairs interactive UI widgets directly with data transformations:

import marimo as mo

# Cell 1: Interactive slider
slider = mo.ui.slider(
    start=10, stop=100, step=5, value=25, label="Sample Size"
)
slider

# Cell 2: Reactive downstream consumer
mo.md(f"Current sample size is: **{slider.value}**")

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:

  1. Build your interactive notebook: Author your script using marimo edit app.py.
  2. Export to standalone WASM HTML:
uv run marimo export html-wasm app.py --output dist/marimo-dashboard --mode run
  1. 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:
python -m http.server --directory assets/marimo-dashboard
  1. 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.

  2. 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.

Note

Download the full script from the Serverless Marimo Dashboard example script.

Back to top