Skip to content

Deploy notebook servers or apps

marimo can be deployed as an "edit" server for creating, running, and editing notebooks, or an app server for serving read-only web apps. For convenience, you can use our pre-built containers.

Sharing notebooks on the public web

To share notebooks on the public web without managing infrastructure, try molab, our free cloud-hosted notebook environment

Notebook servers

Deploy an edit server (marimo edit) to let users create and edit notebooks on a remote instance.

Guide Description
JupyterHub Run marimo inside JupyterHub with our JupyterLab extension
Kubernetes Deploy on Kubernetes
SkyPilot Deploy on cloud VMs with SkyPilot
Slurm Run on HPC clusters with Slurm

You can also deploy an edit server with ssh port forwarding using marimo edit --headless.

Apps

Deploy notebooks as read-only web apps (marimo run) or embed them in other applications.

Guide Description
FastAPI Programmatically run marimo apps as part of ASGI applications
Authentication Authentication and security
Docker Deploy with Docker
HuggingFace Deploy to Hugging Face Spaces
Railway Deploy to Railway
nginx Deploy behind nginx

Health and status endpoints

The following endpoints may be useful when deploying your application:

  • /health - A health check endpoint that returns a 200 status code if the application is running as expected
  • /healthz - Same as above, just a different name for easier integration with cloud providers
  • /api/status - A status endpoint that returns a JSON object with the status of the server

Configuration

If you would like to deploy your application at a subpath, you can set the --base-url flag when running your application.

marimo run app.py --base-url /subpath

Including code in your application

You can include code in your application by using the --include-code flag when running your application.

marimo run app.py --include-code