Skip to content

Work in Studio ​

When marimo-studio is installed in the notebook's environment, marimo edit gives you a Studio toolbar and a view workspace with three panes: Notebook for Python, Source for the view's files, and Preview for the built view running against the live notebook.

Notebook, Preview, and view source in Studio

Use the toolbar ​

  • Show notebook only hides the view. Show view beside notebook restores the split with its previous sizes.
  • Edit view source opens Source beneath Preview, with a tab for each file the view's provider exposes.
  • The status item, such as Live, summarizes the runtime. Click it for diagnostics and the runtime choice.
  • Workspace options opens Preview in a new tab and arranges panes. Choose Arrange panes to move, swap, or close them. Studio remembers the layout for each notebook and view in this browser.

On a narrow screen, use Visible surface to switch between Notebook, Source, and Preview.

Save and build ​

Saving a file in Source rebuilds the view. The build status reads:

StatusMeaning
BuildingA new build is in progress
Up to datePreview matches the saved source
Build neededSaved source changed since the last build
Build failedThe latest build failed, and its error is shown

Preview keeps showing the last successful build while a new one runs or after one fails. Notebook changes need no rebuild: when a cell reruns, the results it feeds update in Preview right away.

Studio watches the view project, so edits from another editor or a coding agent rebuild the view too. Build explicitly from a terminal when a watcher may have missed a change:

console
uvx marimo-studio view build dashboard --target analysis.py

Edit view source in any editor ​

A view project is an ordinary folder of source files, such as studio/analysis/dashboard/. Open it in your own editor, run the format's own tools in it, or let a coding agent change it. Studio watches the folder, checks the files on disk at every inspection and build, and rebuilds Preview when a build input changes. marimo-studio view inspect dashboard --target analysis.py --json reports the folder's path.

Source writes each save against the version it loaded. When another editor or agent saved the same file first, Source keeps your edits and offers two choices:

  • Use saved version loads the other save.
  • Overwrite saved version with my edits replaces it.

Compare Your edits with Saved version before you choose. A view switch waits until the conflict is resolved.

For a change that spans several files, marimo-studio view hold keeps the current build published until you release it. See view hold.

Choose a runtime ​

Click the status item to choose where notebook code runs:

  • Python runtime (server) uses the editor's Python session, with access to local files, databases, packages, and credentials.
  • Browser runtime (wasm) runs the notebook in a browser worker through Pyodide. The browser receives the notebook source and must reach its packages and data.

Switching runtimes keeps the built view and changes which notebook supplies its results. Run or export a view covers runtimes for visitors.

Manage views ​

Each notebook has one or more views. The view menu in the toolbar lists them. A notebook without a view shows Add view in its place.

TaskIn StudioFrom a terminal
Create a viewNew view, then choose a startermarimo-studio view create report --target analysis.py
Switch viewsPick one in the view menu
Set the default viewDefault view when you create itmarimo-studio view default report --target analysis.py
Rename a viewmarimo-studio view rename report summary --target analysis.py
Remove a viewThe remove action beside its namemarimo-studio view remove report --target analysis.py

The New view dialog lists the installed starters by package, each with its technology's mark and what it makes. The selected starter shows a preview of the view it creates, its website, the files it writes, and what it needs when its provider is unavailable. Settings set the view's title, whether it becomes the default view, and the options the starter offers, such as the paper size of a Typst report. The info button beside each setting explains it. marimo-studio view create takes the same choices as --title, --setting KEY=VALUE, and --make-default.

The default view opens at / in marimo run, and a view named report opens at /report/. Studio records the default in the notebook's configuration:

toml
[tool.marimo-studio]
default = "report"

Switching views keeps the Python session, so controls keep their values. In the Browser runtime, each view runs its own notebook instance. Studio saves pending Source edits before it switches. Renaming a view keeps its source and build history and changes its URL, so update any view that links to the old one. Removing a view deletes its folder. If it was the default, Studio names the view that replaces it before you confirm. A notebook keeps at least one view.

A running Studio server holds the views it serves. view rename and view remove in another terminal then report view-in-use with the server's process ID. Remove the view from the view menu, rename it in code mode with View.rename(), or stop the server and run the command again.

Files in a view project ​

A view project holds the view's own files plus three that Studio and agents read:

FilePurpose
view.tomlNames the provider that builds the view, and its options
AGENTS.mdConventions for coding agents, written by the starter
DESIGN.mdAudience, visual direction, and approved libraries, written when needed
toml
schema = 1
provider = "marimo-studio/vanilla"

The provider decides which files appear in Source and which files affect the build. A React view, for example, shows src/App.tsx for editing, rebuilds when anything in src/ or public/ changes, and shows its lockfile read-only. Ask the provider directly with:

console
uvx marimo-studio view inspect dashboard --target analysis.py

Read and write view.toml with marimo-studio view read and marimo-studio view write. Both work even when the provider fails, so you can repair a provider option. They keep the view's provider key, so fix a misspelled key in your own editor.