Skip to main content

Jupyter extension to proxy marimo with JupyterLab integration

Project description

Seamlessly integrate marimo notebooks into JupyterLab and JupyterHub

PyPI License Discord


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.py files 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 .py files to edit with marimo, .ipynb files 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.23.1' marimo-jupyter-extension

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

marimo extension sidebar and editor
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 .py or _mo.py file to open it in the marimo editor
  • Convert to marimo: Right-click any .ipynb file to convert it to marimo format

Installation

See Installation Guide for detailed setup instructions.

Single Environment

uv pip install 'marimo[sandbox]>=0.23.1' marimo-jupyter-extension

Multiple 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 = 120

# Enable marimo debug logging for spawn troubleshooting
c.MarimoProxyConfig.debug = True

# Watch files for external edits (Claude Code, Cursor, vim, etc.)
c.MarimoProxyConfig.watch = True

# Allowed CORS origins (default: same-origin only)
c.MarimoProxyConfig.allow_origins = ["*"]

# Suppress version-check network call on startup
c.MarimoProxyConfig.skip_update_check = True

# Shut down after N minutes of no browser connection
c.MarimoProxyConfig.idle_timeout = 30.0

# Keep sessions alive N seconds after websocket disconnect
c.MarimoProxyConfig.session_ttl = 300

See Configuration Guide, Troubleshooting Guide, and JupyterHub Deployment for more details.

Migrating from jupyter-marimo-proxy

pip uninstall jupyter-marimo-proxy
pip install marimo-jupyter-extension

Configuration 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.23.1

Community

License

Apache License 2.0 - see LICENSE and NOTICE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

marimo_jupyter_extension-0.2.2.tar.gz (721.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

marimo_jupyter_extension-0.2.2-py3-none-any.whl (72.5 kB view details)

Uploaded Python 3

File details

Details for the file marimo_jupyter_extension-0.2.2.tar.gz.

File metadata

  • Download URL: marimo_jupyter_extension-0.2.2.tar.gz
  • Upload date:
  • Size: 721.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for marimo_jupyter_extension-0.2.2.tar.gz
Algorithm Hash digest
SHA256 59e8e5831b152d49a7e82d2546b84e675bfdff2747dbb2ac48e571375093fa58
MD5 8179083b5178c6ef169a5220d6ecca40
BLAKE2b-256 39fa00b60f03e8b68e90fff310f7d998d02181b57ac3a9084cc0266a4afd12a2

See more details on using hashes here.

Provenance

The following attestation bundles were made for marimo_jupyter_extension-0.2.2.tar.gz:

Publisher: publish.yml on marimo-team/marimo-jupyter-extension

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file marimo_jupyter_extension-0.2.2-py3-none-any.whl.

File metadata

File hashes

Hashes for marimo_jupyter_extension-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 9f14c049d8c1b84d826ebb92ef428dd24f88168e868e1ff80741615b40656211
MD5 15884a340b312ebce97062dbc8fb282f
BLAKE2b-256 3c4e270cf76d070166aeac6c1c133b8a5f997c5e91c7429d074d3f125c525197

See more details on using hashes here.

Provenance

The following attestation bundles were made for marimo_jupyter_extension-0.2.2-py3-none-any.whl:

Publisher: publish.yml on marimo-team/marimo-jupyter-extension

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page