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.
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.