Repository navigation
v0.3.0
Marimo Studio 0.3.0
Marimo Studio 0.3.0 serves notebooks and views beneath reverse proxy path prefixes, works with marimohub's sandbox context, runs workspaces on network and synced file systems, and sends large dataframes to views as Arrow.
Deploy behind proxies and hosts
- Studio writes every page, redirect, record, and live-connection URL relative to the requested URL. A notebook works at the server root, under marimo's
--base-url, and behind a proxy that keeps or strips a path prefix, such as Posit Workbench, jupyter-server-proxy, and code-server. - Open a tokenized link with
?access_token=…in edit or run mode. Studio starts the session and removes the token with a redirect beneath the prefix. marimo-studio view preview --server URLandView.preview_url()return a preview URL beneath the same prefix as--server.--browser-clientandbrowser_clientselect the Studio tab a preview follows. An open preview keeps its address and reloads it after a server restart.- Set
MARIMO_STUDIO_TRUSTED_SERVER_RUNTIME=1to serve Server runtime view documents and Preview from the host origin, so a cookie-authenticated proxy admits their requests. Browser and Prepared runtimes keep their sandbox. Restart the Studio process after changing the setting. - Preview reports when it cannot reach the Studio server for 10 seconds, names the trusted Server runtime setting, and recovers once requests succeed.
Work in marimohub
- Studio reads the sandbox context that marimohub 0.4.16 provides. With proxy exposure, Server runtime views share the hub origin, so Preview works behind the hub sign-in. An explicit
MARIMO_STUDIO_TRUSTED_SERVER_RUNTIMEsetting takes precedence. - Code-mode
preview_url()returns the session's public address. View lists,status(), and Add view report whether the hub keeps view files. - View provider caches and build staging carry
CACHEDIR.TAG, so the hub leaves them out of saved workspaces. A notebook with a React and an HTML view saves about 3 MB. - Run mode redirects
/studio/<view>/to/<view>/and runs the hub's notebook bridge in view documents, so reloads, Copy URL, and Run as app keep the view the editor shows. - A direct
marimo-studio @ …reference in the notebook header stays as written when Studio creates a view, and MCPstart_sessionreaches a running kernel for Studio notebooks.
Run workspaces on more file systems
- View creation, builds, renames, and exports work on NFS, WSL drive mounts, and gVisor sandbox mounts.
- Windows workspaces synced by OneDrive or SharePoint build views from cloud placeholder files.
- Studio holds marimo's notebook lock while it rewrites the notebook header, so an editor save and a default-view or binding change keep both edits.
Project large dataframes
- Eager pandas, Polars, and PyArrow tables travel to views as Arrow IPC. One Arrow value can hold up to 64 MiB, and JSON values keep the 1,000,000 byte limit. Collect lazy dataframes in the notebook before projecting them.
- An oversized value read reports
response-too-largewith a hint to project fewer or smaller values.marimo-studio checkapplies the Python runtime budgets. - The Python runtime publishes Arrow values through shared memory. Containers with the default 64 MiB
/dev/shmfit about one large value, so start them with a larger--shm-size.
Fixes
- Studio retries notebook reads that overlap a marimo save, so a valid notebook stays valid while marimo rewrites the file. Notebook source errors name the line marimo cannot parse, duplicate definitions, cycles, and files that are not notebooks.
- Preview reads settle once notebook execution settles, including across reopened and concurrent tabs. Transient startup states keep retrying, and a terminal synchronization error names the notebook cells that need to run.
- Preview recovers on its own after a broken notebook is fixed and saved.
- Checked marimo checkboxes and similar controls stay visible inside views.
Preview builds
Every validated main commit publishes a wheel to the
preview release.
Its notes show the install command for the newest wheel. A notebook that
depends on a preview wheel URL installs that same wheel in sandboxed kernels.
Compatibility
Marimo Studio 0.3.0 supports Python 3.10 through 3.14 and Marimo 0.25.1, and it requires marimo-export 0.1.4 or newer; the deno extra provides Deno 2.9.5 or newer for authoring with React, Reveal.js, Svelte, and Observable Notebook Kit, while the lens extra requires marimo-lens 0.2.3 or newer.