Introducing AI Transport v0.3.0 Ably released AI Transport v0.3.0, adding first-class support for presence and LiveObjects to AI sessions, enabling real-time visibility of online participants and synchronized shared state. The update also introduces a declarative codec interface, moving event ordering and de-duplication into the transport layer. Last week we introduced AI Transport v0.2.0 https://ably.com/blog/introducing-ai-transport-v0-2-0 and made one idea the centre of the design: the session is the channel . Every input, output, and lifecycle event for an AI conversation is just a message published to an Ably channel, which is what makes a session durable, multi-party, and resumable. In v0.3.0, we added first-class support for presence https://ably.com/docs/ai-transport/features/agent-presence and LiveObjects https://ably.com/docs/ai-transport/features/liveobjects to AI sessions, allowing you and your agent to see who's online and update shared state in real time. We made the codec interface declarative, moved event ordering and de-duplication into the transport. Now you can write a codec as a simple description of the wire format, and the transport will handle reordering, de-duplication, and replay for you. See who's online with presence The presence object is just the same presence API https://ably.com/docs/presence-occupancy/presence you know from Ably Pub/Sub. The client and agent session objects now expose it as session.presence , so you can enter, leave, and subscribe to presence events on the session's channel: js const session = createClientSession { client: ably, channelName } ; await session.presence.enter { role: 'user' } ; session.presence.subscribe member = { console.log member.clientId, member.action ; // 'enter' | 'leave' | ... } ; Agents and users enter the same set, distinguished by clientId , so "is the agent online?" and "who else is watching this conversation?" are all answered by the same API. You can also use presence data to update per-participant state which other clients can see in realtime, like a "typing..." indicator or a cursor position in a shared document. Our ably-js presence React hooks work out-of-the-box in a SessionProvider. The session providers now mount an ably-js