What every assistant-ui runtime stores in the cloud and reports to it, what each cannot, and how the three platforms differ.
Every assistant-ui runtime takes the same cloud client and gets what its shape allows. A runtime that hands its messages to the cloud gets everything; a runtime whose backend keeps the transcript gets the thread list and the engagement side, and fills Runs from server traces instead.
The matrix
| Integration | Thread list | Stored messages | Titles | Run reports | Engagement, feedback, attachments |
|---|---|---|---|---|---|
AI SDK, useChatRuntime | yes | ai-sdk/v6 | at the first message | yes, with model and usage from the route's metadata | yes |
Local runtime, useLocalRuntime and useDataStreamRuntime | yes | aui/v0 | at the first message | yes, with model and usage from the adapter's metadata | yes |
| LangGraph, LangChain, ADK | yes | none, the backend keeps them | at the first message | none; export traces | engagement and attachments; feedback is skipped without stored messages |
AG-UI and A2A through useCloudThreadListRuntime | yes | aui/v0 | at the first message | yes, read from the stored assistant message | yes |
| A server with an API key | its own calls | whatever it stores | when it stores the user message | whatever it reports | events and scores it sends |
| Traces only, any language | none | none | none | runs, steps and tools from spans | none |
"At the first message" means the cloud titles the thread from the first user message, as Thread titles describes; the assistant-ui runtimes receive the title in the answer to their own request, and a server reads it on the thread afterwards.
What decides the column
- Thread list. Any runtime given a
cloudbacks its thread list with the project: listed per workspace, created on the first send, renamed, archived and deleted through the cloud. AG-UI and A2A have nocloudoption of their own and get the list by being theruntimeHookofuseCloudThreadListRuntime. - Stored messages. A runtime stores messages when it hands them to the cloud history adapter. The AI SDK runtime stores
ai-sdk/v6, the local runtime and the composed runtimes storeaui/v0. The messages endpoint convertsaui/v0rows toai-sdk/v6on read, so a thread written by the local runtime opens in the AI SDK runtime; the reverse is not converted. - Run reports. A report is sent when a stored assistant message settles. It carries what the runtime measured (duration, first token, steps, tool calls, status and outcome) and what the route or adapter put in the message metadata (model, provider, usage, trace id). Without that metadata the run is stored and listed under No model reported, and cannot be priced. Run reports lists every field and what each runtime fills.
- Engagement, feedback and attachments. The runtimes read every event from their store, so any action taken through the components or the primitives is counted. The feedback and attachment adapters default to the cloud whenever
cloudis set, and can be replaced throughadapters; a runtime that supplies its own adapter keeps it, and feedback needs a stored cloud message to rate.
The three platforms
The packages are the same on React, React Native and Ink; the environment differs.
| React | React Native | React Ink | |
|---|---|---|---|
| The client | Created for you from NEXT_PUBLIC_ASSISTANT_BASE_URL when you pass no cloud, anonymous | Constructed explicitly from assistant-cloud and passed as cloud | Constructed explicitly and passed as cloud |
| The chat route | Same origin, /api/chat by default | Another origin, named in the transport's api | Another origin, named in the transport's api |
| Anonymous identity | Kept in localStorage for 30 days and extended on every visit | No storage: an identity per launch | No storage: an identity per process |
| Components | @assistant-ui/react and the registry elements | @assistant-ui/react-native and its elements | @assistant-ui/react-ink |
On React Native and Ink, give users an identity of their own with an auth provider token before shipping, or every launch starts a fresh visitor with an empty thread list.
Choosing
Start from the AI SDK runtime when your backend answers an AI SDK stream, including Mastra agents and any server that returns toUIMessageStreamResponse. Use the local runtime for any other protocol you stream yourself. Keep LangGraph, LangChain and ADK on their own runtimes and add traces from the server to fill Runs and Models. A bot, a batch job or a support tool uses the client from a server; a backend in another language calls the REST API or exports traces alone.