Artifacts

Durable, first-class conversation outputs like slides, reports, and apps that the user can open and return to.

An artifact is a first-class output of a conversation. Slides, reports, dashboards, a small app: things the user opens, reads, and returns to. An artifact is not a chat message and not a tool result. Once it exists, it stands on its own.

On OpenUI Cloud, the agent produces slides and reports for you, with nothing to wire.

Where an artifact shows up

The same renderer drives two surfaces:

  • Preview: a compact, inline view shown inside the chat message as the artifact is produced.
  • Actual: the full view, opened in a panel or on its own page.

Static vs live

Static and live describe how an artifact behaves, not two different APIs.

Static content is frozen at generation. A report, a slide deck, generated code, a document. Re-open it next week and you see exactly what was produced.

Live content is data-backed and interactive. A dashboard re-fetches current numbers on open. A small app exposes filters and controls and can write edits back.

If the user expects a fixed record, it is static. If they expect fresh data, it is live. There is no static: true or live: true flag. It is how the renderer is written.

Custom artifacts

To render an artifact, like an interactive app or a domain-specific view, you register a renderer for it through the artifactRenderers prop.

<AgentInterface llm={llm} artifactRenderers={[myRenderer]} />

See Custom artifacts for defineArtifactRenderer, the preview and actual views, and persisting edits.

On this page