introducing conversed - rich content ui for ai agents

composable rich content ui library that parses llm responses into interactive blocks; tables, charts, metric cards, and an action protocol.

open source - composable rich content ui library for ai agents and llm chat interfaces.

the problem

most ai chat interfaces render static text or basic markdown. but models don’t just talk - they generate structured stuff; tables, metric cards, callouts, charts. plain text renderers just can’t give that an interactive feel.

what conversed does

it parses model responses into a structured content block ast (abstract syntax tree), then renders each block as a real, interactive ui component.

a few things i am excited about;

  • interactive action protocol - attach custom triggers like view-detail or approve-transaction directly to table rows, metric cards, and prompt chips
  • native charts - bar, line, and pie charts (via chart.js) straight from model output, no manual wiring
  • standalone blocks - render a single rich block anywhere - a dashboard, a side drawer, a modal - not just inside a chat feed
  • provider-agnostic - works with claude, openai, gemini, firebase vertex ai, or local models
  • zero-config theming - one primaryColor prop, or your own css variables
  • built-in debug mode - log raw text, parsed blocks, and emitted actions to the console

packages

under the hood it’s a pure typescript core with thin framework bindings - install whichever ones you need from npm;

  • @conversed/core - ast definitions, the stream parser engine, and the action protocol
  • @conversed/react - react 18+ components and block renderers
  • @conversed/angular - angular 17+ signals-based components

try it

there is a live react playground - conversed-web.web.app - where you can play with the blocks and the action inspector in a live chat console.

the code is on github - early days, release candidates for now, but the foundation is solid.


it’s open source, so contributions and feedback are welcome. what would you build with it?