marimo-team/marimo-jupyter-extension
Seamlessly integrate marimo reactive notebooks into JupyterLab and JupyterHub
Seamlessly integrate marimo notebooks into JupyterLab and JupyterHub
marimo-jupyter-extension brings the power of marimo reactive notebooks to your existing Jupyter infrastructure. Launch marimo directly from JupyterLab's launcher, manage running sessions, and convert Jupyter notebooks to marimo format.
Highlights
- ๐ Launcher Integration - marimo appears in the JupyterLab launcher with its own icon
- ๐ First-Class Marimo Notebook Support - Double-click
_mo.pyfiles to open directly in marimo - ๐ Sidebar Panel - Monitor server status, view running sessions, and quick actions
- ๐ Venv Selection - Choose Python environment when creating new notebooks (with PEP 723 metadata)
- ๐ Context Menus - Right-click
.pyfiles to edit with marimo,.ipynbfiles to convert - ๐ข JupyterHub Compatible - Works with existing authenticators and spawners
- ๐ Secure - Token-based authentication between proxy and marimo
- ๐ฆ Sandbox Mode - Run marimo in isolated environments with uvx
Quick Start
uv pip install 'marimo[sandbox]>=0.19.11' marimo-jupyter-extensionLaunch JupyterLab and click the marimo icon in the launcher, or use the sidebar panel.
Features
Launcher & Sidebar
Create new marimo notebooks from the launcher. The sidebar shows server status, running sessions with kill buttons, and quick actions.
Joy Division-style plot from pulsar CP 1919 (PSR B1919+21) made with wigglystuff
Environment Selection
When creating a new notebook, select from available Python environments. The extension discovers Jupyter kernel specs and embeds the venv path using PEP 723 script metadata.
File Type Handling
| File Type | Double-click Behavior | "Open With" Menu |
|---|---|---|
_mo.py |
Opens in marimo | marimo available |
.py |
Opens in standard editor | marimo available |
Context Menu Actions
- Edit with marimo: Right-click any
.pyor_mo.pyfile to open it in the marimo editor - Convert to marimo: Right-click any
.ipynbfile to convert it to marimo format
Installation
See Installation Guide for detailed setup instructions.
Single Environment
uv pip install 'marimo[sandbox]>=0.19.11' marimo-jupyter-extensionMultiple Environments (JupyterHub)
| Package | Install Location | Why |
|---|---|---|
marimo |
User's environment | Access user's packages |
marimo-jupyter-extension |
Jupyter's environment | Jupyter must import it |
Configuration
Configure in jupyterhub_config.py:
# Explicit marimo path
c.MarimoProxyConfig.marimo_path = "/opt/bin/marimo"
# Or use uvx mode (sandbox)
c.MarimoProxyConfig.uvx_path = "/usr/local/bin/uvx"
# Startup timeout (default: 60s)
c.MarimoProxyConfig.timeout = 120See Configuration Guide and JupyterHub Deployment for more details.
Migrating from jupyter-marimo-proxy
pip uninstall jupyter-marimo-proxy
pip install marimo-jupyter-extensionConfiguration via c.MarimoProxyConfig in jupyterhub_config.py remains the same. This package is a drop-in replacement with additional features.
Attribution
This project is based on jupyter-marimo-proxy by Jiang Yio, which provided the original server proxy implementation.
Additional inspiration from b-data/jupyter-marimo-proxy.
This fork adds:
- Full JupyterLab extension with sidebar UI
- Venv/kernel selection with PEP 723 metadata
- Context menu integration for file operations
- Notebook conversion support
- Server restart capabilities
Troubleshooting
See Troubleshooting Guide for common issues.
| Issue | Solution |
|---|---|
| marimo icon missing | Install marimo-jupyter-extension in Jupyter's environment |
| marimo fails to launch | Ensure marimo is in PATH or configure MarimoProxyConfig.marimo_path |
| Modules not found | Install marimo in the same environment as your packages |
| Sandbox features not working | Upgrade to marimo[sandbox]>=0.19.11 |
Community
- marimo Discord - Chat with the community
- GitHub Issues - Report bugs or request features
- marimo Documentation - Learn about marimo notebooks
- Contributing Guidelines - Help improve marimo