| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
 |  | |||
Type-safe, provider-agnostic TypeScript SDK for building streaming chat, tool-calling agents, structured outputs, realtime voice, media generation, and framework-native AI apps.
TanStack AI is built from composable activities and provider adapters. Use one provider or switch between many. Import only chat, or add image, audio, video, speech, transcription, summarization, realtime, Code Mode, devtools, and framework bindings as your app needs them.
Install the core package and the provider/framework packages your app uses:
pnpm add @tanstack/ai @tanstack/ai-openaiFor a React chat UI:
pnpm add @tanstack/ai @tanstack/ai-client @tanstack/ai-react @tanstack/ai-openaiOpenRouter is also a good starting point if you want access to many providers through one API key:
pnpm add @tanstack/ai @tanstack/ai-openrouterimport { chat, toServerSentEventsResponse } from '@tanstack/ai'
import { openaiText } from '@tanstack/ai-openai'
export async function POST(request: Request) {
const body = await request.json()
const stream = chat({
adapter: openaiText('gpt-5.2'),
messages: body.messages,
})
return toServerSentEventsResponse(stream)
}Learn more in the Chat & Streaming docs and Connection Adapters docs.
Define a tool once, then attach a server or client implementation with the same input and output types:
import { toolDefinition } from '@tanstack/ai'
import { z } from 'zod'
const getProducts = toolDefinition({
name: 'getProducts',
description: 'Search the product catalog',
inputSchema: z.object({ query: z.string() }),
outputSchema: z.array(
z.object({
id: z.string(),
name: z.string(),
}),
),
}).server(async ({ query }) => {
return db.products.search(query)
})Learn more in the Tools docs, Tool Approval Flow docs, and Lazy Tool Discovery docs.
Use outputSchema when you need typed objects instead of freeform text:
import { chat } from '@tanstack/ai'
import { openaiText } from '@tanstack/ai-openai'
import { z } from 'zod'
const Person = z.object({
name: z.string(),
age: z.number(),
})
const person = await chat({
adapter: openaiText('gpt-5.2'),
messages: [{ role: 'user', content: 'Ada Lovelace, 36' }],
outputSchema: Person,
})Learn more in the Structured Outputs docs.
Official adapters include:
| Package | Use it for |
|---|---|
| @tanstack/ai-openrouter | 300+ models through one OpenRouter API, with per-request cost tracking |
| @tanstack/ai-openai | OpenAI chat, image, video, speech, transcription, realtime, and provider tools |
| @tanstack/ai-anthropic | Anthropic Claude chat, thinking, tools, structured outputs, and Vertex Claude |
| @tanstack/ai-gemini | Google Gemini chat, image, speech, and audio generation |
| @tanstack/ai-vertex | Gemini on Vertex AI with regional endpoints and Google Cloud credentials |
| @tanstack/ai-ollama | Local Ollama models |
| @tanstack/ai-grok | xAI Grok chat, images, and realtime |
| @tanstack/ai-groq | Groq low-latency inference |
| @tanstack/ai-elevenlabs | ElevenLabs realtime voice, speech, transcription, music, and sound effects |
| @tanstack/ai-byteplus | BytePlus Seed chat, Seedance video, Seedream image, and Seed Speech TTS/ASR |
| @tanstack/ai-fal | fal.ai image, video, audio, speech, and transcription models |
The adapter system is tree-shakeable by activity. Import openaiText for chat, openaiImage for images, falVideo for video, geminiSpeech for TTS, and so on.
| Package | What it provides |
|---|---|
| @tanstack/ai-client | Headless chat, realtime, and generation clients |
| @tanstack/ai-react | React hooks including useChat, useRealtimeChat, and generation hooks |
| @tanstack/ai-solid | Solid hooks for chat and generations |
| @tanstack/ai-vue | Vue composables for chat and generations |
| @tanstack/ai-svelte | Svelte 5 factories for chat and generations |
| @tanstack/ai-preact | Preact hooks for chat |
| @tanstack/ai-react-ui, @tanstack/ai-solid-ui, @tanstack/ai-vue-ui | Headless UI components for chat interfaces |
|
|
|
We're looking for TanStack AI partners to join our mission. Partner with us to push the boundaries of TanStack AI and build amazing things together.
LET'S CHAT...and more at TanStack.com.
| Back | FazBrowse Home | New Git URL |