Generative UI
The model composes your components. Bundle them into UI kits.
Read the docsHashbrown is a headless TypeScript framework. The model renders your components and calls your tools, in the browser, with any provider.
npm i @hashbrownai/ {core,angular,openai}const components = [
exposeComponent(FlightCardComponent, {
name: 'FlightCard',
description: 'One aircraft on the map, with live altitude and speed.',
input: {
note: s.streaming.string('A sentence or two about this flight'),
hex: s.string('The aircraft hex code from a tool result.'),
},
fallback: FlightCardFallbackComponent,
children: false,
}),
];
chat = uiChatResource({
system: 'Provided by the server.',
components,
tools: [createTool(this.atc.findAircraft)],
});The same API in React and Angular.
The model only renders components you register. Skillet validates their props.
exposeComponent(AgingChart, {
input: { buckets: s.array(…) },
})Tools run in the browser, with your app's state and services.
createTool({
name: 'getInvoices',
handler: () => api.list(),
})Components render while the response streams in.
<hb-render-message [message]="m" />The model composes your components. Bundle them into UI kits.
Read the docsThe model calls functions in your app. Connect MCP servers too.
Read the docsSkillet schemas turn model output into typed JSON.
Read the docsStrings, arrays, and objects parse as they arrive. Magic Text streams Markdown.
Read the docsOpenAI, Anthropic, Gemini, Bedrock, Azure, Ollama, or a model in the browser.
Read the docsRun model-written JavaScript in a sandbox.
Read the docsatc is a live map of the planes over the Pacific Northwest. Ask about them, and the assistant answers with the app's own flight cards and arrivals boards.

