Quickstart
Get a working generative UI chat in under 5 minutes
1. Install
pnpm add @fabrik-sdk/ui ai @ai-sdk/google zod motion2. Create the server route
This file handles LLM communication. API keys are read from environment variables.
import { aiSdk } from "@fabrik-sdk/ui/ai-sdk"
import { handler } from "@fabrik-sdk/ui/server"
import { google } from "@ai-sdk/google"
export const POST = handler({
provider: aiSdk({ model: google("gemini-3-flash-preview") })
// Reads GOOGLE_GENERATIVE_AI_API_KEY from .env.local
})3. Create the client page
"use client"
import { Fabrik, Chat } from "@fabrik-sdk/ui/react"
import { server } from "@fabrik-sdk/ui/server"
import { defineComponent } from "@fabrik-sdk/ui"
import { z } from "zod"
const provider = server({ url: "/api/chat" })
const weatherCard = defineComponent({
name: "weather_card",
description: "Shows weather for a city",
schema: z.object({
city: z.string(),
temp: z.number(),
condition: z.string(),
}),
component: ({ city, temp, condition }) => (
<div className="rounded-xl border p-4">
<h3 className="font-bold">{city}</h3>
<p className="text-3xl">{temp}°F</p>
<p className="text-muted-foreground">{condition}</p>
</div>
),
})
export default function Page() {
return (
<Fabrik provider={provider} components={[weatherCard]}>
<Chat />
</Fabrik>
)
}4. Add your API key
GOOGLE_GENERATIVE_AI_API_KEY=AI...5. Run
pnpm devOpen http://localhost:3000 and ask "Show me the weather in San Francisco".
Switching providers
Swap the AI SDK model in your server route — the client code never changes:
import { aiSdk } from "@fabrik-sdk/ui/ai-sdk"
import { handler } from "@fabrik-sdk/ui/server"
import { openai } from "@ai-sdk/openai"
export const POST = handler({
provider: aiSdk({ model: openai("gpt-4o") })
})
// pnpm add @ai-sdk/openai — env: OPENAI_API_KEYimport { aiSdk } from "@fabrik-sdk/ui/ai-sdk"
import { handler } from "@fabrik-sdk/ui/server"
import { anthropic } from "@ai-sdk/anthropic"
export const POST = handler({
provider: aiSdk({ model: anthropic("claude-sonnet-4-20250514") })
})
// pnpm add @ai-sdk/anthropic — env: ANTHROPIC_API_KEYimport { aiSdk } from "@fabrik-sdk/ui/ai-sdk"
import { handler } from "@fabrik-sdk/ui/server"
import { google } from "@ai-sdk/google"
export const POST = handler({
provider: aiSdk({ model: google("gemini-3-flash-preview") })
})
// pnpm add @ai-sdk/google — env: GOOGLE_GENERATIVE_AI_API_KEYThe client code never changes.