Introducing marimo-studio The marimo team released marimo-studio, an open-source tool that lets a single marimo notebook power multiple audience-specific frontends in any web framework while keeping views in separate files from the analysis. Studio prerenders each view's states at build time so it runs as static files on hosts like GitHub Pages with no Python runtime, and every number on a page traces back to the notebook cell that computed it. The package ships with example notebooks including quadratic_program.py, athletes.py, and occupancy.py, whose views are built with React, Reveal.js, Svelte, Mosaic, Three.js, and Observable Notebook Kit. Introducing marimo-studio Build a view of your notebook for every audience, in any web framework, with every result traced back to the Python behind it. Your marimo notebook is where your computational work lives: the data, the definitions, and every assumption behind a result. Each audience you share it with has different needs and expects an experience tailored to them: a lecture for students, an article for readers, a dashboard for your team. Today we’re introducing marimo-studio https://github.com/marimo-team/marimo-studio , which gives each audience its own view of the notebook: - Any frontend. Each view is its own web project, in whatever framework you like. - Separate files. Views live next to the notebook, so coding agents build them without editing your analysis. - Traceable results. Every number on a page traces back to the notebook cell that computed it. - Prepared static exports. Studio prerenders a view’s states at build time, so it runs as static files on GitHub Pages or any host, with no Python runtime to load. Readers see the results and never the notebook source, which keeps sensitive work private. Copy this instruction for your coding agent to get started: Your agent reads the instructions Studio ships with the package, then builds a single notebook with the two requested views. Notebooks usually reach their audiences in one of two ways. The first is a copy of the notebook for each audience. The copies drift: a fix made in one never reaches the others, and the slides end up disagreeing with the article. The second is to put the presentation into the notebook, with HTML templates, CSS, and layout code in cells next to the calculations. The notebook gets harder to read and to review, because a font change and a formula change land in the same file. Coding agents make the second path more tempting. They write frontend code well, so a polished page is one request away. When the agent works inside the notebook, though, each design request also edits the file that holds your analysis. We wanted agents to take on the frontend work while the analysis stays put, so Studio keeps the two in separate files. Notebooks do all kinds of work. Some teach an idea, some dig through data, and some explain how a model behaves, and one notebook often has to serve several kinds of readers at once. With Studio, the same notebook serves every one of them. quadratic program.py https://github.com/marimo-team/marimo-studio/blob/72376de50eb89fe8372ad55f3b341cfb439be154/examples/quadratic program.py teaches quadratic programs, a kind of optimization problem. The same notebook becomes a slide deck for the lecture, an explainer to read at your own pace, and a lab where you drag a dial and watch the solution move. The deck runs on React and Reveal.js https://revealjs.com/ , the explainer is plain HTML, and the lab is a Svelte https://svelte.dev/ app. athletes.py https://github.com/marimo-team/marimo-studio/blob/72376de50eb89fe8372ad55f3b341cfb439be154/examples/athletes.py digs into the roster of the Rio 2016 Olympics. The same analysis opens as a report you can filter by sport, an explorer with linked charts, and a 3D tour of every athlete. The report is plain HTML, the explorer links its charts with Mosaic https://uwdata.github.io/mosaic/ , and the tour runs on Three.js https://threejs.org/ . occupancy.py https://github.com/marimo-team/marimo-studio/blob/72376de50eb89fe8372ad55f3b341cfb439be154/examples/occupancy.py predicts whether a room is occupied from its sensor readings. The same model shows up as a monitor of the room, a review where you move the decision threshold and watch the errors change, and a report you can download as a PDF. The monitor is an Observable Notebook Kit https://observablehq.com/notebook-kit/kit page, and the review and the report are React apps. The examples gallery https://marimo-team.github.io/marimo-studio/examples/ has more. Each view is an ordinary frontend project, saved as a folder next to the notebook. A coding agent works with its HTML, components, and build config the same way it would in any web project: Studio builds plain HTML, React, Svelte, and Observable Notebook Kit projects out of the box, and a provider API https://marimo-team.github.io/marimo-studio/reference/provider-api connects any other frontend project and its build command. Preview rebuilds on every save, so you can watch a view take shape and steer it as you go. Inside a view, two elements and one attribute reach into the notebook by name: | In the view | What the page gets | |---|---| |