Skip to content

Identities and state ​

Studio binds every mutation, build, and presentation to the state it observed. Names identify durable product objects, revisions identify content, and generations identify replaceable owners and incarnations. The glossary defines the product objects themselves.

Stable names ​

IdentityFormatLifetime
View nameLowercase letter followed by lowercase letters, digits, or hyphensStable until the view is renamed or removed
Provider keyCanonical distribution plus entry-point registration, such as marimo-studio/reactPreserved by Studio Source mutations for one view
Starter IDProvider key plus local starter key, such as marimo-studio/react:revealUsed during creation and not persisted
Cell targetNative cell name or Studio cell aliasStable while the notebook name or binding remains
Value selectorVariable name plus permitted attribute and item stepsResolves against the current notebook namespace
Projection site IDLowercase artifact-local ID with at most 128 charactersStable for one authored source site

Content revisions ​

RevisionIdentifiesChanges when
Source revisionExact UTF-8 Source document contentThe document bytes change. Public values use sha256:<digest>
Notebook revisionProvider-visible static notebook recordCell source, names, configuration, definitions, references, or dependency edges change
Project revisionComplete normalized build-input snapshot plus provider provenanceA declared build input or provider build identity changes
Artifact revisionComplete validated browser file tree and projection declarationsAny published artifact file or projection site changes
Presentation revisionSelected view, saved notebook and configuration, build profile, and artifactAny input to the delivered presentation changes
Projection revisionPresentation projection targets, policy, runtime bindings, diagnostics, and runtime instanceProjection authorization or runtime binding state changes

An artifact revision stays current across repeated builds that produce a byte-identical browser file tree and the same projection declarations. Development and production profiles can publish the same artifact revision and still keep separate build attempt and publication state.

Ownership generations ​

GenerationIdentifiesUsed by
Catalog generationStudio configuration plus the current set of named view incarnationsWorkspace mutation admission
View generationDurable owner of one name joined with the current view project directoryView write, build, export, and removal admission

Both generations are opaque 64-character lowercase hexadecimal strings. Read them from status, view read --json, or the Python handles that return them. Do not construct or persist them as long-term identifiers.

view write checks the source revision, catalog generation, and view generation immediately before commit. A failed check preserves the current file and returns a conflict. Read the current source and retry from that state. Errors and JSON lists the conflict codes.

Removing a view terminates its view generation. Renaming a view terminates the old name's generation and starts a generation for the new name. Recreating a name creates a new view generation. Existing Python View handles remain bound to the incarnation they observed.

Runtime and browser identities ​

IdentityScope
Runtime instanceOne mounted notebook runtime configuration
Runtime session IDOne Python runtime session. Browser runtimes have no server session ID
Browser client IDOne connected Studio tab
Presentation sessionOne browser admission to a presentation revision
Projection instance IDOne active element in the browser DOM at one projection site

The browser document exposes its committed presentation revision as data-marimo-studio-revision on <html>, beside data-marimo-studio-state. An exact preview URL rejects a different presentation revision or unbuilt or failed view source, even when a previous artifact is retained.

Workspace state ​

StudioOverview.state and marimo-studio status --json use these values:

StateMeaning
unconfiguredThe notebook has no Studio configuration
needs-viewStudio configuration exists and the default view project still needs creation
readyThe configured workspace has at least one valid view and its default view exists

Build freshness ​

ViewInspection.freshness and view inspect --json report development build freshness:

FreshnessCurrent sourceRetained artifactMeaning
currentMatchesPresentThe development artifact was built from the current project revision
staleNewer or invalidPresentPreview can retain the last successful artifact while source needs another successful build
unbuiltPresentAbsentCurrent source has no successful development artifact
buildingBuild in progressOptionalStudio is preparing a candidate from the current snapshot
failedLatest attempt failedAbsentNo successful development artifact is available

ViewInspection.build describes the retained successful artifact and stays present when freshness is stale.

Projection state ​

Hosts use connecting, loading, stale, ready, missing, and error. See Notebook result projections for DOM attributes and events.

Validation state ​

Validation levels are cumulative. marimo-studio validate lists the evidence each level requires.