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

See Configuration 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.21.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.0.tar.gz (711.9 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.0-py3-none-any.whl (71.8 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for marimo_jupyter_extension-0.2.0.tar.gz
Algorithm Hash digest
SHA256 72e274468d897b57d31ce483e2bfc8b9c5617cc26a1770cb3c20771b5185ae5f
MD5 b6ba0b6a4d4bfb0e33daa7efd45583f6
BLAKE2b-256 e942467648c8b101b379ef661b1e9a27ea65aead101f7e9cd7871a2ee3c79cbc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for marimo_jupyter_extension-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c889dd13633cd4bf025daea7a6b31f5ab03e253b02e6d4d548e58e37ebaea4a8
MD5 4d6b1fdfc292760207c62aa39e95fd66
BLAKE2b-256 93690052a9ece91ec7ea5b0aea127e1fa0ed7c2308da9b997d858f6ddb46f65b

See more details on using hashes here.

Provenance

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