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-detailorapprove-transactiondirectly 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
primaryColorprop, 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?