Agent Interface

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.

On this page