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.14' 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.14' 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.14

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.3.0.tar.gz (732.6 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.3.0-py3-none-any.whl (78.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: marimo_jupyter_extension-0.3.0.tar.gz
  • Upload date:
  • Size: 732.6 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.3.0.tar.gz
Algorithm Hash digest
SHA256 0191ae1ef86ff9787eb78b9050d24d7925fbf3aceef08e20357d9f045bbcbf55
MD5 4778868ec6e233cefaaa051136eb47dc
BLAKE2b-256 b9c5599be4a3e60ba058a1b3bc6283ad38e6e23fcdc4f834451c1a05fbf07f9c

See more details on using hashes here.

Provenance

The following attestation bundles were made for marimo_jupyter_extension-0.3.0.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.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for marimo_jupyter_extension-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cefb7ac8d9b6317c772df2e43f12663e958f9fb9473baf07c2e46a41b0d4183a
MD5 43f025049d1b75b792a83de8f63c227f
BLAKE2b-256 616920807746a2e08174d53b571d9955598de77cc63ccc4660cc82be17dc642d

See more details on using hashes here.

Provenance

The following attestation bundles were made for marimo_jupyter_extension-0.3.0-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