@Component({
template: `
<app-simple-chat-message [messages]="chat.value()" />
<app-chat-composer (sendMessage)="sendMessage($event)" />
`,
})
export class ChatComponent {
chat = chatResource({
model: 'gpt-4.1',
system: `
You are a helpful assistant that can answer questions and help with tasks.
`,
tools: [
createTool({
name: 'getUser',
description: 'Get information about the current user',
handler: () => {
const auth = inject(AuthService);
return auth.getUser();
},
}),
createTool({
name: 'getLights',
description: 'Get the current lights',
handler: () => lastValueFrom(this.smartHomeService.loadLights()),
}),
createToolWithArgs({
name: 'controlLight',
description: 'Control a light',
schema: s.object('Control light input', {
lightId: s.string('The id of the light'),
brightness: s.number('The brightness of the light'),
}),
handler: (input) => this.smartHomeService.controlLight(input.lightId, input.brightness),
}),
],
});
sendMessage(message: string) {
this.chat.sendMessage({ role: 'user', content: message });
}
}
a framework for building joyful,
AI-powered user experiences
100% free, open-source, and MIT-Licensed
translate natural language into structured data
Simplify complex forms & filters by leveraging large language models to accept your user's natural language translated into your app's existing data structures.
speed up workflows with suggestions and completions
Streamline your users' workflows by intelligently guessing their next steps. Subtly there when it helps speed them up, and totally ignorable when they are focused.
create a chat experience that you'd want to use
Imagine if AI Chat worked like a shell-like interface for power users. Build chat experiences that let your users orchestrate service calls that stream directly into your app's component layer - perfect for those times when a structured user interface would slow them down.
vibe code directly in the browser, safely & securely
What if we could leverage vibe coding as an app capability? Turn user intent and your data into code using LLMs, then use Hashbrown to safely and securely run that code in a sandboxed environment.
translate natural language into structured data
Simplify complex forms & filters by leveraging large language models to accept your user's natural language translated into your app's existing data structures.
Schedule an Event
{
"recurrenceType": "Weekly",
"byWeekDay": [
"MO",
"WE"
]
}
{
"recurrenceType": "Monthly",
"byMonthDay": [
15
]
}
speed up workflows with suggestions and completions
Streamline your users' workflows by intelligently guessing their next steps. Subtly there when it helps speed them up, and totally ignorable when they are focused.
Manage Lights
create a chat experience that you'd want to use
Imagine if AI Chat worked like a shell-like interface for power users. Build chat experiences that let your users orchestrate service calls that stream directly into your app's component layer - perfect for those times when a structured user interface would slow them down.
vibe code directly in the browser, safely & securely
What if we could leverage vibe coding as an app capability? Turn user intent and your data into code using LLMs, then use Hashbrown to safely and securely run that code in a sandboxed environment.
Vibe Code
const environment = defineEnvironment({
functions: [
defineFunction({
name: 'createLight',
input: s.string('Name of the light'),
output: s.object('Light object', {
id: s.string('ID of the light'),
name: s.string('Name of the light'),
brightness: s.number('Brightness'),
}),
handler: (input) => {
return smartHome.createLight(input);
},
}),
],
});
await environment.run(`
const light = await createLight(
'Living Room - Corner Lamp'
);
`);
100% open source
Hashbrown is proudly free, MIT-licensed, and open source.
If you’d like to support the project, please consider purchasing Enterprise Support or sponsoring our work on GitHub .
hashbrown utilizes the adapter pattern to normalize API calls between major AI providers. From there, hashbrown streams responses to your app. Chat state management and tool calling is implemented in your frontend framework’s reactivity system, making it easy to connect your service layer to the AI and consume AI outputs in your components.
getting started
- 1
use AI directly in your app
Use an LLM to stream generated UI components, text completions, suggestions, and structured output directly into your web app.
- 2
configure hashbrown
Connect your app to your streaming API route, with a short circuit to disable hashbrown for users who have opted out of AI
- 3
expose chat api route
hashbrown ships with adapter packages for major LLM vendors that makes it easy to create streaming responses for your app to consume
npm install @hashbrownai/{core,openai,angular} --save
LiveLoveApp provides secure, compliant, and reliable long-term support to enterprises. We are a group of engineers who are passionate about open source.
AI Engineering Sprint
Get your team up-to-speed on AI engineering with a one week AI engineering sprint. Includes a workshop on AI engineering with hashbrown and a few days with the hashbrown developer team to bring your AI ideas to life.
Long Term Support
Keep your hashbrown deployments running at peak performance with our Long Term Support. Includes an ongoing support retainer for direct access to the hashbrown developer team, SLA-backed issue resolution, and guided upgrades.
Consulting
LiveLoveApp provides hands-on engagement with our AI engineers for architecture reviews, custom integrations, proof-of-concept builds, performance tuning, and expert guidance on best practices.