Skip to content

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 08 Oct 06:26
· 45 commits to main since this release
7858af6

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 URL and View.preview_url() return a preview URL beneath the same prefix as --server. --browser-client and browser_client select 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=1 to 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_RUNTIME setting 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 MCP start_session reaches 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-large with a hint to project fewer or smaller values. marimo-studio check applies the Python runtime budgets.
  • The Python runtime publishes Arrow values through shared memory. Containers with the default 64 MiB /dev/shm fit 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.

All changes since 0.2.3