← All AI Engineer talks

AI Engineer Europe 2026

Why Your AI UX Is Broken (and It's Not the Model's Fault)

Read the talk

Why AI Chat Needs a Session Beyond the Stream

A streamed response is easy to build around one connection. Durable sessions let that experience survive disconnects, follow users across devices, and support agents and humans working together.

From a talk by Mike Christensen

Before you start: Familiarity with HTTP requests, streaming responses, and basic client-server architecture will help; no Ably experience is required.

The default chat architecture

A user sends a message to an agent and watches its response appear as it is generated. The familiar implementation is direct HTTP streaming: the browser opens a persistent connection to the agent, the agent invokes an LLM, and the resulting events flow back to the browser. Christensen identifies server-sent events, or SSE, as the default used by Vercel’s AI SDK and TanStack AI. It is a straightforward way to get a working conversational interface.

HTTP Streaming sequence diagram with browser, agent server, and LLM columns, showing a request, prompt, event stream, and SSE response.
HTTP streaming connects the browser to the agent through a single point-to-point connection.

That simplicity comes with an architectural assumption: one client establishes one connection to one agent. As long as the user stays on that connection, the response has an obvious destination. Richer experiences require the conversation and its ongoing work to exist independently of that private connection.

Mike Christensen introduces himself as a staff engineer at Ably, a platform for real-time messaging. He reports monthly platform traffic involving more than two billion devices, more than thirty billion connections, and more than two trillion API operations. These are his reported platform-scale figures, not measurements of AI performance.

Christensen says that, over the preceding year, Ably spoke with engineering teams at more than forty companies across ten industries, shipping agents, copilots, and assistants to millions of users. Those conversations provide the practical context: teams are changing how users interact with their products while working out how to deliver those interactions reliably.

0:280:42
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

0:28 · section reference included

Three requirements that outlive a request

Three capabilities distinguish the experience Christensen wants from a fragile streaming demo:

  • Resilient delivery. Walking out of the house can move a phone from Wi-Fi to 5G and sever its connection. Refreshing a page or navigating away creates similar interruptions. On return, the client should pick up where it left off.
  • Continuity across surfaces. Opening another tab or switching to a phone should expose the same session, including activity still in progress.
  • Live control. Users should be able to communicate with an agent while it works. Claude Code provides the example: watch the work, send a follow-up, and steer the next action. That requires both visibility into the work and a path back to the agent.

A request-bound stream makes each requirement harder. Delivery depends on the original connection remaining healthy. A second tab cannot automatically observe the in-progress response because that response travels through a private pipe. Other devices also lack a shared route for reaching the working agent to steer or interrupt it.

A durable session moves the interaction into a persistent, stateful resource between clients and agents. The agent publishes its activity to the session; clients connect to that session to observe and participate. The lifetime of the work no longer has to match the lifetime of the client connection. This separation supplies the foundation for recovery, multiple simultaneous clients, and control during generation.

3:033:16
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

3:03 · section reference included

Resume from each client’s last event

Suppose the client disconnects halfway through a response while the LLM continues generating. Those new events cannot reach the disconnected browser. Supporting resumption requires more than opening another connection:

  1. Retain the events, for example in Redis, rather than discarding them when delivery fails.
  2. Assign sequence numbers so their order is known.
  3. Handle a resume request by identifying which events that client missed.
  4. Replay the missing events in order so the client can continue from its previous position.

The bookkeeping is per client. Two clients can disconnect at different points, so they need different replay ranges. When the agent explicitly manages delivery, it must also manage these recovery responsibilities for every reconnecting client.

The durable-session model changes who owns that work. The agent writes events to the session without checking whether a particular browser is connected. Each browser reconnects to the session and obtains its missing events there. Retention and replay still have to exist, but they become responsibilities of the shared delivery layer rather than additional agent logic.

6:066:21
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

6:06 · section reference included

A disconnect must not double as a Stop command

Now add a Stop button. SSE carries events from server to client; it does not itself provide an upstream channel for a cancellation message. If closing the response connection is the only cancellation signal in the design, the server receives an ambiguous event.

Meaning of the closed connectionRequired agent behavior
Temporary interruptionKeep generating and buffer events for resumption
User cancellationStop generation and avoid further token costs

The same connection closure cannot reliably express both intentions. A resumable experience needs to distinguish loss of connectivity from a deliberate instruction to stop.

Christensen illustrates this with the AI SDK’s abort/resume warning. The documented limitation concerns the SDK’s resumable-stream behavior and its abort handling; it is not a universal prohibition on combining SSE delivery with cancellation. An architecture can retain SSE downstream and provide a separate upstream control path.

Vercel AI SDK UI documentation excerpt with a highlighted warning about stream abort breaking stream resumption.
The cited AI SDK documentation warns that stream abort and resumption are incompatible.

WebSockets are the alternative Christensen proposes because they provide bidirectional communication over the connection. That makes explicit control messages possible while output continues to arrive. It opens the door to steering and interruption, but changing the transport alone does not create a shared session.

7:437:55
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

7:43 · section reference included

Reach the working agent from another device

Replace SSE with WebSockets and open the conversation in a second tab. The first tab still owns the connection that initiated the agent’s work. Unless something else distributes that activity, the second tab has no visibility into the response currently streaming to the first. Bidirectionality solves the direction of communication, not its scope.

The flight-booking example makes the distinction concrete. A user asks for a flight next Tuesday, then switches to a phone while the agent works. Tuesday no longer works; the user needs Wednesday. The phone must first see the ongoing work and then send the correction to the agent handling it. A private connection belonging to the original device supplies neither capability automatically.

With a durable session, all clients maintain connections to the same resource beyond individual agent invocations. They continuously observe session activity, and they can resume through that resource after interruptions. The agent also observes the session, giving the phone a route for the Wednesday correction. This establishes a communication path; it does not imply that a flight has already been booked or changed.

9:139:28
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

9:13 · section reference included

Separate orchestration from progress delivery

Multiple agents introduce another kind of concurrency. A user sends a request to an orchestrator, which delegates subtasks to specialized agents. To show detailed progress through the original response connection, the orchestrator must also collect and relay those agents’ intermediate updates.

That relay role is separate from deciding what work to delegate and collecting final results. In Christensen’s example, the orchestrator needs the sub-agents’ results, but it should not have to process every granular progress update merely so the user can see it.

With the session as the shared destination, each agent writes its own updates directly. The client subscribes to one session and sees activity from all participating agents, as well as other clients. Adding another specialist no longer requires routing its progress through a central agent just to reach the interface.

11:1111:21
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

11:11 · section reference included

Build the session on persistent pub/sub

This architecture resembles publish/subscribe messaging because publishers and subscribers communicate through a shared resource rather than directly with one another. Ably calls that resource a channel. Clients and agents can therefore be decoupled while still participating in the same interaction.

Christensen identifies three channel properties that support a durable session:

  • Independent addressing. A channel name identifies the session that clients and agents connect to.
  • Persistence. Messages outlive individual connections, devices, and agent instances.
  • Resumption. A reconnecting client can receive events from its previous position.

The recovery guarantee needs a boundary: the talk does not specify retention periods or recovery limits. Current Ably recovery documentation distinguishes short connection recovery from longer interruptions requiring history retrieval, and recovery after a page refresh has its own handling. Persistence should not be read as unlimited automatic replay.

Christensen then introduces Ably AI Transport, presented as a drop-in SDK that packages the durable-session pattern on top of channels. Its stated design accepts event streams across model providers and agent frameworks. That is an integration goal, not a claim that every framework needs no adapter: current documentation describes framework codecs, including custom codecs for unsupported frameworks. Those current APIs should not be assumed to be the exact SDK used in the recording.

The transport layer does more than forward individual chunks:

  • Response materialization. Streamed text chunks accumulate into a complete response.
  • Automatic resumption. Clients can recover delivery through the session.
  • Multiplexing. Concurrent activity shares the channel while remaining distinct.
  • Fan-out and control. Multiple clients and devices receive activity and can communicate back.

These capabilities package the delivery responsibilities that would otherwise spread through agent and client code.

The supporting UX extends beyond an open chat window. Push notifications can tell a user when background agent work finishes. Shared or subscribable data objects let users and agents collaborate on data in real time, giving the session useful forms of interaction beyond streamed text.

12:5413:09
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

12:54 · section reference included

An electronics support chat survives interruption

The demonstration starts with a familiar electronics-shop support chat. The agent makes a client-side tool call to obtain the user’s location, then a server-side tool call to return nearby stores. The conversation appears in multiple tabs, each displaying a shared view of the session.

While a response streams, the page is refreshed and the views remain synchronized. The demonstration then forces a network disconnection and reconnection, after which delivery continues. Christensen attributes that behavior to the client consuming and subscribing to the channel, without additional recovery logic in the agent. The selected frame shows two Acme Electronics Support windows with populated headphone reviews and browser network controls open; the recovery behavior is demonstrated over time, rather than established by the still alone.

Two Acme Electronics Support chat windows showing starred headphone reviews, alongside a browser developer tools network panel.
Two support-chat windows display product reviews side by side, with browser network controls open.
15:3415:40
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

15:34 · section reference included

Control concurrent work, then bring in a human

Next, the second tab starts a specialized product-research agent and displays its granular progress. The first tab cancels that work. Control belongs to participants in the session, rather than exclusively to the browser that initiated the task.

A subsequent product-research task illustrates direct publication: the specialist writes its own events without a centralized orchestrator relaying them. The customer then chooses to purchase headphones while also canceling an existing order. Two agents work simultaneously, and the session keeps their activity synchronized across the clients.

The final interaction begins when the customer is unhappy with the refund amount and asks to speak to a human. A support-agent view opens onto the same session, adding another participant with visibility into its activity. The human can read the customer’s full interaction history with the AI and send a follow-on message directly to the customer. The handoff preserves the conversation already underway instead of requiring the customer to reconstruct it for a new participant.

16:4916:59
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

16:49 · section reference included

Resources

From the talk

Updates since the talk

Read the complete timestamped transcript
  1. 0:00

    [upbeat music] Okay, um.

  2. 0:15

    Whoo. [clapping] I think time to start. Yeah. Come on. Uh, can we start with a quick show of hands? So who here has built some kind of AI chat app, right, some kind of AI chat experience?

  3. 0:28

    Okay, but 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 backend, the user sends a message to the agent, and the agent streams a response back live to the user as it's being generated, right?

  4. 0:42

    And this is fundamental building block of AI user experiences we see in every AI chat app today. And first, I wanna have a quick look at how this is implemented today, right?

  5. 0:52

    So the default pattern is to use direct HTTP streaming. So the most popular frameworks, Vercel's AI SDK, TanStack AI, use SSE by default, server-sent events. And so concretely, what this means is the client makes a request to the agent, and it establishes a persistent point-to-point connection with the agent, and the agent then invokes the LLM, and it

  6. 1:15

    obtains the stream of events, and it pipes those events back to the client over the connection as server-sent events, right? And this is great, right? It's really easy to get something working.

  7. 1:26

    But this paradigm is kind of fundamentally oriented on the idea of a single client establishing a single connection to a single agent. And today, I'm gonna make the case that that fundamentally limits the quality and the richness of the experiences that we can build in our AI products.

  8. 1:45

    So my name is Mike Christensen. I'm a staff engineer at Ably. Ably is a real-time messaging platform, and we build SDKs and APIs for any kind of live or interactive experience, and that includes AI experiences.

  9. 1:58

    And we operate our platform at real scale, so every month we handle traffic for more than two billion devices. We handle more than thirty billion monthly connections. We process more than two trillion API operations.

  10. 2:12

    And over the past year, we've been speaking to engineering teams at more than forty companies across ten industries, and these are companies that are shipping AI agents, AI copilots, AI assistants in their products to millions of users.

  11. 2:26

    And these companies are really pushing the boundaries of what AI products can feel like, right? Because when you add AI capabilities to your product, it fundamentally changes the user experience.

  12. 2:37

    So these companies are exploring these new interaction models, and they're working through the engineering challenges to deliver these experiences reliably in production. And so today I'm gonna share what we've learnt by talking to these companies.

  13. 2:50

    I'm gonna show you where the sort of direct HTTP streaming model starts to break down and why. And I'm gonna share with you the emerging patterns that we're seeing many engineering teams adopt to tackle these problems.

  14. 3:03

    So we found that companies shipping the best AI experiences really invest in three foundational capabilities, and we think that these capabilities really separate a fragile demo from a great AI product experience.

  15. 3:16

    So the first of these capabilities is resilient delivery. This is about building streams that survive disconnections, right? Think about mobile. You know, you walk out of the house, your phone drops off the Wi-Fi, connects to 5G.

  16. 3:28

    That severs the connection, right? Or maybe the user refreshes the page, or they navigate away from the app and they come back. And what you want is that when the connection drops, clients are able to reconnect and pick up exactly from where they left off.

  17. 3:42

    The second core capability is about providing continuity across surfaces, right? So users move between surfaces all the time. You know, you open the experience in a new tab, or you open it on your phone.

  18. 3:53

    And really, the conversation session should follow you around, right? That no matter which device you're using, the session should be fully in sync, including any live activity. And the third core capability is about live control, right?

  19. 4:06

    So the best AI products do better than a simple sequential request-response interaction pattern, right? They let you communicate with the agent while it's working. So think about how you use Claude Code, right?

  20. 4:18

    You know, you can see Claude's doing something. You might send a message, steer it. You send a follow-up, you ask it to do something else. And this requires visibility into what the agent is doing, and it allows clients-- it requires clients to be able to communicate with the agent while it's working.

  21. 4:34

    So why is this hard with a direct HTTP streaming approach? The root cause is because everything is coupled to a single request, right? So if you think about that live response stream that you've got from an agent, the health of that stream is essentially tied to the health of that end client's connection, right?

  22. 4:50

    So if that connection drops, the stream's gone.

  23. 4:54

    Another problem is with direct HTTP streaming, that connection is now a private pipe between the client and the agent. So if you open the experience on another tab or on your phone, you have no visibility of that in-progress response.

  24. 5:08

    And a third problem is because this stream, right, isn't a shared resource, other clients and other tabs, other devices can't communicate with the agent, can't reach the agent to interact with it, steer it, interrupt it.

  25. 5:21

    So a pattern we're seeing many companies adopt is to decouple the agent layer from the client layer. And many teams are doing this with a concept called durable sessions.

  26. 5:31

    And so what this is is a shared resource that sits between the agent layer and the client layer, and it's a persistent and stateful medium through which agents and clients can interact.

  27. 5:42

    And as we'll see, this makes it much easier to build, uh, resilient streaming experiences, streaming, uh, experiences that work across multiple tabs or devices, and it allows any client to interact with agents as they work.

  28. 5:55

    So let's have a quick look at some examples now of where the sort of direct HTTP streaming model breaks down, and we'll see how this durable sessions idea can help us.

  29. 6:06

    So let's look at how you might support resumable HTTP, uh, resumable streams with a direct HTTP streaming approach. So in this scenario, the client sends a request to the agent, and the agent starts streaming the response, and then the client's connection drops halfway through, right?

  30. 6:21

    And what we want is the client can reestablish the connection and can resume the stream from where it left off. So when the client's connection drops, the LLM is still working, right, it's still generating events, and these events have nowhere to go, right?

  31. 6:32

    So how do you build resumes? Well, you need to store these events. You, maybe you write them to an in-memory store like Redis. You need to store them with sequence numbers, so you know the order of these events.

  32. 6:42

    And then you need some kind of explicit resume handler on your backend so that when a client tries to reconnect and resume, the resume handler is able to work out the exact set of events that the client missed and replay those back to the client in the correct order.

  33. 6:57

    And so the problem here is that the stream is being explicitly managed by the agent. And so the agent has to do this for every reconnecting client because, you know, their connections drop at different times, and so each client has a different set of events that need to be replayed.

  34. 7:12

    So you need to build all of this complex plum- plumbing from scratch, you know, instead of focusing on building great agents. So how does durable sessions help? So by decoupling the agent from the client, uh, you allow the agent to write events directly to the session without thinking about the health of the end client's connection, right?

  35. 7:31

    And simultaneously, you let clients connect directly to the session and replay events or resume the stream from the session without the agent having to worry about implementing that logic.

  36. 7:43

    And there's an interesting problem here if you're using, um, SSE, server-sent events, um, in particular, because there's a conflict between supporting resumability and offering live control over agents to clients.

  37. 7:55

    And the reason for this is that SSE is one way, right? It's a strictly one-way pipe from the server to the client. So this comes up if you think about you wanna add a Stop button, right, into your, into your experience.

  38. 8:06

    And the agent's streaming a response, you hit stop, and it cancels that in-progress generation. And so the client has no upstream channel through which it can signal to the agent to cancel the generation, right?

  39. 8:17

    So the only thing it can do is close the connection, and that now creates ambiguity because what does the agent do, right? Does it allow the LLM to keep generating events and buffer these events, assuming the client's gonna try and reconnect and resume later?

  40. 8:31

    Or does it treat it as a cancellation, cancel the LLM, um, LLM, and stop burning through these expensive tokens?

  41. 8:40

    And so, you know, resume and cancel are mutually exclusive when you're using, uh, SSE in particular, and there's some evidence for this. So Vercel's AI SDK, for example, uses SSE by default, and their docs state that abort is incompatible with resume functionality, and it's for this reason.

  42. 8:58

    So what do we need? We need bidirectional control, right? So maybe we can replace SSE. We can use something like WebSockets, and that then opens up the possibility for much richer interactions where clients can interact with agents.

  43. 9:13

    Okay, so we've swapped out our SSE, uh, transport for WebSockets. But as we'll see, a bidirectional transport doesn't solve all of our problems automatically, and these problems arise when you try to interact, uh, from multiple devices.

  44. 9:28

    So in this scenario, uh, you send a message to the agent, the agent is streaming a response, and then you open that same session in another tab, right? And so the problem is, in this second tab, you have no visibility over that live response stream, right?

  45. 9:42

    Because the second tab isn't the one that sent the request that invoked the agent and established the connection. So the second tab doesn't see anything, right? While that response is being streamed, there's no visibility.

  46. 9:54

    And then this presents a problem when we think about steering or controlling or guiding the agent, um, from multiple tabs or devices. So you send an, uh, uh, a message to the agent.

  47. 10:04

    In this case, you ask it, uh, "Book me a flight for next Tuesday." Agent's working on this in the background. You swap to your phone, uh, and you have the same problem here.

  48. 10:13

    The phone doesn't have visibility of the ongoing work of the agent, but also the phone has no upstream channel to the agent in order to send your follow-up request, which is, "Tuesday doesn't work for me.

  49. 10:24

    I need, I need the flight on Wednesday." There's no way to reach the agent.

  50. 10:29

    So a durable sessions layer, again, makes this easier, um, for us to support these multi-client experiences with live control. And we can do this because all clients can hold a persistent connection to the durable session that is always active, right?

  51. 10:43

    So the connection's not just there when you invoke and initiate a request with an agent. You have constant visibility over the activity in the session through a continuously maintained connection.

  52. 10:53

    And clients can continue to resume, right, through the session. But because the session is also a shared resource, right, and the agent has full visibility of the activity in the session as well, it means that any client can route to and interact with the agent.

  53. 11:06

    So you can do this from any tab or any device.

  54. 11:11

    And so the final example I want to talk about is about concurrent activity, right? So this is about multi-agent architectures. We've got multiple agents that are participating in this session.

  55. 11:21

    And so the pattern we've got here is the, uh, uh, user is establishing, making a request to, uh, an orchestrator agent, and this orchestrator agent is then delegating subtasks to these specialized agents, right?

  56. 11:35

    And what we'd like to provide is full visibility of all the granular progress that these sub-agents are, are working on. Um, now, the problem here is the orchestrator is handling the user's request, right?

  57. 11:48

    So we're kind of forcing the orchestrator to do two things. There's a dual purpose role of both orchestrating the task and delegating tasks, and also proxying back these sort of granular updates from these sub-agents, right?

  58. 12:02

    So this is adding a lot of complexity to your architecture when really the orchestrator, uh, only cares about the final results from these sub-agents. Shouldn't need to worry about relaying granular progress.

  59. 12:14

    So again, a durable sessions model makes this easier. Um, so in this model, all agents can write independently to the durable session layer, right? So now we don't have to flow all these granular updates through some centralized agent to pro- provide full visibility of all the activity in the session.

  60. 12:33

    And clients only need to subscribe to a single entity as well, right? Um, they only subscribe to the session, and they have full visibility of activity from all these agents, however many there are working on the task, but also activity from other clients.

  61. 12:49

    And this, uh, pattern can drastically simplify your architecture.

  62. 12:54

    So what we've described here sounds an awful like Pub/Sub, right? Um, and we can build durable sessions on top of, uh, Pub/Sub. So, um, at Ably, we have this concept called channels, and Ably channels let you communicate.

  63. 13:09

    Um, so publishers of messages and subscribers of messages can communicate with each other, but not directly. They do this through a shared resource, which we call a channel. Um, and this inherently decouples, uh, publishers and subscribers, so it decouples clients and agents.

  64. 13:26

    And Ably channels have the kind of key properties that we would need to build a durable session layer. So they are independently addressable, so this means that any client or any agent can connect to this session just by specifying the right channel name.

  65. 13:41

    They are persistent, which means the messages on the channel outlive the life cycle of any individual connection, any individual device, um, any individual agent. And they're fully resumable, right?

  66. 13:53

    So if you're a client that drops a connection, you can automatically reconnect to the channel, and all the events are, um, delivered exactly from where you left off.

  67. 14:02

    So this is how, um, we've found many of our customers have built these kind of resilient multi, uh, surface experiences.

  68. 14:10

    Um, to make building durable sessions even easier, we've, um, been working on, uh, something we call Ably AI Transport. So this is a, a drop-in layer for building this durable session pattern.

  69. 14:22

    Um, and it's a new SDK which automatically plugs into any event stream format, so whatever model provider or agent framework you're using. Um, and under the hood, it's using Ably channels to provide this sort of durable session layer, but with all the complexity of building a durable session, uh, handled for you out of the box.

  70. 14:40

    So, um, the channel does some cool things as well, right? So it, like, materializes events in the channel, so you can stream in text chunks that are being generated from the LLM, and the channel automatically materializes that into the complete response.

  71. 14:54

    They, uh, provide automatic resumability. They handle multiplexing, so you can have concurrent activity over the channel, and it's all fully multiplexed and handled, and it supports multi-client and multi-device fan-out with full bi-directional control.

  72. 15:09

    Uh, it also includes a suite of additional tools for building great AI user experiences. So some of these are really important, right? Things like push notifications. If you've got an agent doing some background asynchronous work, you want to be notified when it's completed.

  73. 15:22

    There's also things like APIs for shared or subscribable data objects. So if you've got agents and users kind of collaborating over some shared data in real time, this is possible.

  74. 15:34

    So to try and make some of this a little bit more concrete, um, I have a quick demo, um, to show you kind of what this looks like in practice.

  75. 15:40

    So this is a, a classic kind of AI chat interface for a AI support chat for, uh, like, an electronics shop, right? Um, so let's see if we can get the video.

  76. 15:59

    Cool. So, you know, the usual kind of features exist in this kind of conversational interface. So here, you know, the agent's making a client-side call, tool call to get the user's location.

  77. 16:09

    It's making a server-side tool call to show the user a list of stores in its location. And we can see that this works across multiple tabs, um, out of the box.

  78. 16:18

    This is because it's powered by this durable session layer underneath, and it gives all clients a shared view of the session. Now, here we've got a streamed response, and we can refresh the page, and you can see it's all remains absolutely automatically in sync.

  79. 16:30

    There is no additional le- agent logic to make this work, right? This just works from the client, um, consuming and subscribing from the channel. We can even kill the, uh, the network here, so we're forcing the client to disconnect and reconnect, and everything just carries on automatically, um, without any additional complexity.

  80. 16:49

    We can also sort of interact for multiple tabs. So here in the second tab, we've kicked off a, a specialized sub-agent that's gonna do some product research, and we've got some granular visibility.

  81. 16:59

    We're gonna cancel that from the first tab, so you can, from whichever client or device, you can cancel that, um, that work. Um, here we've kicked off a, a product research task from one tab.

  82. 17:12

    Um, this specialized agent is writing these events directly. There's no centralized orchestrator that's managing this. Um, here the user decided, okay, they're gonna purchase a pair of headphones, but at the same time they're going to cancel their existing order.

  83. 17:25

    So now you've got concurrent activity in the session, two agents working in the session simultaneously. It's fully synchronized without all this, uh, uh, additional coordination.

  84. 17:38

    And now this is quite cool, right? So the, the user here isn't happy with the re- the return pri- uh, the refund price, so they want to speak to a human.

  85. 17:45

    So we can now add another participant into this session and transfer them over to a human agent. So we're gonna open up a, a support agent view over here, and we can see that this, uh, human support agent can, has full visibility of all of the activity in that session.

  86. 17:59

    So they can see the full interaction history that the customer had with the AI agent, and they can then send a message to follow on as a human participant in that session to now communicate directly with that customer.

  87. 18:17

    That's everything for today. Thank you very much. Please check out- [applause] [upbeat music]