@assistant-ui/mcp-docs-server 0.1.30 → 0.1.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/.docs/organized/code-examples/waterfall.md +1 -1
  2. package/.docs/organized/code-examples/with-a2a.md +2 -2
  3. package/.docs/organized/code-examples/with-ag-ui.md +3 -3
  4. package/.docs/organized/code-examples/with-ai-sdk-v6.md +5 -5
  5. package/.docs/organized/code-examples/with-artifacts.md +5 -5
  6. package/.docs/organized/code-examples/with-assistant-transport.md +3 -3
  7. package/.docs/organized/code-examples/with-chain-of-thought.md +79 -50
  8. package/.docs/organized/code-examples/with-cloud-standalone.md +4 -4
  9. package/.docs/organized/code-examples/with-cloud.md +4 -4
  10. package/.docs/organized/code-examples/with-custom-thread-list.md +56 -11
  11. package/.docs/organized/code-examples/with-elevenlabs-conversational.md +7 -7
  12. package/.docs/organized/code-examples/with-elevenlabs-scribe.md +7 -7
  13. package/.docs/organized/code-examples/with-expo.md +16 -16
  14. package/.docs/organized/code-examples/with-external-store.md +2 -2
  15. package/.docs/organized/code-examples/with-ffmpeg.md +5 -5
  16. package/.docs/organized/code-examples/with-generative-ui.md +5 -5
  17. package/.docs/organized/code-examples/with-google-adk.md +4 -4
  18. package/.docs/organized/code-examples/with-heat-graph.md +1 -1
  19. package/.docs/organized/code-examples/with-interactables.md +5 -5
  20. package/.docs/organized/code-examples/with-langchain.md +3 -3
  21. package/.docs/organized/code-examples/with-langgraph.md +3 -3
  22. package/.docs/organized/code-examples/with-livekit.md +8 -8
  23. package/.docs/organized/code-examples/with-opencode.md +99 -54
  24. package/.docs/organized/code-examples/with-parent-id-grouping.md +4 -4
  25. package/.docs/organized/code-examples/with-react-hook-form.md +5 -5
  26. package/.docs/organized/code-examples/with-react-ink.md +1 -1
  27. package/.docs/organized/code-examples/with-react-router.md +8 -8
  28. package/.docs/organized/code-examples/with-store.md +1 -1
  29. package/.docs/organized/code-examples/with-tanstack.md +5 -5
  30. package/.docs/organized/code-examples/with-tap-runtime.md +2 -2
  31. package/.docs/raw/docs/(docs)/cli.mdx +2 -1
  32. package/.docs/raw/docs/(docs)/copilots/assistant-frame.mdx +1 -0
  33. package/.docs/raw/docs/(docs)/copilots/make-assistant-tool-ui.mdx +10 -3
  34. package/.docs/raw/docs/(docs)/copilots/make-assistant-tool.mdx +8 -3
  35. package/.docs/raw/docs/(docs)/copilots/make-assistant-visible.mdx +1 -0
  36. package/.docs/raw/docs/(docs)/copilots/model-context.mdx +1 -0
  37. package/.docs/raw/docs/(docs)/copilots/motivation.mdx +1 -0
  38. package/.docs/raw/docs/(docs)/copilots/use-assistant-instructions.mdx +1 -0
  39. package/.docs/raw/docs/(docs)/devtools.mdx +1 -0
  40. package/.docs/raw/docs/(docs)/index.mdx +1 -0
  41. package/.docs/raw/docs/(docs)/installation.mdx +1 -0
  42. package/.docs/raw/docs/(docs)/rtl.mdx +1 -0
  43. package/.docs/raw/docs/(reference)/api-reference/adapters/attachments.mdx +34 -0
  44. package/.docs/raw/docs/(reference)/api-reference/adapters/feedback-speech.mdx +41 -0
  45. package/.docs/raw/docs/(reference)/api-reference/adapters/index.mdx +26 -0
  46. package/.docs/raw/docs/(reference)/api-reference/adapters/persistence.mdx +34 -0
  47. package/.docs/raw/docs/(reference)/api-reference/adapters/runtime.mdx +31 -0
  48. package/.docs/raw/docs/(reference)/api-reference/context-providers/index.mdx +20 -0
  49. package/.docs/raw/docs/(reference)/api-reference/hooks/index.mdx +26 -0
  50. package/.docs/raw/docs/(reference)/api-reference/hooks/model-context.mdx +72 -0
  51. package/.docs/raw/docs/(reference)/api-reference/hooks/runtimes.mdx +41 -0
  52. package/.docs/raw/docs/(reference)/api-reference/hooks/state.mdx +48 -0
  53. package/.docs/raw/docs/(reference)/api-reference/hooks/utilities.mdx +30 -0
  54. package/.docs/raw/docs/(reference)/api-reference/integrations/index.mdx +23 -0
  55. package/.docs/raw/docs/(reference)/api-reference/overview.mdx +21 -0
  56. package/.docs/raw/docs/(reference)/api-reference/primitives/assistant-if.mdx +7 -0
  57. package/.docs/raw/docs/(reference)/api-reference/primitives/index.mdx +65 -0
  58. package/.docs/raw/docs/(reference)/api-reference/primitives/message.mdx +50 -6
  59. package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list.mdx +15 -0
  60. package/.docs/raw/docs/(reference)/api-reference/primitives/thread.mdx +36 -1
  61. package/.docs/raw/docs/(reference)/api-reference/runtimes/index.mdx +38 -0
  62. package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-list-runtime.mdx +5 -0
  63. package/.docs/raw/docs/(reference)/migrations/v0-14.mdx +144 -6
  64. package/.docs/raw/docs/cloud/ai-sdk-assistant-ui.mdx +230 -2
  65. package/.docs/raw/docs/cloud/ai-sdk.mdx +221 -3
  66. package/.docs/raw/docs/cloud/langgraph.mdx +274 -2
  67. package/.docs/raw/docs/{(docs)/guides → guides}/attachments.mdx +41 -36
  68. package/.docs/raw/docs/guides/branching.mdx +76 -0
  69. package/.docs/raw/docs/guides/chain-of-thought.mdx +166 -0
  70. package/.docs/raw/docs/{(docs)/guides → guides}/context-api.mdx +50 -22
  71. package/.docs/raw/docs/{(docs)/guides → guides}/dictation.mdx +2 -0
  72. package/.docs/raw/docs/guides/editing.mdx +102 -0
  73. package/.docs/raw/docs/guides/index.mdx +103 -0
  74. package/.docs/raw/docs/{(docs)/guides → guides}/interactables.mdx +49 -0
  75. package/.docs/raw/docs/{(docs)/guides → guides}/latex.mdx +51 -8
  76. package/.docs/raw/docs/{(docs)/guides → guides}/mentions.mdx +61 -86
  77. package/.docs/raw/docs/{(docs)/guides → guides}/message-timing.mdx +8 -2
  78. package/.docs/raw/docs/{(docs)/guides → guides}/multi-agent.mdx +64 -4
  79. package/.docs/raw/docs/{(docs)/guides → guides}/quoting.mdx +10 -17
  80. package/.docs/raw/docs/{(docs)/guides → guides}/slash-commands.mdx +103 -37
  81. package/.docs/raw/docs/guides/speech.mdx +156 -0
  82. package/.docs/raw/docs/{(docs)/guides → guides}/suggestions.mdx +21 -83
  83. package/.docs/raw/docs/{(docs)/guides → guides}/tool-ui.mdx +108 -36
  84. package/.docs/raw/docs/{(docs)/guides → guides}/tools.mdx +131 -35
  85. package/.docs/raw/docs/{(docs)/guides → guides}/voice.mdx +39 -0
  86. package/.docs/raw/docs/ink/index.mdx +1 -3
  87. package/.docs/raw/docs/ink/migration.mdx +1 -3
  88. package/.docs/raw/docs/ink/primitives.mdx +37 -1
  89. package/.docs/raw/docs/integrations/attachments/custom-adapter.mdx +520 -0
  90. package/.docs/raw/docs/integrations/auth/better-auth.mdx +191 -0
  91. package/.docs/raw/docs/integrations/auth/clerk.mdx +172 -0
  92. package/.docs/raw/docs/integrations/auth/next-auth.mdx +196 -0
  93. package/.docs/raw/docs/integrations/frameworks/ai-sdk.mdx +79 -0
  94. package/.docs/raw/docs/integrations/frameworks/mastra/full-stack.mdx +188 -0
  95. package/.docs/raw/docs/integrations/frameworks/mastra/overview.mdx +57 -0
  96. package/.docs/raw/docs/integrations/frameworks/mastra/separate-server.mdx +201 -0
  97. package/.docs/raw/docs/integrations/gateways/index.mdx +157 -0
  98. package/.docs/raw/docs/integrations/index.mdx +173 -0
  99. package/.docs/raw/docs/integrations/observability/helicone.mdx +130 -0
  100. package/.docs/raw/docs/integrations/observability/langfuse.mdx +156 -0
  101. package/.docs/raw/docs/integrations/observability/langsmith.mdx +146 -0
  102. package/.docs/raw/docs/integrations/persistence/custom-adapter.mdx +712 -0
  103. package/.docs/raw/docs/integrations/tools/mcp.mdx +267 -0
  104. package/.docs/raw/docs/primitives/action-bar.mdx +1 -0
  105. package/.docs/raw/docs/primitives/assistant-modal.mdx +1 -0
  106. package/.docs/raw/docs/primitives/attachment.mdx +1 -0
  107. package/.docs/raw/docs/primitives/branch-picker.mdx +1 -0
  108. package/.docs/raw/docs/primitives/chain-of-thought.mdx +90 -85
  109. package/.docs/raw/docs/primitives/composer.mdx +2 -1
  110. package/.docs/raw/docs/primitives/error.mdx +1 -0
  111. package/.docs/raw/docs/primitives/index.mdx +2 -1
  112. package/.docs/raw/docs/primitives/message.mdx +68 -5
  113. package/.docs/raw/docs/primitives/selection-toolbar.mdx +1 -0
  114. package/.docs/raw/docs/primitives/suggestion.mdx +1 -0
  115. package/.docs/raw/docs/primitives/thread-list.mdx +39 -0
  116. package/.docs/raw/docs/primitives/thread.mdx +16 -13
  117. package/.docs/raw/docs/react-native/index.mdx +1 -3
  118. package/.docs/raw/docs/react-native/migration.mdx +1 -3
  119. package/.docs/raw/docs/runtimes/a2a/client-and-hooks.mdx +396 -0
  120. package/.docs/raw/docs/runtimes/a2a/overview.mdx +60 -0
  121. package/.docs/raw/docs/runtimes/a2a/quickstart.mdx +216 -0
  122. package/.docs/raw/docs/runtimes/ag-ui/overview.mdx +70 -0
  123. package/.docs/raw/docs/runtimes/ag-ui/quickstart.mdx +243 -0
  124. package/.docs/raw/docs/runtimes/ag-ui/runtime-options.mdx +123 -0
  125. package/.docs/raw/docs/runtimes/ai-sdk/overview.mdx +52 -0
  126. package/.docs/raw/docs/runtimes/ai-sdk/v4-legacy.mdx +71 -131
  127. package/.docs/raw/docs/runtimes/ai-sdk/v5-legacy.mdx +69 -63
  128. package/.docs/raw/docs/runtimes/ai-sdk/v6.mdx +330 -123
  129. package/.docs/raw/docs/runtimes/concepts/adapters.mdx +265 -0
  130. package/.docs/raw/docs/runtimes/concepts/architecture.mdx +125 -0
  131. package/.docs/raw/docs/runtimes/concepts/stability.mdx +67 -0
  132. package/.docs/raw/docs/runtimes/concepts/threads.mdx +428 -0
  133. package/.docs/raw/docs/runtimes/custom/assistant-transport.mdx +703 -0
  134. package/.docs/raw/docs/runtimes/custom/data-stream.mdx +323 -0
  135. package/.docs/raw/docs/runtimes/custom/external-store.mdx +253 -1236
  136. package/.docs/raw/docs/runtimes/custom/local-runtime.mdx +746 -0
  137. package/.docs/raw/docs/runtimes/custom/overview.mdx +71 -0
  138. package/.docs/raw/docs/runtimes/google-adk/api.mdx +256 -0
  139. package/.docs/raw/docs/runtimes/google-adk/hooks.mdx +717 -0
  140. package/.docs/raw/docs/runtimes/google-adk/overview.mdx +69 -0
  141. package/.docs/raw/docs/runtimes/google-adk/quickstart.mdx +229 -0
  142. package/.docs/raw/docs/runtimes/langchain.mdx +533 -0
  143. package/.docs/raw/docs/runtimes/langgraph/generative-ui.mdx +305 -0
  144. package/.docs/raw/docs/runtimes/langgraph/interrupts.mdx +104 -0
  145. package/.docs/raw/docs/runtimes/langgraph/overview.mdx +84 -0
  146. package/.docs/raw/docs/runtimes/langgraph/quickstart.mdx +496 -0
  147. package/.docs/raw/docs/runtimes/langgraph/streaming.mdx +127 -0
  148. package/.docs/raw/docs/runtimes/langgraph/threads.mdx +113 -0
  149. package/.docs/raw/docs/runtimes/langgraph/tutorial/introduction.mdx +3 -3
  150. package/.docs/raw/docs/runtimes/langgraph/tutorial/part-1.mdx +0 -23
  151. package/.docs/raw/docs/runtimes/langgraph/tutorial/part-2.mdx +1 -1
  152. package/.docs/raw/docs/runtimes/opencode/hooks.mdx +191 -0
  153. package/.docs/raw/docs/runtimes/opencode/overview.mdx +48 -0
  154. package/.docs/raw/docs/runtimes/opencode/quickstart.mdx +119 -0
  155. package/.docs/raw/docs/runtimes/pick-a-runtime.mdx +71 -203
  156. package/.docs/raw/docs/ui/accordion.mdx +1 -0
  157. package/.docs/raw/docs/ui/assistant-modal.mdx +1 -0
  158. package/.docs/raw/docs/ui/assistant-sidebar.mdx +1 -0
  159. package/.docs/raw/docs/ui/attachment.mdx +1 -0
  160. package/.docs/raw/docs/ui/badge.mdx +1 -0
  161. package/.docs/raw/docs/ui/composer-trigger-popover.mdx +1 -0
  162. package/.docs/raw/docs/ui/context-display.mdx +1 -0
  163. package/.docs/raw/docs/ui/diff-viewer.mdx +1 -0
  164. package/.docs/raw/docs/ui/directive-text.mdx +1 -0
  165. package/.docs/raw/docs/ui/file.mdx +1 -0
  166. package/.docs/raw/docs/ui/image.mdx +1 -0
  167. package/.docs/raw/docs/ui/markdown.mdx +2 -14
  168. package/.docs/raw/docs/ui/mermaid.mdx +1 -0
  169. package/.docs/raw/docs/ui/message-timing.mdx +3 -2
  170. package/.docs/raw/docs/ui/model-selector.mdx +1 -0
  171. package/.docs/raw/docs/ui/part-grouping.mdx +325 -313
  172. package/.docs/raw/docs/ui/quote.mdx +1 -0
  173. package/.docs/raw/docs/ui/reasoning.mdx +66 -33
  174. package/.docs/raw/docs/ui/scrollbar.mdx +1 -0
  175. package/.docs/raw/docs/ui/select.mdx +1 -0
  176. package/.docs/raw/docs/ui/sources.mdx +1 -0
  177. package/.docs/raw/docs/ui/streamdown.mdx +1 -0
  178. package/.docs/raw/docs/ui/syntax-highlighting.mdx +1 -0
  179. package/.docs/raw/docs/ui/tabs.mdx +1 -0
  180. package/.docs/raw/docs/ui/thread-list.mdx +17 -0
  181. package/.docs/raw/docs/ui/thread.mdx +56 -1
  182. package/.docs/raw/docs/ui/tool-fallback.mdx +1 -0
  183. package/.docs/raw/docs/ui/tool-group.mdx +39 -11
  184. package/.docs/raw/docs/ui/voice.mdx +1 -0
  185. package/.docs/raw/docs/utilities/heat-graph.mdx +1 -0
  186. package/.docs/raw/docs/utilities/react-o11y.mdx +278 -0
  187. package/.docs/raw/docs/utilities/tw-shimmer.mdx +1 -0
  188. package/package.json +3 -3
  189. package/src/tools/tests/path-traversal.test.ts +1 -1
  190. package/.docs/raw/docs/(docs)/guides/branching.mdx +0 -65
  191. package/.docs/raw/docs/(docs)/guides/chain-of-thought.mdx +0 -164
  192. package/.docs/raw/docs/(docs)/guides/editing.mdx +0 -66
  193. package/.docs/raw/docs/(docs)/guides/speech.mdx +0 -38
  194. package/.docs/raw/docs/runtimes/a2a/index.mdx +0 -298
  195. package/.docs/raw/docs/runtimes/assistant-transport.mdx +0 -1033
  196. package/.docs/raw/docs/runtimes/custom/custom-thread-list.mdx +0 -314
  197. package/.docs/raw/docs/runtimes/custom/local.mdx +0 -1464
  198. package/.docs/raw/docs/runtimes/data-stream.mdx +0 -422
  199. package/.docs/raw/docs/runtimes/google-adk/index.mdx +0 -686
  200. package/.docs/raw/docs/runtimes/helicone.mdx +0 -61
  201. package/.docs/raw/docs/runtimes/langchain/comparison.mdx +0 -60
  202. package/.docs/raw/docs/runtimes/langchain/index.mdx +0 -210
  203. package/.docs/raw/docs/runtimes/langgraph/index.mdx +0 -699
  204. package/.docs/raw/docs/runtimes/langgraph/tutorial/index.mdx +0 -12
  205. package/.docs/raw/docs/runtimes/langserve.mdx +0 -116
  206. package/.docs/raw/docs/runtimes/mastra/full-stack-integration.mdx +0 -218
  207. package/.docs/raw/docs/runtimes/mastra/overview.mdx +0 -18
  208. package/.docs/raw/docs/runtimes/mastra/separate-server-integration.mdx +0 -217
@@ -1,245 +1,113 @@
1
1
  ---
2
- title: Picking a Runtime
3
- description: Which runtime fits your backend? Decision guide for common setups.
2
+ title: Picking a runtime
3
+ description: Decision guide for choosing the right runtime, by framework or by feature.
4
4
  ---
5
5
 
6
- Choosing the right runtime is crucial for your assistant-ui implementation. This guide helps you navigate the options based on your specific needs.
6
+ import { AguiIcon } from "@/components/icons/agui";
7
+ import { GeminiIcon } from "@/components/icons/gemini";
8
+ import { LangChainIcon } from "@/components/icons/langchain";
9
+ import { LangGraphIcon } from "@/components/icons/langgraph";
10
+ import { MastraIcon } from "@/components/icons/mastra";
11
+ import { OpenCodeIcon } from "@/components/icons/opencode";
12
+ import { VercelIcon } from "@/components/icons/vercel";
13
+ import { Network } from "lucide-react";
7
14
 
8
- ## Quick Decision Tree
15
+ A runtime is the connection between assistant-ui's UI primitives and your AI backend. This page helps you pick one. Two lenses, pick whichever maps to what you already know.
9
16
 
10
- ```mermaid
11
- graph TD
12
- A[What's your starting point?] --> B{Existing Framework?}
13
- B -->|Vercel AI SDK| C[Use AI SDK Integration]
14
- B -->|LangGraph via langgraph-sdk| D1[Use react-langgraph]
15
- B -->|LangChain via @langchain/react useStream| D2[Use react-langchain]
16
- B -->|LangServe| E[Use LangServe Runtime]
17
- B -->|Mastra| F[Use Mastra Runtime]
18
- B -->|AG-UI Protocol| J[Use AG-UI Runtime]
19
- B -->|A2A Protocol| K[Use A2A Runtime]
20
- B -->|Custom Backend| G{State Management?}
21
- G -->|Let assistant-ui handle it| H[Use LocalRuntime]
22
- G -->|I'll manage it myself| I[Use ExternalStoreRuntime]
23
- ```
17
+ ## Lens 1: by framework
24
18
 
25
- ## Core Runtimes
19
+ If you are already using one of these frameworks, the choice is mechanical.
26
20
 
27
- These are the foundational runtimes that power assistant-ui:
21
+ ### First-party adapters
28
22
 
29
- <Cards>
30
- <Card
31
- title="`LocalRuntime`"
32
- description="assistant-ui manages chat state internally. Simple adapter pattern for any backend."
33
- href="/docs/runtimes/custom/local"
34
- />
35
- <Card
36
- title="`ExternalStoreRuntime`"
37
- description="You control the state. Perfect for Redux, Zustand, or existing state management."
38
- href="/docs/runtimes/custom/external-store"
39
- />
40
- </Cards>
41
-
42
- ## Pre-Built Integrations
43
-
44
- For popular frameworks, we provide ready-to-use integrations built on top of our core runtimes:
23
+ assistant-ui ships React adapter packages for these. Pick the matching card and follow its overview.
45
24
 
46
25
  <Cards>
47
26
  <Card
27
+ icon={<VercelIcon width={20} height={20} />}
48
28
  title="Vercel AI SDK"
49
- description="For useChat hook - streaming with all major providers"
50
- href="/docs/runtimes/ai-sdk/v6"
51
- />
52
- <Card
53
- title="Data Stream Protocol"
54
- description="For custom backends using the data stream protocol standard"
55
- href="/docs/runtimes/data-stream"
29
+ description="useChat hook, streaming, tools, attachments, multi-step. v6 current; v5 / v4 legacy."
30
+ href="/docs/runtimes/ai-sdk"
56
31
  />
57
32
  <Card
33
+ icon={<LangGraphIcon width={20} height={20} className="text-[#1C3C3C] dark:text-[#5b9595]" />}
58
34
  title="LangGraph"
59
- description="Integrates with `@langchain/langgraph-sdk` directly. Broader feature set: subgraph events, UI messages, message metadata, cancellation."
35
+ description="Direct integration with @langchain/langgraph-sdk. Subgraph events, UI messages, message metadata."
60
36
  href="/docs/runtimes/langgraph"
61
37
  />
62
38
  <Card
39
+ icon={<LangChainIcon width={20} height={20} className="text-[#7FC8FF]" />}
63
40
  title="LangChain useStream"
64
- description="Wraps `useStream` from `@langchain/react`. Lighter-weight, stays aligned with upstream. Fewer features today."
41
+ description="Wraps @langchain/react's useStream. Lighter-weight, tracks upstream."
65
42
  href="/docs/runtimes/langchain"
66
43
  />
67
44
  <Card
68
- title="LangServe"
69
- description="For LangChain applications deployed with LangServe"
70
- href="/docs/runtimes/langserve"
45
+ icon={<GeminiIcon width={20} height={20} />}
46
+ title="Google ADK"
47
+ description="ADK JS or Python agents. Tool confirmations, auth flows, multi-agent, code execution."
48
+ href="/docs/runtimes/google-adk"
71
49
  />
72
50
  <Card
73
- title="Mastra"
74
- description="For workflow orchestration with Mastra's ecosystem"
75
- href="/docs/runtimes/mastra/overview"
51
+ icon={<Network width={20} height={20} />}
52
+ title="A2A Protocol"
53
+ description="Any A2A v1.0-compliant agent server. Streaming task state, artifacts, multi-tenancy."
54
+ href="/docs/runtimes/a2a"
76
55
  />
77
56
  <Card
57
+ icon={<AguiIcon width={20} height={20} />}
78
58
  title="AG-UI Protocol"
79
- description="For backends implementing the AG-UI (Agent-User Interaction) protocol"
80
- href="https://www.npmjs.com/package/@assistant-ui/react-ag-ui"
81
- />
82
- <Card
83
- title="A2A Protocol"
84
- description="For Agent-to-Agent protocol communication between AI agents"
85
- href="/docs/runtimes/a2a"
59
+ description="AG-UI agents (CopilotKit, custom servers). Streaming text, thinking, tool calls, state snapshots."
60
+ href="/docs/runtimes/ag-ui"
86
61
  />
62
+ <PlatformOnly platforms={["react"]}>
63
+ <Card
64
+ icon={<OpenCodeIcon width={20} height={20} />}
65
+ title="OpenCode"
66
+ description="OpenCode coding-agent server. Permission flows, questions, fork / revert. Experimental."
67
+ href="/docs/runtimes/opencode"
68
+ />
69
+ </PlatformOnly>
87
70
  </Cards>
88
71
 
89
- ## Understanding Runtime Architecture
72
+ <PlatformOnly platforms={["react"]}>
90
73
 
91
- ### How Pre-Built Integrations Work
74
+ ### Integration guides
92
75
 
93
- The pre-built integrations (AI SDK, LangGraph, etc.) are **not separate runtime types**. They're convenient wrappers built on top of our core runtimes:
76
+ For frameworks without a dedicated adapter, these wiring guides route through one of the adapters above.
94
77
 
95
- - **AI SDK Integration** → Built on `LocalRuntime` with streaming adapter
96
- - **LangGraph Runtime** → Built on `ExternalStoreRuntime`, integrates with `@langchain/langgraph-sdk`
97
- - **LangChain useStream Runtime** → Built on `ExternalStoreRuntime`, wraps `useStream` from `@langchain/react`
98
- - **LangServe Runtime** → Built on `LocalRuntime` with LangServe client adapter
99
- - **Mastra Runtime** → Built on `LocalRuntime` with workflow adapter
100
- - **AG-UI Runtime** → Built on `LocalRuntime` with AG-UI protocol adapter
101
- - **A2A Runtime** → Built on `LocalRuntime` with Agent-to-Agent protocol adapter
78
+ <Cards>
79
+ <Card
80
+ icon={<MastraIcon width={20} height={20} />}
81
+ title="Mastra"
82
+ description="TypeScript agent framework. Wired through the Vercel AI SDK runtime."
83
+ href="/docs/integrations/frameworks/mastra/overview"
84
+ />
85
+ </Cards>
102
86
 
103
- This means pre-built integrations give you assistant-ui's features — state management, streaming, UI primitives — with zero configuration for your specific framework, regardless of whether the adapter happens to build on `LocalRuntime` or `ExternalStoreRuntime` internally. The list above tells you which core runtime each adapter uses.
87
+ </PlatformOnly>
104
88
 
105
- ### When to Use Pre-Built vs Core Runtimes
89
+ ## Lens 2: by needs
106
90
 
107
- **Use a pre-built integration when:**
108
- - You're already using that framework
109
- - You want the fastest possible setup
110
- - The integration covers your needs
91
+ If you do not know your framework yet, or your backend is custom, pick by what you need:
111
92
 
112
- **Use a core runtime when:**
113
- - You have a custom backend
114
- - You need features not exposed by the integration
115
- - You want full control over the implementation
93
+ | You need | Use |
94
+ | --- | --- |
95
+ | Simple `fetch` call to your API, runtime owns state | [LocalRuntime](/docs/runtimes/custom/local-runtime) |
96
+ | Keep messages in redux, zustand, tanstack-query, etc. | [ExternalStoreRuntime](/docs/runtimes/custom/external-store) |
97
+ | Backend that already speaks the data stream protocol | [DataStream](/docs/runtimes/custom/data-stream) |
98
+ | Stream full agent state snapshots (not just messages) | [AssistantTransport](/docs/runtimes/custom/assistant-transport) |
116
99
 
117
- <Callout>
118
- Pre-built integrations can always be replaced with a custom `LocalRuntime` or `ExternalStoreRuntime` implementation if you need more control later.
119
- </Callout>
100
+ If none of the framework adapters fits, start at [custom backend](/docs/runtimes/custom).
101
+
102
+ ## Shared concepts
103
+
104
+ Regardless of which runtime you pick, four ideas apply across the board.
120
105
 
121
- ## Feature Comparison
122
-
123
- ### Core Runtime Capabilities
124
-
125
- | Feature | `LocalRuntime` | `ExternalStoreRuntime` |
126
- | ------- | -------------- | ---------------------- |
127
- | **State Management** | Automatic | You control |
128
- | **Setup Complexity** | Simple | Moderate |
129
- | **Message Editing** | Built-in | Implement `onEdit` |
130
- | **Branch Switching** | Built-in | Implement `setMessages` |
131
- | **Regeneration** | Built-in | Implement `onReload` |
132
- | **Cancellation** | Built-in | Implement `onCancel` |
133
- | **Multi-thread** | Via adapters | Via adapters |
134
-
135
- ### Available Adapters
136
-
137
- | Adapter | `LocalRuntime` | `ExternalStoreRuntime` |
138
- | ------- | -------------- | ---------------------- |
139
- | ChatModel | ✅ Required | ❌ N/A |
140
- | Attachments | ✅ | ✅ |
141
- | Speech | ✅ | ✅ |
142
- | Feedback | ✅ | ✅ |
143
- | History | ✅ | ❌ Use your state |
144
- | Suggestions | ✅ | ❌ Use your state |
145
-
146
- ## Common Implementation Patterns
147
-
148
- ### Vercel AI SDK with Streaming
149
-
150
- ```tsx
151
- import { AssistantRuntimeProvider, Thread } from "@assistant-ui/react";
152
- import { useChatRuntime } from "@assistant-ui/react-ai-sdk";
153
-
154
- export function MyAssistant() {
155
- const runtime = useChatRuntime();
156
-
157
- return (
158
- <AssistantRuntimeProvider runtime={runtime}>
159
- <Thread />
160
- </AssistantRuntimeProvider>
161
- );
162
- }
163
- ```
164
-
165
- ### Custom Backend with `LocalRuntime`
166
-
167
- ```tsx
168
- import { useLocalRuntime } from "@assistant-ui/react";
169
-
170
- const runtime = useLocalRuntime({
171
- async run({ messages, abortSignal }) {
172
- const response = await fetch("/api/chat", {
173
- method: "POST",
174
- headers: { "Content-Type": "application/json" },
175
- body: JSON.stringify({ messages }),
176
- signal: abortSignal,
177
- });
178
- return response.json();
179
- },
180
- });
181
- ```
182
-
183
- ### Redux Integration with `ExternalStoreRuntime`
184
-
185
- ```tsx
186
- import { useExternalStoreRuntime } from "@assistant-ui/react";
187
-
188
- const messages = useSelector(selectMessages);
189
- const dispatch = useDispatch();
190
-
191
- const runtime = useExternalStoreRuntime({
192
- messages,
193
- onNew: async (message) => {
194
- dispatch(addUserMessage(message));
195
- const response = await api.chat(message);
196
- dispatch(addAssistantMessage(response));
197
- },
198
- setMessages: (messages) => dispatch(setMessages(messages)),
199
- onEdit: async (message) => dispatch(editMessage(message)),
200
- onReload: async (parentId) => dispatch(reloadMessage(parentId)),
201
- });
202
- ```
203
-
204
- ## Examples
205
-
206
- Explore our implementation examples:
207
-
208
- - **[AI SDK v6 Example](https://github.com/assistant-ui/assistant-ui/tree/main/examples/with-ai-sdk-v6)** - Vercel AI SDK with `useChatRuntime`
209
- - **[External Store Example](https://github.com/assistant-ui/assistant-ui/tree/main/examples/with-external-store)** - `ExternalStoreRuntime` with custom state
210
- - **[Assistant Cloud Example](https://github.com/assistant-ui/assistant-ui/tree/main/examples/with-cloud)** - Multi-thread with cloud persistence
211
- - **[LangGraph Example](https://github.com/assistant-ui/assistant-ui/tree/main/examples/with-langgraph)** - Agent workflows
212
-
213
- ## Common Pitfalls to Avoid
214
-
215
- ### LocalRuntime Pitfalls
216
- - **Forgetting the adapter**: `LocalRuntime` requires a `ChatModelAdapter` - it won't work without one
217
- - **Not handling errors**: Always handle API errors in your adapter's `run` function
218
- - **Missing abort signal**: Pass `abortSignal` to your fetch calls for proper cancellation
219
-
220
- ### ExternalStoreRuntime Pitfalls
221
- - **Mutating state**: Always create new arrays/objects when updating messages
222
- - **Missing handlers**: Each UI feature requires its corresponding handler (e.g., no edit button without `onEdit`)
223
- - **Forgetting optimistic updates**: Set `isRunning` to `true` for loading states
224
-
225
- ### General Pitfalls
226
- - **Wrong integration level**: Don't use `LocalRuntime` if you already have Vercel AI SDK - use the AI SDK integration instead
227
- - **Over-engineering**: Start with pre-built integrations before building custom solutions
228
- - **Ignoring TypeScript**: The types will guide you to the correct implementation
229
-
230
- ## Next Steps
231
-
232
- 1. **Choose your runtime** based on the decision tree above
233
- 2. **Follow the specific guide**:
234
- - [AI SDK Integration](/docs/runtimes/ai-sdk/v6)
235
- - [`LocalRuntime` Guide](/docs/runtimes/custom/local)
236
- - [`ExternalStoreRuntime` Guide](/docs/runtimes/custom/external-store)
237
- - [LangGraph Integration](/docs/runtimes/langgraph)
238
- - [LangChain useStream Integration](/docs/runtimes/langchain)
239
- 3. **Start with an example** from our [examples repository](https://github.com/assistant-ui/assistant-ui/tree/main/examples)
240
- 4. **Add features progressively** using adapters
241
- 5. **Consider Assistant Cloud** for production persistence
106
+ - **Architecture** — Framework adapters wrap one of two **core runtimes** (`LocalRuntime`, `ExternalStoreRuntime`). See [architecture](/docs/runtimes/concepts/architecture) for the full layering.
107
+ - **Adapters** (attachments, speech, feedback, history, suggestions) work the same way across runtimes. See [adapters](/docs/runtimes/concepts/adapters).
108
+ - **Threads** (single, cloud, custom database) follow the same model. See [threads](/docs/runtimes/concepts/threads).
109
+ - **Stability** policy: APIs prefixed with `unstable_` may change in any release. See [stability](/docs/runtimes/concepts/stability).
242
110
 
243
111
  <Callout type="info">
244
- Need help? Join our [Discord community](https://discord.gg/S9dwgCNEFs) or check the [GitHub](https://github.com/assistant-ui/assistant-ui).
112
+ Need help? Join our [Discord community](https://discord.gg/S9dwgCNEFs) or check the [GitHub repo](https://github.com/assistant-ui/assistant-ui).
245
113
  </Callout>
@@ -4,6 +4,7 @@ description: A vertically stacked set of interactive headings that reveal or hid
4
4
  links:
5
5
  - label: Radix UI Accordion
6
6
  url: https://www.radix-ui.com/primitives/docs/components/accordion
7
+ platforms: ["react"]
7
8
  ---
8
9
 
9
10
  import { PreviewCode } from "@/components/docs/preview-code.server";
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  title: AssistantModal
3
3
  description: Floating chat bubble for support widgets and help desks.
4
+ platforms: ["react"]
4
5
  ---
5
6
 
6
7
  import { AssistantModalSample } from "@/components/docs/samples/assistant-modal";
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  title: AssistantSidebar
3
3
  description: Side panel chat for co-pilot experiences and inline assistance.
4
+ platforms: ["react"]
4
5
  ---
5
6
 
6
7
  import { AssistantSidebarSample } from "@/components/docs/samples/assistant-sidebar";
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  title: Attachment
3
3
  description: UI components for attaching and viewing files in messages.
4
+ platforms: ["react"]
4
5
  ---
5
6
 
6
7
  import { AttachmentSample } from "@/components/docs/samples/attachment";
@@ -4,6 +4,7 @@ description: A small label component for displaying status, categories, or metad
4
4
  links:
5
5
  - label: Radix UI Slot
6
6
  url: https://www.radix-ui.com/primitives/docs/utilities/slot
7
+ platforms: ["react"]
7
8
  ---
8
9
 
9
10
  import { PreviewCode } from "@/components/docs/preview-code.server";
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  title: Composer Trigger Popover
3
3
  description: Reusable picker UI for @ mentions, / slash commands, and any other character-triggered popover.
4
+ platforms: ["react"]
4
5
  ---
5
6
 
6
7
  import { ComposerTriggerPopoverSample } from "@/components/docs/samples/composer-trigger-popover";
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  title: Context Display
3
3
  description: Visualize token usage relative to a model's context window — ring, bar, or text — with a detailed hover popover.
4
+ platforms: ["react"]
4
5
  ---
5
6
 
6
7
  import { ContextDisplaySample } from "@/components/docs/samples/context-display";
@@ -6,6 +6,7 @@ links:
6
6
  url: https://github.com/sergeyt/parse-diff
7
7
  - label: diff
8
8
  url: https://github.com/kpdecker/jsdiff
9
+ platforms: ["react"]
9
10
  ---
10
11
 
11
12
  import { PreviewCode } from "@/components/docs/preview-code.server";
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  title: Directive Text
3
3
  description: Render mention directives as inline chips in user messages.
4
+ platforms: ["react"]
4
5
  ---
5
6
 
6
7
  import { DirectiveTextSample } from "@/components/docs/samples/directive-text";
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  title: File
3
3
  description: Display file message parts with icon, name, size, and download button.
4
+ platforms: ["react"]
4
5
  ---
5
6
 
6
7
  import { FileSample } from "@/components/docs/samples/file";
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  title: Image
3
3
  description: Display image message parts with preview, loading states, and fullscreen dialog.
4
+ platforms: ["react"]
4
5
  ---
5
6
 
6
7
  import { ImageSample } from "@/components/docs/samples/image";
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  title: Markdown
3
3
  description: Display rich text with headings, lists, links, and code blocks.
4
+ platforms: ["react"]
4
5
  ---
5
6
 
6
7
  import { MarkdownSample } from "@/components/docs/samples/markdown";
@@ -30,20 +31,7 @@ This adds a `/components/assistant-ui/markdown-text.tsx` file to your project, w
30
31
 
31
32
  Pass the `MarkdownText` component to the `MessagePrimitive.Parts` component
32
33
 
33
- ```tsx twoslash title="/components/assistant-ui/thread.tsx" {1,7}
34
- // @filename: /components/assistant-ui/markdown-text.tsx
35
- import { FC } from "react";
36
- export const MarkdownText: FC = () => null;
37
-
38
- // @filename: ./thread.tsx
39
- import { FC } from "react";
40
- import { MessagePrimitive } from "@assistant-ui/react";
41
- import { Avatar, AvatarFallback } from "@/components/ui/avatar";
42
-
43
- const AssistantActionBar: FC = () => null;
44
- const BranchPicker: FC<{ className?: string }> = () => null;
45
-
46
- // ---cut---
34
+ ```tsx title="/components/assistant-ui/thread.tsx" {1,7}
47
35
  import { MarkdownText } from "@/components/assistant-ui/markdown-text";
48
36
 
49
37
  const AssistantMessage: FC = () => {
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  title: "Mermaid Diagrams"
3
3
  description: Render Mermaid diagrams in chat messages with streaming support.
4
+ platforms: ["react"]
4
5
  ---
5
6
 
6
7
  import { MermaidSample } from "@/components/docs/samples/mermaid";
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  title: Message Timing
3
3
  description: Display streaming performance stats — TTFT, total time, tok/s, and chunk count — as a badge with hover popover.
4
+ platforms: ["react"]
4
5
  ---
5
6
 
6
7
  import { MessageTimingSample } from "@/components/docs/samples/message-timing";
@@ -65,9 +66,9 @@ The badge displays `totalStreamTime` inline and reveals a popover on hover with
65
66
 
66
67
  Timing accuracy depends on how your backend is connected.
67
68
 
68
- ### assistant-stream (accurate)
69
+ ### Data Stream (accurate)
69
70
 
70
- When using `assistant-stream` on the backend, token counts come directly from the model's usage data sent in `step-finish` chunks. The `tokensPerSecond` metric is exact whenever your backend reports `outputTokens`.
71
+ When using the [Data Stream](/docs/runtimes/custom/data-stream) protocol on the backend (via `assistant-stream`), token counts come directly from the model's usage data sent in `step-finish` chunks. The `tokensPerSecond` metric is exact whenever your backend reports `outputTokens`.
71
72
 
72
73
  ### Vercel AI SDK (estimated)
73
74
 
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  title: ModelSelector
3
3
  description: Model picker with unified overlay positioning and runtime integration.
4
+ platforms: ["react"]
4
5
  ---
5
6
 
6
7
  import { ModelSelectorSample } from "@/components/docs/samples/model-selector";