Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
22d4737
Realtime chat basically working
jherr Jan 20, 2026
71ad066
Realtime chat basically working
jherr Jan 20, 2026
5ad2d2c
more updates
jherr Jan 22, 2026
f91425c
Merge remote-tracking branch 'origin/main' into realtime-chat
jherr Feb 19, 2026
41a5e97
chore: update pnpm-lock.yaml and latest realtime chat changes
jherr Feb 19, 2026
aa48ba2
ci: apply automated fixes
autofix-ci[bot] Feb 19, 2026
18ce05c
Merge remote-tracking branch 'origin/main' into realtime-chat
jherr Feb 20, 2026
008a824
Merge remote-tracking branch 'origin/main' into realtime-chat
jherr Feb 21, 2026
e9fe67b
Merge remote-tracking branch 'origin/main' into realtime-chat
jherr Feb 21, 2026
a611ad4
Merge remote-tracking branch 'origin/main' into realtime-chat
jherr Mar 1, 2026
c7c3520
chore: merge origin/main into pr-300
jherr Mar 6, 2026
8bc5a93
API improved
jherr Mar 6, 2026
dc7c45f
API further improved
jherr Mar 6, 2026
ddca0d6
API further improved
jherr Mar 6, 2026
4025e87
ci: apply automated fixes
autofix-ci[bot] Mar 6, 2026
a5f9879
Updating the docs
jherr Mar 6, 2026
2d8990e
text chat
jherr Mar 6, 2026
26cd4bd
Merge branch 'realtime-chat' of github.com:TanStack/ai into realtime-…
jherr Mar 6, 2026
62301f6
ci: apply automated fixes
autofix-ci[bot] Mar 6, 2026
14fed75
Merge branch 'main' into realtime-chat
jherr Mar 6, 2026
2ca3efc
Getting close to releasable
jherr Mar 6, 2026
d0233b5
updating changeset
jherr Mar 7, 2026
1b4e0f1
ci: apply automated fixes
autofix-ci[bot] Mar 7, 2026
f4e62ac
Realtime chat basically working
jherr Jan 20, 2026
929b4a8
Realtime chat basically working
jherr Jan 20, 2026
882c2be
more updates
jherr Jan 22, 2026
5298fa8
chore: update pnpm-lock.yaml and latest realtime chat changes
jherr Feb 19, 2026
dbb9cab
ci: apply automated fixes
autofix-ci[bot] Feb 19, 2026
8dbdddf
API improved
jherr Mar 6, 2026
44d0740
API further improved
jherr Mar 6, 2026
0165d97
API further improved
jherr Mar 6, 2026
1f5eaab
Updating the docs
jherr Mar 6, 2026
98831f8
text chat
jherr Mar 6, 2026
88a308f
ci: apply automated fixes
autofix-ci[bot] Mar 6, 2026
bd8f479
ci: apply automated fixes
autofix-ci[bot] Mar 6, 2026
3580092
Getting close to releasable
jherr Mar 6, 2026
5ff0f68
updating changeset
jherr Mar 7, 2026
3d6ce16
Resolve merge conflicts in realtime adapters and lockfile
jherr Mar 10, 2026
32844fb
Merge main into realtime-chat
jherr Mar 10, 2026
fb148cc
docs: add missing RealtimeStateChangeCallback type alias doc
jherr Mar 10, 2026
c7a57c6
ci: apply automated fixes
autofix-ci[bot] Mar 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions .changeset/realtime-chat.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
'@tanstack/ai': minor
'@tanstack/ai-client': minor
'@tanstack/ai-openai': minor
'@tanstack/ai-elevenlabs': minor
'@tanstack/ai-react': minor
---

feat: add realtime voice chat with OpenAI and ElevenLabs adapters

Adds realtime voice/text chat capabilities:

- **@tanstack/ai**: `realtimeToken()` function and shared realtime types (`RealtimeToken`, `RealtimeMessage`, `RealtimeSessionConfig`, `RealtimeStatus`, `RealtimeMode`, `AudioVisualization`, events, and error types)
- **@tanstack/ai-client**: Framework-agnostic `RealtimeClient` class with connection lifecycle, audio I/O, message state management, tool execution, and `RealtimeAdapter`/`RealtimeConnection` interfaces
- **@tanstack/ai-openai**: `openaiRealtime()` client adapter (WebRTC) and `openaiRealtimeToken()` server token adapter with support for semantic VAD, multiple voices, and all realtime models
- **@tanstack/ai-elevenlabs**: `elevenlabsRealtime()` client adapter (WebSocket) and `elevenlabsRealtimeToken()` server token adapter for ElevenLabs conversational AI agents
- **@tanstack/ai-react**: `useRealtimeChat()` hook with reactive state for status, mode, messages, pending transcripts, audio visualization levels, VAD control, text/image input, and interruptions
- **Docs**: Realtime Voice Chat guide and full API reference for all realtime classes, interfaces, functions, and type aliases
64 changes: 64 additions & 0 deletions docs/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,10 @@
"label": "Runtime Adapter Switching",
"to": "guides/runtime-adapter-switching"
},
{
"label": "Realtime Voice Chat",
"to": "guides/realtime-chat"
},
{
"label": "Text-to-Speech",
"to": "guides/text-to-speech"
Expand Down Expand Up @@ -228,6 +232,10 @@
"label": "ToolCallManager",
"to": "reference/classes/ToolCallManager"
},
{
"label": "RealtimeClient",
"to": "reference/classes/RealtimeClient"
},
{
"label": "WordBoundaryStrategy",
"to": "reference/classes/WordBoundaryStrategy"
Expand Down Expand Up @@ -315,6 +323,10 @@
"label": "uiMessageToModelMessages",
"to": "reference/functions/uiMessageToModelMessages"
},
{
"label": "realtimeToken",
"to": "reference/functions/realtimeToken"
},
{
"label": "untilFinishReason",
"to": "reference/functions/untilFinishReason"
Expand Down Expand Up @@ -346,6 +358,10 @@
"label": "AudioPart",
"to": "reference/interfaces/AudioPart"
},
{
"label": "AudioVisualization",
"to": "reference/interfaces/AudioVisualization"
},
{
"label": "BaseStreamChunk",
"to": "reference/interfaces/BaseStreamChunk"
Expand Down Expand Up @@ -426,6 +442,38 @@
"label": "ProcessorState",
"to": "reference/interfaces/ProcessorState"
},
{
"label": "RealtimeAdapter",
"to": "reference/interfaces/RealtimeAdapter"
},
{
"label": "RealtimeClientOptions",
"to": "reference/interfaces/RealtimeClientOptions"
},
{
"label": "RealtimeConnection",
"to": "reference/interfaces/RealtimeConnection"
},
{
"label": "RealtimeMessage",
"to": "reference/interfaces/RealtimeMessage"
},
{
"label": "RealtimeSessionConfig",
"to": "reference/interfaces/RealtimeSessionConfig"
},
{
"label": "RealtimeToken",
"to": "reference/interfaces/RealtimeToken"
},
{
"label": "RealtimeTokenAdapter",
"to": "reference/interfaces/RealtimeTokenAdapter"
},
{
"label": "RealtimeTokenOptions",
"to": "reference/interfaces/RealtimeTokenOptions"
},
{
"label": "ResponseFormat",
"to": "reference/interfaces/ResponseFormat"
Expand Down Expand Up @@ -581,6 +629,22 @@
"label": "MessagePart",
"to": "reference/type-aliases/MessagePart"
},
{
"label": "RealtimeEvent",
"to": "reference/type-aliases/RealtimeEvent"
},
{
"label": "RealtimeMessagePart",
"to": "reference/type-aliases/RealtimeMessagePart"
},
{
"label": "RealtimeMode",
"to": "reference/type-aliases/RealtimeMode"
},
{
"label": "RealtimeStatus",
"to": "reference/type-aliases/RealtimeStatus"
},
{
"label": "ModalitiesArrayToUnion",
"to": "reference/type-aliases/ModalitiesArrayToUnion"
Expand Down
Loading
Loading