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
npm install @elastic/isomer-runtime @elastic/isomer-sdk react react-dom zod
		

@elastic/isomer-sdk is a dependency pinned to the same version, so the two install together. 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. Two entry points, each published as ESM for bundlers and CommonJS, which Node loads: the root, and ./testing, which holds the conformance harness a pack's tests use (see API). No Node built-ins, so the package runs in a browser, on a server, or in an edge function; on Node it needs 22.13.0 or later, like the SDK. Source lives under assemble/, registry/, and surfaces/.