Mike Christensen, staff engineer at Ably, argues that the fundamental fragility in most AI chat applications is not the model — it is the underlying transport architecture. The standard pattern of using direct HTTP streaming via Server-Sent Events (SSE), as implemented by default in Vercel AI SDK and LangChain, ties a live response stream to a single point-to-point connection between one client and one agent instance. This architectural choice creates three interconnected failure modes that systematically degrade user experience in production.
First, resilient delivery breaks down because the response stream's health is coupled to the health of the end client's network connection. When a mobile user walks out of Wi-Fi range or a page refresh severs the connection, the in-progress LLM generation is lost. Building resumability from scratch requires writing events to a store like Redis with sequence numbers, implementing an explicit resume handler on the backend to compute per-client event deltas, and replaying missed events in correct order — all complexity that should not live in agent code.
Second, SSE's one-way nature creates a fundamental conflict between resumability and live control (abort/steer). The only upstream signal a client can send over a one-way pipe is closing the connection, making cancellation and reconnect-to-resume indistinguishable. Christensen cites Vercel AI SDK documentation explicitly stating that abort is incompatible with resume functionality for this reason. Replacing SSE with WebSockets provides bidirectional transport, but bidirectionality alone does not solve the multi-surface problem.
Third, multi-tab and multi-device continuity is impossible under the request-scoped model. A second tab opened during an active agent response has no visibility into that stream, because only the originating connection sees the events. Steering an agent from a different device (e.g., amending a flight booking from a phone mid-task) has no upstream channel to the agent.
Christensen's proposed solution is the durable session pattern: a persistent, stateful shared resource that decouples the agent layer from the client layer. In this model, clients subscribe to the session rather than to a specific request or agent instance. Ably implements this via its channels primitive — independently addressable, message-persistent beyond any individual connection lifecycle, and fully resumable on reconnect with gap-fill delivery. The company surveyed engineering teams at over 40 companies across 10 industries shipping AI agents, co-pilots, and assistants at scale (Ably itself handles more than 2 billion devices and 30 billion monthly connections per month, processing over 2 trillion API operations monthly).
To make durable sessions accessible, Ably released the Ably AI Transport SDK — a drop-in layer that plugs into any event-stream format regardless of model provider or agent framework. It handles: text-chunk materialization into complete responses, automatic resumability, multiplexing of concurrent agent activity, and multi-client fanout with bidirectional control. Additional capabilities include push notifications for async background agent completion and shared subscribable data objects for real-time human-agent collaboration.
A live demo illustrated all four capabilities simultaneously: multi-tab synchronization showing a streamed response visible across tabs without extra agent logic; forced network disconnect self-recovering without agent-side code; two specialized sub-agents writing concurrently to the session without a routing orchestrator; and an escalation to a human support agent who joins the session mid-conversation with the full interaction history already visible. The demo used an electronics retailer support chat scenario where concurrent order placement and order cancellation tasks ran in parallel, handled by independent specialized agents both writing directly to the durable session channel.
[music] >> Okay. Um I think it's time to start. >> [applause and cheering] >> Uh can we start with a quick show of hands? So, who here's built some kind of AI chat app, right? Some kind of AI chat experience? Okay, well, that was quick, right? Almost everybody in this room, right? So, this is the case where you've got some kind of chat app, you've got an agent on the back end. The user sends a message to the agent, and the agent streams a response back live to the user as it's being generated, r...
Mario Zechner, creator of the LibGDX game framework, delivers a provocative three-act talk about building a minimal codi...