docs/guides/deploying/index.md
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.
!!! tip "Sharing notebooks on the public web" To share notebooks on the public web without managing infrastructure, try molab, our free cloud-hosted notebook environment
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.
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 |
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 serverIf 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
You can include code in your application by using the --include-code flag when running your application.
marimo run app.py --include-code
By default, Marimo doesn't send standard output (stdout) to the browser, but for debugging purposes you can enable this
with --redirect-console-to-browser:
marimo run app.py --redirect-console-to-browser
By default, Marimo redacts error tracebacks in the browser for security reasons, but you can enable showing full tracebacks with --show-tracebacks:
marimo run app.py --show-tracebacks