How tanstack/ai works
TanStack AI is a modular TypeScript SDK for building streaming, tool-using AI applications. Its principal workflow is an application request entering the core chat activity, using a provider adapter to communicate with a model, then streaming results to a client. Separate packages add framework bindings, media and realtime generation, agent execution, MCP tools, Code Mode, and observability. The README documents the product-level connections; sampled source adds details for lazy tool discovery and harness protocol/session handling, but many subsystem implementations were not sampled.
Main entry points: chat Chat activity · src Headless client · tools Tool definitions · agents Subagents
Components 20
Core AI runtime
- Chat activity
packages/ai/src/activities/chat - Core contracts
packages/ai/src/types.ts
Model providers
- Provider adapters
packages/ai-openai/src - Anthropic adapter
packages/ai-anthropic/src - Gemini adapter
packages/ai-gemini/src
Clients and media
- Headless client
packages/ai-client/src - Framework bindings
packages/ai-react/src - Media generation
packages/ai/src/activities - Realtime voice
packages/ai-gemini/src/realtime - Chat persistence
packages/ai-client/src/storage-adapters.ts
Agents and tools
- Tool definitions
packages/ai/src/activities/chat/tools - Lazy discovery
packages/ai/src/activities/chat/tools/lazy-tool-manager.ts - Subagents
packages/ai/src/activities/chat/agents - Code Mode
packages/ai-code-mode/src - Code snippets
packages/ai-code-mode-snippets/src
Runtime integrations
- MCP integration
packages/ai-mcp/src - Agent harness
packages/ai-harness/src - Harness protocol
packages/ai-harness/src/protocol.ts - Devtools
packages/ai-devtools/src
Other components
- Application
Connections 18
- Application → Chat activity: calls
README.md - Chat activity → Provider adapters: uses adapter
README.md - Chat activity → Anthropic adapter: uses adapter
README.md - Chat activity → Gemini adapter: uses adapter
README.md - Chat activity → Core contracts: uses contracts
packages/ai/src/activities/chat/tools/lazy-tool-manager.ts - Chat activity → Tool definitions: attaches tools
README.md - Chat activity → Lazy discovery: discovers tools
packages/ai/src/activities/chat/tools/lazy-tool-manager.ts - Chat activity → Subagents: routes agents
packages/ai/src/activities/chat/agents/route.ts - Subagents → Code Mode: can invoke
- Code Mode → Code snippets: uses snippets
README.md - Tool definitions → MCP integration: can use MCP
- Headless client → Chat activity: streams requests
README.md - Framework bindings → Headless client: binds client
README.md - Chat activity → Media generation: supports generation
README.md - Headless client → Chat persistence: persists state
packages/ai-client/src/storage-adapters.ts - Headless client → Realtime voice: supports realtime
README.md - Agent harness → Harness protocol: handles frames
packages/ai-harness/src/protocol.ts - Devtools → Chat activity: observes activity
README.md