Isomer runtime

@elastic/isomer-runtime turns primitive packs into a working runtime. You give it a vocabulary (packs) and, optionally, the documents it may draw (frames); it gives you a validator, a parser, six render surfaces, a view registry, and the payload an agent authors against.

It renders nothing itself. Primitives, renderers, themes, and frames come from packs and theme packages; the composition schema, dispatcher, and envelopes come from @elastic/isomer-sdk; data, authorization, and delivery stay with the host. This package holds those pieces in an arrangement that works and refuses the ones that cannot.

Mermaid diagram

Reach for this package when a host has to render the same answer to more than one channel, or when an agent has to compose a composition that a host will then render. A single-surface React app can render a composition through a pack directly; everything else wants a runtime, because the runtime is what keeps one validator, one inventory, and one set of renderers in agreement.

Page What it covers
Quick start A working host, with rendered output on six channels
Runtime createIsomerRuntime, its options, and what it refuses
Packs The vocabulary — what a pack contributes and how packs compose
Frame The document an image is drawn as, and how a render picks one
Surfaces The six render targets and their validation postures
Embedding Isolating a rendered composition's CSS inside a host page
View registry Registering product-owned views and requesting them by id
Authoring context What an agent is handed, and how its output comes back
Renderer overrides Replacing one renderer without forking a pack
API reference Every export, option, and error

Source lives under assemble/, registry/, and surfaces/. @elastic/isomer-sdk is a workspace dependency. zod, react, and react-dom (>=18 <20) are peers — required, because the root entry always constructs the react and html surfaces, and html loads react-dom/server. No Node built-ins, so the package runs in a browser, on a server, or in an edge function. One entry point.