<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-liu-moq-live-agent-interaction-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="Live Agent over MoQ">Live Agent Interaction over MoQ</title>
    <seriesInfo name="Internet-Draft" value="draft-liu-moq-live-agent-interaction-01"/>
    <author initials="Y." surname="Liu" fullname="刘彦梅" asciiFullname="Yanmei Liu">
      <organization>Alibaba Inc.</organization>
      <address>
        <email>miaoji.lym@alibaba-inc.com</email>
      </address>
    </author>
    <author initials="D." surname="Liu" fullname="Dapeng Liu">
      <organization>Alibaba Cloud</organization>
      <address>
        <email>max.ldp@alibaba-inc.com</email>
      </address>
    </author>
    <date/>
    <area>Web and Internet Transport</area>
    <workgroup>Media Over QUIC</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 41?>

<t>This document defines a protocol for real-time interactive communication
between users and AI agents over Media over QUIC Transport (MOQT).
It specifies how streaming inference outputs (ASR transcripts, LLM tokens,
TTS audio) map to the MOQT object model, defines a turn-taking control
protocol with barge-in support for voice interactions, and establishes
track structure conventions for live agent sessions. The protocol operates
as an application-layer profile on top of MOQT without modifying transport
semantics.</t>
    </abstract>
  </front>
  <middle>
    <?line 52?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Large Language Models (LLMs) and multimodal AI systems have enabled a new
class of interactive applications where users communicate with AI agents
in real-time through voice and text. These "live agent" interactions
share characteristics with both traditional media streaming and
conversational protocols, but fit neatly into neither category.</t>
      <section anchor="use-cases">
        <name>Motivation and Use Cases</name>
        <t>The following application scenarios motivate the design of a dedicated
protocol profile for live agent interaction over MOQT:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Voice AI Assistants</strong>: A user speaks naturally to an AI agent and
receives spoken responses in real-time. The agent performs streaming
ASR on user audio, generates a response via LLM, and synthesizes
speech (TTS) delivered with sub-second latency. The user may
interrupt the agent mid-response (barge-in), requiring immediate
cessation of agent output. This demands continuous bidirectional
audio streaming, low time-to-first-audio latency, graceful
interruption handling, and the ability to deliver partial text
results ahead of audio for perceived responsiveness.</t>
          </li>
          <li>
            <t><strong>Real-Time Customer Service Agents</strong>: In live commerce or customer
support deployments, an AI agent handles simultaneous voice or text
interactions with customers, accessing external tools (inventory
lookup, order status, payment processing) and relaying structured
results alongside natural language responses. This demands reliable
delivery of tool results alongside best-effort audio delivery,
relay-based fan-out for scaling to thousands of concurrent sessions,
and per-session isolation with independent priority and timeout
policies.</t>
          </li>
          <li>
            <t><strong>Multimodal Scene-Aware Agents</strong>: A user points their device camera
at a real-world scene (e.g., a landmark, exhibit, or street sign)
while speaking to an AI agent that acts as a digital tour guide. The
agent subscribes to the user's audio and video input tracks,
performs visual understanding and speech recognition jointly, and
publishes spoken narration, text annotations, and contextual
information about the scene. This demands concurrent processing of
multiple input modalities (audio + video), low-latency multimodal
fusion at the agent backend, multiple independent output tracks with
heterogeneous delivery requirements (reliable text vs. best-effort
audio), and partial reliability where stale video frames or audio
segments may be dropped without retransmission.</t>
          </li>
        </ul>
        <section anchor="why-existing-approaches-are-insufficient">
          <name>Why Existing Approaches Are Insufficient</name>
          <t>Live agent interactions impose strict latency budgets: users expect
sub-second time-to-first-token and time-to-first-audio for the
interaction to feel comparable to natural conversational turn-taking. HTTP-based streaming approaches
(SSE, WebSocket) operate over TCP, where head-of-line blocking,
connection-level flow control, and lack of stream multiplexing make it
difficult to meet these latency targets — particularly when multiple
output modalities (text, audio, tool results) must be delivered
concurrently with independent priority and reliability requirements.
Furthermore, these approaches cannot express per-object delivery
timeouts or relay-assisted fan-out at the transport level, forcing
application-layer workarounds that add complexity and latency.
Purpose-built AI inference APIs operate in request-response or
unidirectional streaming modes without support for concurrent input
processing, turn management, or barge-in.</t>
          <t>Media over QUIC Transport addresses these limitations at the transport
layer: QUIC's stream multiplexing eliminates head-of-line blocking
between modalities, MOQT's priority system ensures latency-critical
signals (barge-in, user audio) are scheduled first, and delivery
timeouts allow stale data to be discarded without blocking fresh output.
The relay infrastructure provides scalability without per-connection
state at the agent backend. However, MOQT lacks application-layer
conventions for mapping AI inference semantics onto these primitives.
This document fills that gap.</t>
        </section>
      </section>
      <section anchor="properties">
        <name>Distinguishing Properties</name>
        <t>A live agent interaction has the following distinguishing properties:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Asymmetric streaming</strong>: User input is continuous (audio stream),
while agent output is incremental and multi-modal (text tokens,
synthesized audio, tool results).</t>
          </li>
          <li>
            <t><strong>Turn-based with interruption</strong>: Unlike media broadcast, the
interaction follows a dialogue structure where either party can
take or yield the floor.</t>
          </li>
          <li>
            <t><strong>Latency-critical incremental delivery</strong>: Users perceive agent
responsiveness through time-to-first-token and time-to-first-audio,
requiring sub-second delivery of partial results.</t>
          </li>
          <li>
            <t><strong>Heterogeneous reliability requirements</strong>: Within a single turn,
interim ASR transcripts are ephemeral, final transcripts are
authoritative, TTS audio is time-bounded, and tool results must be
delivered reliably.</t>
          </li>
        </ul>
        <t>Media over QUIC Transport <xref target="MOQT"/> provides a publish/subscribe protocol
with features well-suited to these requirements: prioritized delivery,
partial reliability through delivery timeouts, group-based object
organization, and relay infrastructure for scalability. However, MOQT
defines no application-layer semantics for mapping inference streams
to its object model, nor for managing conversational turn-taking.</t>
        <t>This document specifies:</t>
        <ul spacing="normal">
          <li>
            <t>A mapping of streaming inference outputs to the MOQT object data
model (<xref target="inference-delivery"/>).</t>
          </li>
          <li>
            <t>A turn control protocol for managing dialogue state and handling
barge-in interruptions (<xref target="turn-control"/>).</t>
          </li>
          <li>
            <t>Track structure conventions and naming for live agent sessions
(<xref target="track-structure"/>).</t>
          </li>
          <li>
            <t>Delivery policies appropriate for each stream type
(<xref target="delivery-policies"/>).</t>
          </li>
        </ul>
      </section>
      <section anchor="architecture">
        <name>Architecture Overview</name>
        <section anchor="protocol-scope-and-layering">
          <name>Protocol Scope and Layering</name>
          <t>This document defines an application-layer profile that operates on top
of MOQT <xref target="MOQT"/> without modifying its transport semantics. The
relationship to the MoQ protocol suite is illustrated below:</t>
          <figure anchor="fig-layering">
            <name>Protocol Layering</name>
            <artwork><![CDATA[
+-------------------------------------------------------------------+
|              Application Layer (Live Agent Interaction)            |
|                                                                   |
|  Maps conversational structure (turns, steps, frames) onto the    |
|  MOQT object hierarchy; adds turn-taking control via signals.     |
+-------------------------------------------------------------------+
         |                    |                      |
         v                    v                      v
+------------------+  +-----------------+  +-------------------+
| MoQ Transport    |  | LOC Container   |  | MoQ Secure        |
| (MOQT)           |  | (Audio/Video)   |  | Objects (E2E)     |
| - Object Model   |  | - Codec framing |  | - Encryption      |
| - Pub/Sub        |  | - Timing        |  | - Authentication  |
| - Relay          |  |                 |  |                   |
| - Priority       |  |                 |  |                   |
| - Delivery       |  |                 |  |                   |
+------------------+  +-----------------+  +-------------------+
         |
         v
+-------------------------------------------------------------------+
|                QUIC / WebTransport                                 |
|  - Stream multiplexing    - Datagram extension                    |
|  - TLS 1.3 encryption    - Congestion control                    |
|  - 0-RTT resumption      - Flow control                          |
+-------------------------------------------------------------------+
]]></artwork>
          </figure>
          <t>The following table summarizes how live agent domain concepts map to
MOQT primitives:</t>
          <table anchor="tab-concept-mapping">
            <name>Domain Concept to MOQT Mapping</name>
            <thead>
              <tr>
                <th align="left">Domain Concept</th>
                <th align="left">MOQT Primitive</th>
                <th align="left">Semantics</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">Conversation Turn</td>
                <td align="left">Group</td>
                <td align="left">Atomic dialogue unit; GROUP_ORDER descending prioritizes latest turn</td>
              </tr>
              <tr>
                <td align="left">Inference Step</td>
                <td align="left">Subgroup</td>
                <td align="left">A sentence, audio segment, or tool call within a turn</td>
              </tr>
              <tr>
                <td align="left">Token Batch / Audio Frame</td>
                <td align="left">Object</td>
                <td align="left">Minimum delivery unit; subject to OBJECT_DELIVERY_TIMEOUT</td>
              </tr>
              <tr>
                <td align="left">Stream Modality</td>
                <td align="left">Track</td>
                <td align="left">Independent subscribe, priority, and reliability per modality</td>
              </tr>
              <tr>
                <td align="left">Barge-in Signal</td>
                <td align="left">Datagram</td>
                <td align="left">Highest priority (0x00); bypasses head-of-line blocking</td>
              </tr>
              <tr>
                <td align="left">Turn Control</td>
                <td align="left">Control Track</td>
                <td align="left">Reliable delivery of state-machine transitions</td>
              </tr>
            </tbody>
          </table>
          <t>This document:</t>
          <ul spacing="normal">
            <li>
              <t>USES the MOQT object model (Track, Group, Subgroup, Object) to
represent conversational structure.</t>
            </li>
            <li>
              <t>USES LOC <xref target="LOC"/> as the container format for audio payloads.</t>
            </li>
            <li>
              <t>USES MOQT native mechanisms (SUBSCRIBE, priority, delivery timeouts,
GROUP_ORDER) for QoS enforcement.</t>
            </li>
            <li>
              <t><bcp14>MAY</bcp14> USE Secure Objects <xref target="SECURE-OBJECTS"/> for end-to-end encryption
of agent output through untrusted relays.</t>
            </li>
            <li>
              <t>DOES NOT define new transport-layer framing or modify MOQT wire
format.</t>
            </li>
          </ul>
        </section>
        <section anchor="design-principles">
          <name>Design Principles</name>
          <t>The protocol is guided by the following architectural principles:</t>
          <dl>
            <dt>Native MOQT Integration:</dt>
            <dd>
              <t>Map application semantics directly to the MOQT object hierarchy
rather than introducing intermediate framing layers. This ensures
MOQT relays can perform correct scheduling, timeout-based discard,
and caching without understanding application-layer payload formats.</t>
            </dd>
            <dt>Relay Transparency:</dt>
            <dd>
              <t>All protocol operations <bcp14>MUST</bcp14> work through unmodified MOQT relays.
The relay sees standard Tracks, Groups, Subgroups, and Objects with
associated priorities and timeouts. No relay-side payload inspection
is required.</t>
            </dd>
            <dt>Asymmetric by Design:</dt>
            <dd>
              <t>The protocol explicitly models the user-to-agent asymmetry: user
input is continuous and latency-critical for the agent; agent output
is incremental, multi-modal, and interruptible. This asymmetry is
reflected in priority assignment, timeout configuration, and track
structure.</t>
            </dd>
            <dt>Latency Budget Awareness:</dt>
            <dd>
              <t>Every protocol mechanism is evaluated against its contribution to
end-to-end latency. Zero additional round-trips for session setup
(reuse MOQT session). Datagram delivery for time-critical signals.
Batching strategies that bound flush latency.</t>
            </dd>
            <dt>Partial Reliability as a Feature:</dt>
            <dd>
              <t>Not all data within a turn has equal value. The protocol assigns
per-track and per-subgroup delivery timeouts that allow the transport
to discard stale data (old audio frames, obsolete interim transcript
hypotheses) while guaranteeing delivery of authoritative results (final
text, tool outputs).</t>
            </dd>
            <dt>Modality Agnostic:</dt>
            <dd>
              <t>The protocol does not mandate specific codecs, model architectures,
or inference pipelines. It defines structural conventions
(Group=Turn, Subgroup=inference step) that apply regardless of
whether the agent produces text, audio, video, or structured data.</t>
            </dd>
          </dl>
        </section>
        <section anchor="protocol-components">
          <name>Protocol Components</name>
          <t>This document comprises four logical components:</t>
          <ol spacing="normal" type="1"><li>
              <t><strong>Inference Stream Delivery</strong> (<xref target="inference-delivery"/>): Defines how
streaming outputs from ASR, LLM, and TTS pipelines map to the MOQT
object data model. Covers text token batching, audio segmentation,
tool result framing, and cross-track synchronization.</t>
            </li>
            <li>
              <t><strong>Turn Control Protocol</strong> (<xref target="turn-control"/>): Defines the
conversational state machine, control signal format, barge-in
handling, VAD integration, and priority assignment for managing
dialogue flow.</t>
            </li>
            <li>
              <t><strong>Track Structure and Naming</strong> (<xref target="track-structure"/>): Defines
namespace conventions, standard track names, and catalog integration
for live agent sessions.</t>
            </li>
            <li>
              <t><strong>Delivery Policies</strong> (<xref target="delivery-policies"/>): Specifies per-track
timeout configurations, transport selection guidelines (Datagram vs
Stream), and relay caching behavior.</t>
            </li>
          </ol>
        </section>
      </section>
      <section anchor="conventions">
        <name>Conventions and Definitions</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

<t>The following terms are used in this document:</t>
        <dl>
          <dt>Live Agent Session:</dt>
          <dd>
            <t>A stateful interaction between a user endpoint and an AI agent
backend, conducted over one or more MOQT sessions.</t>
          </dd>
          <dt>Turn:</dt>
          <dd>
            <t>A contiguous period during which one party (user or agent) holds
the conversational floor. Mapped to a MOQT Group.</t>
          </dd>
          <dt>Inference Stream:</dt>
          <dd>
            <t>A sequence of incremental outputs from an AI model (e.g., LLM
tokens, ASR transcripts, TTS audio chunks).</t>
          </dd>
          <dt>Barge-in:</dt>
          <dd>
            <t>An event where the user begins speaking while the agent is still
producing output, causing the agent to yield the floor.</t>
          </dd>
          <dt>Partial Result:</dt>
          <dd>
            <t>An intermediate inference output for which the final result has not
yet been signaled. A Partial Result can be an append-only delta, a
snapshot, or a revision only when the corresponding track semantics
explicitly define that behavior.</t>
          </dd>
          <dt>Final Result:</dt>
          <dd>
            <t>A definitive inference output that will not be further modified.</t>
          </dd>
        </dl>
      </section>
      <section anchor="deployment-topologies">
        <name>Deployment Examples</name>
        <t>This protocol is compatible with multiple deployment topologies. Two
examples are illustrated below.</t>
        <section anchor="example-1-with-moq-relay">
          <name>Example 1: With MoQ Relay</name>
          <figure anchor="fig-relay-topology">
            <name>Deployment with MoQ Relay</name>
            <artwork><![CDATA[
User Device             MoQ Relay              Agent Backend
(App/Browser)          (Cache/Fan-out)        (Omni-LLM)
     |                      |                       |
     |===== QUIC/WebTransport session =============>|
     |                      |                       |
     |--- Audio Track ----->|-------- fwd --------->|
     |--- Video Track ----->|-------- fwd --------->|
     |                      |                       |
     |<-- Audio Track ------|<------ publish -------|
     |<-- Text Track -------|<------ publish -------|
     |<-- Tool Results -----|<------ publish -------|
     |                      |                       |
     |--- Control Signals ->|-------- fwd --------->|
     |<-- Control Signals --|<------ publish -------|
]]></artwork>
          </figure>
          <t>The relay forwards user input to the agent and fans out agent output
to subscribers. This topology is suited for scenarios requiring:</t>
          <ul spacing="normal">
            <li>
              <t>Multiple subscribers to a single agent session (monitoring,
recording, accessibility overlays).</t>
            </li>
            <li>
              <t>Geographic distribution where relays are placed close to users.</t>
            </li>
            <li>
              <t>Caching of agent output for late-joining clients.</t>
            </li>
          </ul>
        </section>
        <section anchor="example-2-without-relay">
          <name>Example 2: Without Relay</name>
          <figure anchor="fig-direct-topology">
            <name>Deployment without Relay</name>
            <artwork><![CDATA[
User Device                                    Agent Backend
(App/Browser)                                  (Omni-LLM)
     |                                              |
     |===== QUIC/WebTransport session =============>|
     |                                              |
     |--- Audio Track ----------------------------->|
     |--- Video Track ----------------------------->|
     |                                              |
     |<-- Audio Track ------------------------------|
     |<-- Text Track -------------------------------|
     |<-- Tool Results -----------------------------|
     |                                              |
     |--- Control Signals ------------------------->|
     |<-- Control Signals --------------------------|
]]></artwork>
          </figure>
          <t>The client connects directly to the agent backend. This topology is
suited for scenarios requiring:</t>
          <ul spacing="normal">
            <li>
              <t>Minimal latency (no intermediate hop).</t>
            </li>
            <li>
              <t>Simpler deployment without relay infrastructure.</t>
            </li>
            <li>
              <t>Single-subscriber sessions (1:1 user-to-agent interactions).</t>
            </li>
          </ul>
        </section>
        <section anchor="protocol-compatibility">
          <name>Protocol Compatibility</name>
          <t>This specification operates correctly under both topologies. The
application-layer semantics (track structure, turn control, object
model mapping) are identical regardless of whether a MoQ relay is
present:</t>
          <ul spacing="normal">
            <li>
              <t>With relay: the relay handles subscription management,
priority-based scheduling, and delivery timeout enforcement
transparently.</t>
            </li>
            <li>
              <t>Without relay: the agent backend itself implements MOQT session
handling. Priority and timeout semantics still apply to the QUIC
streams between client and agent.</t>
            </li>
          </ul>
          <t>Deployments <bcp14>MAY</bcp14> combine both topologies, for example using direct
connections for latency-sensitive single-user sessions while routing
multi-subscriber sessions through relays.</t>
        </section>
      </section>
    </section>
    <section anchor="inference-delivery">
      <name>Object Model Mapping for Inference Streams</name>
      <t>This section defines how streaming inference outputs map to the MOQT
object data model defined in <xref section="2" sectionFormat="of" target="MOQT"/>.</t>
      <section anchor="mapping-principles">
        <name>Mapping Principles</name>
        <t>The MOQT object hierarchy consists of Track &gt; Group &gt; Subgroup &gt; Object.
This document assigns conversational semantics to each level:</t>
        <table anchor="tab-mapping">
          <name>Object Model Semantic Mapping</name>
          <thead>
            <tr>
              <th align="left">MOQT Level</th>
              <th align="left">Live Agent Semantic</th>
              <th align="left">Rationale</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Track</td>
              <td align="left">Stream type (audio, text, control)</td>
              <td align="left">Independent subscription unit</td>
            </tr>
            <tr>
              <td align="left">Group</td>
              <td align="left">Conversation turn</td>
              <td align="left">Atomic unit of dialogue; enables turn-level operations</td>
            </tr>
            <tr>
              <td align="left">Subgroup</td>
              <td align="left">Inference step within a turn</td>
              <td align="left">Logical segment: a sentence, an audio segment, a tool call</td>
            </tr>
            <tr>
              <td align="left">Object</td>
              <td align="left">Atomic delivery unit</td>
              <td align="left">Smallest independently decodable/renderable item</td>
            </tr>
          </tbody>
        </table>
        <t>Unless a track definition explicitly states otherwise, all media, text,
tool, and control Objects that belong to the same application turn <bcp14>MUST</bcp14>
use the same <tt>turn_id</tt>. The value of <tt>turn_id</tt> is the MOQT Group ID on
tracks that publish Objects for that turn. Subgroup identifiers are
scoped to a track; matching Subgroup identifiers across tracks indicate
the same logical segment only where this document defines such alignment.</t>
        <t>This mapping enables:</t>
        <ul spacing="normal">
          <li>
            <t>Subscribing to a specific turn onwards (Group-based filtering).</t>
          </li>
          <li>
            <t>Dropping an entire stale turn when interrupted (Group-level discard).</t>
          </li>
          <li>
            <t>Prioritizing recent turns over old ones (GROUP_ORDER = descending).</t>
          </li>
          <li>
            <t>Independent reliability per inference step (Subgroup-level timeouts).</t>
          </li>
        </ul>
      </section>
      <section anchor="text-output">
        <name>Agent Text Output Track</name>
        <t>The agent text output track carries streaming LLM token output. This
track uses append-only delta semantics: each Object contributes new text
that follows the text carried by earlier Objects in the same Subgroup.</t>
        <section anchor="object-structure">
          <name>Object Structure</name>
          <t>Each Object in the text output track carries a <strong>token batch</strong>: one or
more sequential tokens generated within a single flush interval.</t>
          <figure anchor="fig-text-object">
            <name>Text Output Object Format</name>
            <artwork><![CDATA[
Text Output Object Payload:
+--------+--------+-------------------------------------------+
| Field  | Type   | Description                               |
+--------+--------+-------------------------------------------+
| flags  | uint8  | 0x01=partial, 0x02=final, 0x04=cancelled  |
| seq    | varint | Sequence number within subgroup           |
| count  | varint | Number of tokens in this delta            |
| tokens | UTF-8  | Concatenated token delta text             |
+--------+--------+-------------------------------------------+
]]></artwork>
          </figure>
        </section>
        <section anchor="text-batching">
          <name>Batching Strategy</name>
          <t>Implementations <bcp14>SHOULD</bcp14> batch tokens to amortize per-object overhead.
The following strategies are <bcp14>RECOMMENDED</bcp14>:</t>
          <ul spacing="normal">
            <li>
              <t><strong>Time-based</strong>: Flush every 50ms, collecting all tokens generated in
that interval into a single Object.</t>
            </li>
            <li>
              <t><strong>Size-based</strong>: Flush when accumulated token text reaches 128 bytes.</t>
            </li>
            <li>
              <t><strong>Semantic-based</strong>: Flush at sentence boundaries or punctuation marks.</t>
            </li>
          </ul>
          <t>An implementation <bcp14>MUST</bcp14> flush immediately when:</t>
          <ul spacing="normal">
            <li>
              <t>The inference step completes (flags = 0x02, final).</t>
            </li>
            <li>
              <t>A barge-in interrupt is received (flags = 0x04, cancelled).</t>
            </li>
            <li>
              <t>The subgroup ends (last object in subgroup).</t>
            </li>
          </ul>
        </section>
        <section anchor="partial-final">
          <name>Partial and Final Semantics</name>
          <t>Within a Subgroup (inference step), Objects are delivered incrementally:</t>
          <ul spacing="normal">
            <li>
              <t>Objects with flags=0x01 (partial) carry append-only token deltas. A
subscriber <bcp14>MAY</bcp14> append them to the displayed text immediately for
real-time display. Earlier delta Objects in this text track are not
superseded by later delta Objects.</t>
            </li>
            <li>
              <t>An Object with flags=0x02 (final) indicates the inference step is
complete. The subscriber <bcp14>SHOULD</bcp14> treat the concatenation, in <tt>seq</tt>
order, of all non-cancelled delta Objects in the Subgroup as the
definitive output for that Subgroup.</t>
            </li>
            <li>
              <t>An Object with flags=0x04 (cancelled) indicates the inference step
was interrupted (e.g., by barge-in). The subscriber <bcp14>SHOULD</bcp14> discard
or visually mark the incomplete output.</t>
            </li>
          </ul>
          <t>Tracks or future extensions that need ASR interim transcript snapshots
or patch-style text revision semantics <bcp14>MUST</bcp14> define that replacement or
revision behavior explicitly. Such streams <bcp14>MUST NOT</bcp14> rely on the
append-only <tt>output/text</tt> semantics above.</t>
        </section>
        <section anchor="group-lifecycle">
          <name>Group Lifecycle</name>
          <t>A new Group is created when:</t>
          <ul spacing="normal">
            <li>
              <t>The agent begins responding to a new user turn.</t>
            </li>
            <li>
              <t>The turn counter increments (see <xref target="turn-state-machine"/>).</t>
            </li>
          </ul>
          <t>The Group is closed (LARGEST_OBJECT property set) when:</t>
          <ul spacing="normal">
            <li>
              <t>The agent completes its full response for this turn.</t>
            </li>
            <li>
              <t>The agent is interrupted by barge-in (final Object has cancelled flag).</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="audio-output">
        <name>Agent Audio Output Track</name>
        <t>The agent audio output track carries TTS-synthesized audio. The encoded
audio segment is carried as a complete LOC payload <xref target="LOC"/> inside the
Live Agent audio envelope defined below. This document does not extend
the LOC header or append Live Agent metadata to a raw LOC payload.</t>
        <section anchor="object-structure-1">
          <name>Object Structure</name>
          <t>Each Object carries one audio segment (typically 20-60ms of audio).
The envelope provides explicit payload boundaries and optional alignment
metadata. A profile-aware receiver parses the envelope, then passes the
<tt>loc_payload</tt> bytes unchanged to its LOC decoder.</t>
          <figure anchor="fig-audio-object">
            <name>Audio Output Object Format</name>
            <artwork><![CDATA[
Audio Output Object Payload:
+----------------------+--------+----------------------------------+
| Field                | Type   | Description                      |
+----------------------+--------+----------------------------------+
| flags                | uint8  | 0x01=alignment_present           |
| loc_payload_length   | varint | Length of loc_payload in bytes   |
| loc_payload          | bytes  | Complete LOC audio payload       |
| align_seq (optional) | varint | Text Object seq number           |
| align_offset (opt)   | varint | Character offset within text     |
+----------------------+--------+----------------------------------+
]]></artwork>
          </figure>
          <t>The optional alignment fields are present only when the
<tt>alignment_present</tt> flag is set. They belong to this Live Agent envelope,
not to LOC. A receiver that only understands LOC will not be able to
decode this envelope directly; an endpoint or gateway can recover the
standard LOC payload by extracting <tt>loc_payload</tt>.</t>
        </section>
        <section anchor="subgroup-semantics-for-audio">
          <name>Subgroup Semantics for Audio</name>
          <t>Each Subgroup in the audio track corresponds to one utterance or
sentence boundary in the agent's response. This enables:</t>
          <ul spacing="normal">
            <li>
              <t>Dropping a complete sentence if delivery is too late
(SUBGROUP_DELIVERY_TIMEOUT).</t>
            </li>
            <li>
              <t>Rendering audio sentence-by-sentence with natural pauses.</t>
            </li>
            <li>
              <t>Aligning with text Subgroups at sentence granularity.</t>
            </li>
          </ul>
        </section>
        <section anchor="cross-track-sync">
          <name>Cross-Track Synchronization</name>
          <t>The agent text track and agent audio track use the same Group ID for
the same conversational turn. Within a turn:</t>
          <ul spacing="normal">
            <li>
              <t>Text Subgroup N corresponds to Audio Subgroup N (same sentence).</t>
            </li>
            <li>
              <t>The <tt>align_seq</tt> field in audio Objects references the text Object
sequence number being spoken at that audio moment.</t>
            </li>
          </ul>
          <t>This enables a subscriber receiving both tracks to:</t>
          <ul spacing="normal">
            <li>
              <t>Display text as it arrives (lower latency than audio).</t>
            </li>
            <li>
              <t>Highlight the currently-spoken text segment during audio playback.</t>
            </li>
            <li>
              <t>Fall back to text-only if audio delivery times out.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="audio-input">
        <name>User Audio Input Track</name>
        <t>The user publishes a continuous audio input track.</t>
        <section anchor="object-structure-2">
          <name>Object Structure</name>
          <t>Each Object carries a fixed-duration audio frame (typically 20ms)
using the LOC container format.</t>
        </section>
        <section anchor="group-semantics">
          <name>Group Semantics</name>
          <t>Groups in the user audio track are segmented by voice activity:</t>
          <ul spacing="normal">
            <li>
              <t>A new Group begins when the user starts speaking (VAD trigger).</t>
            </li>
            <li>
              <t>The Group ends when the user stops speaking (silence detection).</t>
            </li>
          </ul>
          <t>This enables the agent backend to:</t>
          <ul spacing="normal">
            <li>
              <t>Subscribe starting from the latest Group (skip silence gaps).</t>
            </li>
            <li>
              <t>Process each utterance as a unit.</t>
            </li>
            <li>
              <t>Implement endpoint detection without additional signaling.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="tool-output">
        <name>Tool Output Track</name>
        <t>The agent <bcp14>MAY</bcp14> publish a tool output track for structured results from
tool/function calls.</t>
        <section anchor="object-structure-3">
          <name>Object Structure</name>
          <figure anchor="fig-tool-object">
            <name>Tool Output Object Format</name>
            <artwork><![CDATA[
Tool Output Object Payload:
+-----------+--------+------------------------------------------+
| Field     | Type   | Description                              |
+-----------+--------+------------------------------------------+
| flags     | uint8  | 0x01=invocation, 0x02=result, 0x04=error |
| tool_id   | varint | Tool/function identifier                 |
| call_id   | varint | Unique call instance identifier          |
| payload   | bytes  | JSON-encoded tool call or result         |
+-----------+--------+------------------------------------------+
]]></artwork>
          </figure>
        </section>
        <section anchor="delivery-requirements">
          <name>Delivery Requirements</name>
          <t>Tool outputs <bcp14>MUST</bcp14> be delivered reliably (no delivery timeout). Tool
invocation and result Objects are always flagged final (0x02). The
subscriber <bcp14>MUST NOT</bcp14> discard tool results due to lateness.</t>
        </section>
      </section>
    </section>
    <section anchor="turn-control">
      <name>Turn Control Protocol</name>
      <t>This section defines the control protocol for managing conversational
turns between the user and agent.</t>
      <section anchor="turn-state-machine">
        <name>Turn State Machine</name>
        <t>A live agent session maintains the following turn states:</t>
        <figure anchor="fig-state-machine">
          <name>Turn State Machine</name>
          <artwork><![CDATA[
                    speech_start
         +--------+----------->+---------+
         |  IDLE  |            |  USER   |
         |        |<-----------+ SPEAKING|
         +---+----+ speech_end +----+----+
             ^                      |
             |                      | (agent begins inference)
             |                      v
             |               +------+------+
             | turn_complete |   AGENT     |
             +--------------+  PROCESSING |
             |               +------+------+
             |                      |
             |                      | (first output produced)
             |                      v
             |               +------+------+
             | turn_complete |   AGENT     |<---+
             +--------------+  SPEAKING   |    | (output continues)
                             +------+------+----+
                                    |
                    barge_in        |
                  +--------+       |
                  |  USER  |<------+
                  |SPEAKING|
                  +--------+
]]></artwork>
        </figure>
        <t>State transitions:</t>
        <ul spacing="normal">
          <li>
            <t><strong>IDLE → USER_SPEAKING</strong>: User audio VAD detects speech onset.</t>
          </li>
          <li>
            <t><strong>USER_SPEAKING → AGENT_PROCESSING</strong>: User speech ends (silence
timeout or explicit end-of-turn signal).</t>
          </li>
          <li>
            <t><strong>AGENT_PROCESSING → AGENT_SPEAKING</strong>: Agent produces first output
Object in any output track.</t>
          </li>
          <li>
            <t><strong>AGENT_SPEAKING → IDLE</strong>: Agent completes response (closes Group
in all output tracks).</t>
          </li>
          <li>
            <t><strong>AGENT_SPEAKING → USER_SPEAKING</strong>: Barge-in event (user starts
speaking while agent is outputting).</t>
          </li>
          <li>
            <t><strong>AGENT_PROCESSING → USER_SPEAKING</strong>: Barge-in event before the
agent has produced its first output Object.</t>
          </li>
        </ul>
        <t>The <tt>AGENT_SPEAKING</tt> state means that the agent is publishing response
output in any output modality; the state name does not require audio to
be present. <tt>TURN_STARTED</tt> signals that the agent has accepted the user
turn and is entering the agent side of the turn. It <bcp14>MUST</bcp14> be sent no
later than the first output Object for the turn and <bcp14>SHOULD</bcp14> be sent when
the agent enters <tt>AGENT_PROCESSING</tt> if processing is expected to be
visible to the user. <tt>THINKING</tt> is an optional progress signal while the
session is in <tt>AGENT_PROCESSING</tt>.</t>
        <t>If the user starts speaking while the session is in <tt>AGENT_PROCESSING</tt>
or <tt>AGENT_SPEAKING</tt>, the event is a barge-in for the active agent turn.
If the relevant turn has already reached <tt>TURN_COMPLETE</tt> and all output
Groups for that turn are closed, the speech start begins a new user turn
instead of interrupting the completed turn. Implementations that detect
a false speech start <bcp14>SHOULD</bcp14> either avoid sending <tt>SPEECH_START</tt> until
the signal is stable or follow it with <tt>SPEECH_END</tt> carrying no media
Objects for that turn.</t>
      </section>
      <section anchor="control-track">
        <name>Control Track</name>
        <t>Turn control signals are exchanged on a dedicated bidirectional control
track pair (one per direction). Datagram delivery of BARGE_IN uses the
same Control Object Payload format as the control track; it is a fast
path for the same logical event, not a separate signal format. Control
Objects use the following format:</t>
        <figure anchor="fig-control-object">
          <name>Control Signal Format</name>
          <artwork><![CDATA[
Control Object Payload:
+-----------+--------+------------------------------------------+
| Field     | Type   | Description                              |
+-----------+--------+------------------------------------------+
| signal    | varint | Signal type (see below)                  |
| turn_id   | varint | Current turn Group ID                    |
| timestamp | varint | Sender wall-clock time (ms since epoch)  |
| payload   | bytes  | Signal-specific data (may be empty)      |
+-----------+--------+------------------------------------------+

Signal Types:
  0x01 = SPEECH_START     (user → agent)
  0x02 = SPEECH_END       (user → agent)
  0x03 = BARGE_IN         (user → agent)
  0x04 = TURN_STARTED     (agent → user)
  0x05 = TURN_COMPLETE    (agent → user)
  0x06 = INTERRUPT_ACK    (agent → user)
  0x07 = THINKING         (agent → user)
]]></artwork>
        </figure>
      </section>
      <section anchor="barge-in">
        <name>Barge-in Handling</name>
        <t>Barge-in is the critical interaction where a user interrupts the agent's
ongoing output. The protocol defines the following sequence:</t>
        <figure anchor="fig-barge-in">
          <name>Barge-in Sequence</name>
          <artwork><![CDATA[
User Device                                  Agent Backend
     |                                            |
     |  [user starts speaking over agent output]  |
     |                                            |
     |-- Control: BARGE_IN (turn_id=N) ---------> |
     |          (via Datagram, highest priority)   |
     |                                            |
     |       [agent stops TTS, notes position]    |
     |                                            |
     |<- Control: INTERRUPT_ACK (turn_id=N) ----- |
     |     payload: {interrupted_group: N,        |
     |              interrupted_subgroup: M,      |
     |              interrupted_object: K}        |
     |                                            |
     |  [agent closes Group N with cancelled flag]|
     |                                            |
     |<- Text Object: flags=cancelled ----------- |
     |<- Audio: subgroup FIN -------------------- |
     |                                            |
     |  [agent begins processing new user input]  |
     |                                            |
]]></artwork>
        </figure>
        <section anchor="barge-in-signal-delivery">
          <name>Barge-in Signal Delivery</name>
          <t>The BARGE_IN signal has the following delivery requirements:</t>
          <ul spacing="normal">
            <li>
              <t><bcp14>MUST</bcp14> be sent via MOQT Datagram for minimum latency. The Datagram
payload <bcp14>MUST</bcp14> be a complete Control Object Payload with
<tt>signal=BARGE_IN</tt>.</t>
            </li>
            <li>
              <t><bcp14>MUST</bcp14> be assigned the highest publisher priority (0x00).</t>
            </li>
            <li>
              <t><bcp14>SHOULD</bcp14> be sent immediately upon local VAD detection, without
waiting for speech_end.</t>
            </li>
            <li>
              <t><bcp14>SHOULD</bcp14> also be published on the user-to-agent control track as a
reliable mirror of the same event unless an <tt>INTERRUPT_ACK</tt> for that
event has already been received.</t>
            </li>
            <li>
              <t>The agent <bcp14>MUST</bcp14> process BARGE_IN within one processing cycle
(target: &lt; 50ms from receipt to output cessation).</t>
            </li>
          </ul>
          <t>The <tt>turn_id</tt> in a BARGE_IN Control Object identifies the interrupted
agent turn. The BARGE_IN payload <bcp14>MUST</bcp14> contain an <tt>event_id</tt> that is
unique within the MOQT session and a <tt>new_turn_id</tt> for the user speech
that caused the interruption:</t>
          <figure anchor="fig-barge-in-payload">
            <name>BARGE_IN Payload</name>
            <artwork><![CDATA[
BARGE_IN Payload:
+-------------+--------+-----------------------------------------+
| Field       | Type   | Description                             |
+-------------+--------+-----------------------------------------+
| event_id    | varint | Unique barge-in event identifier        |
| new_turn_id | varint | Group ID for the new user input turn    |
+-------------+--------+-----------------------------------------+
]]></artwork>
          </figure>
          <t>An agent <bcp14>MUST</bcp14> deduplicate BARGE_IN events by <tt>(sender, event_id)</tt>. If a
Datagram copy and a reliable control-track copy of the same event are
both received, only the first copy that is processed changes the state
machine. Later copies are acknowledgements of delivery and <bcp14>MUST NOT</bcp14>
trigger a second interrupt.</t>
          <t>If BARGE_IN races with TURN_COMPLETE for the same <tt>turn_id</tt>, BARGE_IN
takes precedence while the agent turn is still active. Once the agent
has committed <tt>TURN_COMPLETE</tt> and closed all output Groups for that
turn, a later BARGE_IN for that <tt>turn_id</tt> is stale and <bcp14>MUST</bcp14> be ignored
as an interrupt; the associated speech can still start <tt>new_turn_id</tt>.</t>
        </section>
        <section anchor="agent-interrupt-behavior">
          <name>Agent Interrupt Behavior</name>
          <t>Upon receiving BARGE_IN, the agent <bcp14>MUST</bcp14>:</t>
          <ol spacing="normal" type="1"><li>
              <t>Cease generating new output Objects for the current turn.</t>
            </li>
            <li>
              <t>Close the current output Group with a cancelled Object
(flags=0x04 in text track, stream FIN in audio track).</t>
            </li>
            <li>
              <t>Send INTERRUPT_ACK with the position where output stopped.</t>
            </li>
            <li>
              <t>Transition to processing the new user input.</t>
            </li>
          </ol>
          <t>The agent <bcp14>SHOULD NOT</bcp14>:</t>
          <ul spacing="normal">
            <li>
              <t>Abruptly truncate mid-audio-frame (finish current audio Object).</t>
            </li>
            <li>
              <t>Discard context from the interrupted response (the agent has it
in its context window for the next turn).</t>
            </li>
          </ul>
        </section>
        <section anchor="client-interrupt-behavior">
          <name>Client Interrupt Behavior</name>
          <t>Upon sending BARGE_IN, the client <bcp14>SHOULD</bcp14>:</t>
          <ul spacing="normal">
            <li>
              <t>Immediately stop audio playback of the agent's output.</t>
            </li>
            <li>
              <t>Visually indicate the response was interrupted (e.g., fade text).</t>
            </li>
            <li>
              <t>Begin capturing and publishing user audio for the new turn.</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="vad">
        <name>VAD Integration</name>
        <t>Speech activity detection events drive the turn state machine. This
document does not mandate a specific detection algorithm (traditional
energy-based VAD, neural VAD, or other approaches) but defines the
signaling semantics:</t>
        <ul spacing="normal">
          <li>
            <t><strong>SPEECH_START</strong>: Published when the implementation determines that
the user has begun speaking.</t>
          </li>
          <li>
            <t><strong>SPEECH_END</strong>: Published when the implementation determines that
the user has finished speaking.</t>
          </li>
          <li>
            <t><strong>BARGE_IN</strong>: Published when SPEECH_START occurs during
AGENT_PROCESSING or AGENT_SPEAKING state. This is a composite signal
(implies SPEECH_START + interrupt request).</t>
          </li>
        </ul>
        <t>VAD signals are sent on the user→agent control track. Implementations
<bcp14>MAY</bcp14> perform VAD on the client, on the relay, or on the agent backend.
When VAD is performed on the client, it <bcp14>SHOULD</bcp14> be sent as Datagram for
lowest latency.</t>
      </section>
      <section anchor="priority">
        <name>Priority Assignment</name>
        <t>The following priority assignments are <bcp14>RECOMMENDED</bcp14> for live agent
sessions (lower numeric value = higher priority):</t>
        <table anchor="tab-priority">
          <name>Recommended Priority Assignment</name>
          <thead>
            <tr>
              <th align="left">Track/Signal</th>
              <th align="left">Priority</th>
              <th align="left">Rationale</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Control signals (BARGE_IN)</td>
              <td align="left">0x00</td>
              <td align="left">Must preempt all other traffic</td>
            </tr>
            <tr>
              <td align="left">Control signals (other)</td>
              <td align="left">0x01</td>
              <td align="left">Turn management is time-critical</td>
            </tr>
            <tr>
              <td align="left">User audio input</td>
              <td align="left">0x02</td>
              <td align="left">Agent cannot process without input</td>
            </tr>
            <tr>
              <td align="left">Agent audio output</td>
              <td align="left">0x03</td>
              <td align="left">Primary user-perceived output</td>
            </tr>
            <tr>
              <td align="left">Agent text output</td>
              <td align="left">0x04</td>
              <td align="left">Secondary output (lower bandwidth)</td>
            </tr>
            <tr>
              <td align="left">Tool results</td>
              <td align="left">0x05</td>
              <td align="left">Non-time-critical structured data</td>
            </tr>
          </tbody>
        </table>
        <t>Within agent output tracks, GROUP_ORDER <bcp14>SHOULD</bcp14> be set to descending
(deliver newest group first) so that relay congestion drops stale
turns rather than current ones.</t>
      </section>
    </section>
    <section anchor="track-structure">
      <name>Track Structure and Naming</name>
      <section anchor="namespace">
        <name>Namespace Convention</name>
        <t>A live agent session uses the following namespace structure:</t>
        <artwork><![CDATA[
Track Namespace: moqt://{authority}/agent/{session-id}/
]]></artwork>
        <t>Where:</t>
        <ul spacing="normal">
          <li>
            <t><tt>{authority}</tt> is the domain of the agent service.</t>
          </li>
          <li>
            <t><tt>{session-id}</tt> is a unique session identifier (<bcp14>RECOMMENDED</bcp14>: UUIDv7).</t>
          </li>
        </ul>
      </section>
      <section anchor="track-names">
        <name>Track Names</name>
        <t>The following track names are defined within a session namespace:</t>
        <table anchor="tab-tracks">
          <name>Standard Track Names</name>
          <thead>
            <tr>
              <th align="left">Track Name</th>
              <th align="left">Direction</th>
              <th align="left">Content</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">input/audio</td>
              <td align="left">User → Agent</td>
              <td align="left">User microphone audio (LOC)</td>
            </tr>
            <tr>
              <td align="left">input/text</td>
              <td align="left">User → Agent</td>
              <td align="left">User text messages</td>
            </tr>
            <tr>
              <td align="left">output/audio</td>
              <td align="left">Agent → User</td>
              <td align="left">TTS synthesized audio (LOC)</td>
            </tr>
            <tr>
              <td align="left">output/text</td>
              <td align="left">Agent → User</td>
              <td align="left">Streaming LLM text tokens</td>
            </tr>
            <tr>
              <td align="left">output/tool</td>
              <td align="left">Agent → User</td>
              <td align="left">Tool invocations and results</td>
            </tr>
            <tr>
              <td align="left">control/user</td>
              <td align="left">User → Agent</td>
              <td align="left">User control signals</td>
            </tr>
            <tr>
              <td align="left">control/agent</td>
              <td align="left">Agent → User</td>
              <td align="left">Agent control signals</td>
            </tr>
          </tbody>
        </table>
        <t>Additional tracks <bcp14>MAY</bcp14> be defined for:</t>
        <ul spacing="normal">
          <li>
            <t><tt>input/video</tt>: User camera input.</t>
          </li>
          <li>
            <t><tt>output/video</tt>: Agent avatar or visual output.</t>
          </li>
          <li>
            <t><tt>meta/catalog</tt>: Session catalog in MSF format <xref target="MSF"/>.</t>
          </li>
        </ul>
      </section>
      <section anchor="catalog">
        <name>Catalog Integration</name>
        <t>A live agent session <bcp14>SHOULD</bcp14> publish a catalog track conforming to the
MOQT Streaming Format <xref target="MSF"/>. The catalog declares:</t>
        <ul spacing="normal">
          <li>
            <t>Available tracks and their codec parameters.</t>
          </li>
          <li>
            <t>Agent capabilities (supported input modalities, languages).</t>
          </li>
          <li>
            <t>Session metadata (model identifier, context window size).</t>
          </li>
        </ul>
        <t>The catalog enables late-joining subscribers and relay-assisted
discovery of session characteristics.</t>
      </section>
    </section>
    <section anchor="delivery-policies">
      <name>Delivery Policies</name>
      <section anchor="transport-selection">
        <name>Datagram vs Stream Selection</name>
        <table anchor="tab-transport">
          <name>Transport Selection Guidelines</name>
          <thead>
            <tr>
              <th align="left">Track</th>
              <th align="left">Default Transport</th>
              <th align="left">Fallback</th>
              <th align="left">Condition</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">control/* (BARGE_IN)</td>
              <td align="left">Datagram</td>
              <td align="left">Stream mirror</td>
              <td align="left">Fast path plus reliable recovery</td>
            </tr>
            <tr>
              <td align="left">control/* (other)</td>
              <td align="left">Stream</td>
              <td align="left">—</td>
              <td align="left">Reliable delivery needed</td>
            </tr>
            <tr>
              <td align="left">input/audio</td>
              <td align="left">Stream</td>
              <td align="left">Datagram</td>
              <td align="left">If partial reliability desired</td>
            </tr>
            <tr>
              <td align="left">output/audio</td>
              <td align="left">Stream</td>
              <td align="left">Datagram</td>
              <td align="left">For loss-tolerant low-latency</td>
            </tr>
            <tr>
              <td align="left">output/text</td>
              <td align="left">Stream</td>
              <td align="left">—</td>
              <td align="left">Must be reliable</td>
            </tr>
            <tr>
              <td align="left">output/tool</td>
              <td align="left">Stream</td>
              <td align="left">—</td>
              <td align="left">Must be reliable</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="relay">
      <name>Relay Considerations</name>
      <section anchor="relay-transparency">
        <name>Relay Transparency</name>
        <t>This protocol is designed to operate through standard MOQT relays
without relay modification. Relays treat live agent traffic as normal
MOQT objects with the following beneficial behaviors:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Priority-based scheduling</strong>: Relays respect publisher priority,
ensuring control signals and user audio are forwarded first under
congestion.</t>
          </li>
          <li>
            <t><strong>Timeout-based expiry</strong>: Relays discard Objects that exceed their
delivery timeout, preventing stale audio from consuming bandwidth.</t>
          </li>
          <li>
            <t><strong>Group-order delivery</strong>: With descending group order, relays under
congestion naturally shed older turns.</t>
          </li>
        </ul>
      </section>
      <section anchor="caching">
        <name>Caching Behavior</name>
        <t>Relays <bcp14>MAY</bcp14> cache agent output Objects for the duration specified by
the MAX_CACHE_DURATION track property. This enables:</t>
        <ul spacing="normal">
          <li>
            <t>Late-joining clients to receive the current turn's output.</t>
          </li>
          <li>
            <t>Reconnecting clients to resume from where they left off.</t>
          </li>
        </ul>
        <t>Relays <bcp14>SHOULD NOT</bcp14> cache:</t>
        <ul spacing="normal">
          <li>
            <t>Control track Objects (they are ephemeral state transitions).</t>
          </li>
          <li>
            <t>User audio input (privacy-sensitive, single-consumer).</t>
          </li>
        </ul>
      </section>
      <section anchor="multi-subscriber">
        <name>Multi-Subscriber Scenarios</name>
        <t>A single agent session <bcp14>MAY</bcp14> have multiple subscribers to output tracks
(e.g., accessibility tools, monitoring, recording). The relay
naturally fans out agent output to all subscribers without additional
agent-side overhead.</t>
      </section>
    </section>
    <section anchor="security">
      <name>Security Considerations</name>
      <section anchor="authentication-and-authorization">
        <name>Authentication and Authorization</name>
        <t>Live agent sessions <bcp14>MUST</bcp14> authenticate both the user and agent
endpoints. The MOQT AUTHORIZATION_TOKEN parameter (<xref section="10.2.2" sectionFormat="of" target="MOQT"/>) <bcp14>SHOULD</bcp14> be used for per-track authorization.</t>
        <t>User audio input tracks contain sensitive biometric data and <bcp14>MUST</bcp14> be
restricted to the intended agent subscriber. Relays <bcp14>MUST</bcp14> enforce
subscription authorization for input tracks.</t>
      </section>
      <section anchor="end-to-end-encryption">
        <name>End-to-End Encryption</name>
        <t>For deployments where relay operators are not fully trusted, agent
output tracks <bcp14>MAY</bcp14> use end-to-end encryption as defined in
<xref target="SECURE-OBJECTS"/>. Control tracks <bcp14>SHOULD NOT</bcp14> be E2E encrypted as
relay-level inspection may be needed for priority enforcement.</t>
      </section>
      <section anchor="privacy-considerations">
        <name>Privacy Considerations</name>
        <ul spacing="normal">
          <li>
            <t>User audio <bcp14>MUST NOT</bcp14> be cached by relays beyond the immediate
delivery requirement.</t>
          </li>
          <li>
            <t>Session IDs <bcp14>MUST</bcp14> be cryptographically random (UUIDv7 with random
component) to prevent session correlation attacks.</t>
          </li>
          <li>
            <t>Control signals (VAD events, barge-in) leak interaction timing
metadata. Implementations <bcp14>MAY</bcp14> add padding to control track Objects
to mitigate traffic analysis.</t>
          </li>
        </ul>
      </section>
      <section anchor="denial-of-service">
        <name>Denial of Service</name>
        <ul spacing="normal">
          <li>
            <t>Barge-in signals are high-priority and processed immediately.
Implementations <bcp14>MUST</bcp14> rate-limit barge-in signals per session
(<bcp14>RECOMMENDED</bcp14>: maximum 10 per second) to prevent priority inversion
attacks.</t>
          </li>
          <li>
            <t>Relays <bcp14>SHOULD</bcp14> enforce per-session bandwidth quotas to prevent a
single agent session from starving other traffic.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="iana">
      <name>IANA Considerations</name>
      <section anchor="moqt-track-property-registrations">
        <name>MOQT Track Property Registrations</name>
        <t>This document registers the following track properties in the "MOQT
Track Properties" registry:</t>
        <table anchor="tab-properties">
          <name>Track Property Registrations</name>
          <thead>
            <tr>
              <th align="left">Property Name</th>
              <th align="left">Property ID</th>
              <th align="left">Type</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">AGENT_SESSION_ROLE</td>
              <td align="left">TBD</td>
              <td align="left">varint</td>
              <td align="left">0=user, 1=agent</td>
            </tr>
            <tr>
              <td align="left">TURN_GROUP_ORDER</td>
              <td align="left">TBD</td>
              <td align="left">varint</td>
              <td align="left">Confirms Group=Turn mapping</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="control-signal-type-registry">
        <name>Control Signal Type Registry</name>
        <t>IANA is requested to create a "Live Agent Control Signal Types"
registry under the "Media over QUIC (MoQ)" group. The registration
procedure is Specification Required.</t>
        <t>Initial registrations:</t>
        <table anchor="tab-signals">
          <name>Control Signal Type Registry</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Signal Name</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0x01</td>
              <td align="left">SPEECH_START</td>
              <td align="left">
                <xref target="vad"/></td>
            </tr>
            <tr>
              <td align="left">0x02</td>
              <td align="left">SPEECH_END</td>
              <td align="left">
                <xref target="vad"/></td>
            </tr>
            <tr>
              <td align="left">0x03</td>
              <td align="left">BARGE_IN</td>
              <td align="left">
                <xref target="barge-in"/></td>
            </tr>
            <tr>
              <td align="left">0x04</td>
              <td align="left">TURN_STARTED</td>
              <td align="left">
                <xref target="turn-state-machine"/></td>
            </tr>
            <tr>
              <td align="left">0x05</td>
              <td align="left">TURN_COMPLETE</td>
              <td align="left">
                <xref target="turn-state-machine"/></td>
            </tr>
            <tr>
              <td align="left">0x06</td>
              <td align="left">INTERRUPT_ACK</td>
              <td align="left">
                <xref target="barge-in"/></td>
            </tr>
            <tr>
              <td align="left">0x07</td>
              <td align="left">THINKING</td>
              <td align="left">
                <xref target="control-track"/></td>
            </tr>
          </tbody>
        </table>
        <t>Values 0x08-0xFF are available for assignment.</t>
      </section>
      <section anchor="object-payload-flags-registry">
        <name>Object Payload Flags Registry</name>
        <t>IANA is requested to create a "Live Agent Object Flags" registry.</t>
        <t>Initial registrations:</t>
        <table anchor="tab-flags">
          <name>Object Flags Registry</name>
          <thead>
            <tr>
              <th align="left">Bit</th>
              <th align="left">Flag Name</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">PARTIAL</td>
              <td align="left">Object is intermediate; final not yet signaled</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">FINAL</td>
              <td align="left">Object is definitive</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">CANCELLED</td>
              <td align="left">Object indicates interruption</td>
              <td align="left">This document</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="MOQT">
          <front>
            <title>Media over QUIC Transport</title>
            <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
              <organization>Cisco</organization>
            </author>
            <author fullname="Victor Vasiliev" initials="V." surname="Vasiliev">
              <organization>Google</organization>
            </author>
            <author fullname="Ian Swett" initials="I." surname="Swett">
              <organization>Google</organization>
            </author>
            <author fullname="Alan Frindell" initials="A." surname="Frindell">
              <organization>Meta</organization>
            </author>
            <date day="12" month="May" year="2026"/>
            <abstract>
              <t>   This document defines Media over QUIC Transport (MOQT), a publish/
   subscribe protocol that runs over QUIC and WebTransport.  MOQT
   leverages the features of these transports, such as streams,
   datagrams, priorities, and partial reliability.  MOQT operates both
   point-to-point and through intermediate relays, enabling scalable
   low-latency delivery.  Despite its name, MOQT is media agnostic and
   can be used for a wide range of use cases.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-moq-transport-18"/>
        </reference>
        <reference anchor="LOC">
          <front>
            <title>Low Overhead Media Container</title>
            <author fullname="Mo Zanaty" initials="M." surname="Zanaty">
              <organization>Cisco</organization>
            </author>
            <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
              <organization>Cisco</organization>
            </author>
            <author fullname="Peter Thatcher" initials="P." surname="Thatcher">
              <organization>Microsoft</organization>
            </author>
            <date day="15" month="March" year="2026"/>
            <abstract>
              <t>   This specification describes a Low Overhead Media Container (LOC)
   format for encoded and encrypted audio and video media data to be
   used primarily for interactive Media over QUIC Transport (MOQT).  It
   may be used in the MOQT Streaming Format (MSF) specification, which
   defines a catalog format for publishers to declare and describe their
   LOC tracks and for subscribers to consume them.  Examples are also
   provided for building media applications using LOC and MOQT.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-moq-loc-02"/>
        </reference>
        <reference anchor="QUIC">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="MSF">
          <front>
            <title>MOQT Streaming Format</title>
            <author fullname="Will Law" initials="W." surname="Law">
              <organization>Akamai</organization>
            </author>
            <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
              <organization>Cisco</organization>
            </author>
            <date day="2" month="June" year="2026"/>
            <abstract>
              <t>   This document specifies the MOQT Streaming Format, designed to
   operate on Media Over QUIC Transport.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-moq-msf-01"/>
        </reference>
        <reference anchor="SECURE-OBJECTS">
          <front>
            <title>End-to-End Secure Objects for Media over QUIC Transport</title>
            <author fullname="Cullen Fluffy Jennings" initials="C. F." surname="Jennings">
              <organization>Cisco</organization>
            </author>
            <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
              <organization>Cisco</organization>
            </author>
            <author fullname="Richard Barnes" initials="R." surname="Barnes">
              <organization>Cisco</organization>
            </author>
            <date day="2" month="March" year="2026"/>
            <abstract>
              <t>   This document specifies an end-to-end authenticated encryption scheme
   for application objects transmitted via Media over QUIC (MoQ)
   Transport.  The scheme enables original publishers that share a
   symmetric key with end subscribers, to ensuring that MoQ relays are
   unable to decrypt object contents.  Additionally, subscribers can
   verify the integrity and authenticity of received objects, confirming
   that the content has not been modified in transit.  Additionally it
   allows MoQ parameters to be protected so the publisher can select if
   they are readable and/or modifiable by relays.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-moq-secure-objects-00"/>
        </reference>
        <reference anchor="A2A">
          <front>
            <title>Agent Protocol over MoQ</title>
            <author fullname="Dapeng Liu" initials="D." surname="Liu">
              <organization>Alibaba Cloud</organization>
            </author>
            <author fullname="Suresh Krishnan" initials="S." surname="Krishnan">
              <organization>Cisco</organization>
            </author>
            <date day="2" month="March" year="2026"/>
            <abstract>
              <t>   This document specifies a Agent-to-Agent communication framework
   enabling structured, low-latency, and semantically rich communication
   between autonomous agents over the Media over QUIC (MoQ) protocol.
   It leverages MoQ's efficient media transport capabilities while
   introducing a new application-layer framing mechanism to support
   control signaling, session management, and large data fragmentation.
   The design supports both intra-domain and inter-domain deployment,
   with an emphasis on interoperability, extensibility, and minimal
   overhead.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-liu-agent-protocol-over-moq-00"/>
        </reference>
      </references>
    </references>
    <?line 1066?>

<section anchor="examples">
      <name>Interaction Examples</name>
      <section anchor="basic-voice-conversation-turn">
        <name>Basic Voice Conversation Turn</name>
        <figure anchor="fig-basic-turn">
          <name>Basic Voice Turn Example</name>
          <artwork><![CDATA[
Time  User Device              Relay          Agent Backend
 |
 |    [User speaks: "What's the weather?"]
 |
 t0   PUBLISH input/audio Group=1 ------>-----> ASR processes
 t0   Control: SPEECH_START ----------->------>
 |
 t1   [User stops speaking]
 t1   Control: SPEECH_END ------------->------>
 |                                              LLM generates response
 t2                            <------<------- Control: TURN_STARTED
 t2                            <------<------- PUBLISH output/text
 |                                              Group=1, Subgroup=0
 |                                              Object 0: "The weather"
 |                                              Object 1: " in Hangzhou"
 |                                              Object 2: " is sunny,"
 t3                            <------<------- PUBLISH output/audio
 |                                              Group=1, Subgroup=0
 |                                              [TTS: "The weather in
 |                                               Hangzhou is sunny,"]
 |
 t4                            <------<------- Object (text, final):
 |                                              " 28°C today."
 t4                            <------<------- Control: TURN_COMPLETE
]]></artwork>
        </figure>
      </section>
      <section anchor="barge-in-during-agent-response">
        <name>Barge-in During Agent Response</name>
        <figure anchor="fig-barge-in-example">
          <name>Barge-in Example</name>
          <artwork><![CDATA[
Time  User Device              Relay          Agent Backend
 |
 |    [Agent is speaking: "The weather forecast shows..."]
 |    [Agent output: Group=1, currently at Subgroup=2]
 |
 t0   [User interrupts: "Stop, just tell me temperature"]
 t0   Control: BARGE_IN (turn=1) ----->------> received
 |
 t1                                            [stops TTS generation]
 t1                            <------<------- Control: INTERRUPT_ACK
 |                                              {interrupted: G=1,SG=2,O=5}
 t1                            <------<------- Text Object(cancelled)
 t1                            <------<------- Audio subgroup FIN
 |
 t2   PUBLISH input/audio Group=2 ---->------> ASR: "just tell me temp"
 t2   Control: SPEECH_START ---------->------>
 |
 t3   Control: SPEECH_END ------------>------>
 |                                              LLM: context includes
 |                                              interrupted response
 t4                            <------<------- Control: TURN_STARTED
 t4                            <------<------- Text Group=2: "It's 28°C."
 t4                            <------<------- Audio Group=2: [TTS]
 t5                            <------<------- Control: TURN_COMPLETE
]]></artwork>
        </figure>
      </section>
      <section anchor="concurrent-text-and-audio-delivery">
        <name>Concurrent Text and Audio Delivery</name>
        <figure anchor="fig-sync-example">
          <name>Cross-Track Synchronization Example</name>
          <artwork><![CDATA[
Time  Subscriber View (User Device)
 |
 t0   [Subscribe to output/text AND output/audio, same Group ID]
 |
 t1   Text Object arrives: "The answer is"     → render immediately
 t2   Text Object arrives: " forty-two."       → append to display
 |
 t3   Audio Object arrives: [TTS "The answer"] → begin playback
 |    Text highlighting: "The answer" underlined (via align_seq)
 |
 t4   Audio Object arrives: [TTS "is forty"]   → continue playback
 |    Text highlighting advances: "is forty"
 |
 t5   Audio Object arrives: [TTS "-two."]      → finish playback
 |    Text highlighting: "-two."
 |
 |    [Text arrived ~200ms before audio — user saw text first,
 |     then heard it spoken, with synchronized highlighting]
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="rationale">
      <name>Design Rationale</name>
      <section anchor="why-not-a-custom-frame-layer">
        <name>Why Not a Custom Frame Layer</name>
        <t>This document maps directly to the native MOQT object model rather
than introducing a custom frame layer because:</t>
        <ul spacing="normal">
          <li>
            <t>MOQT Groups/Subgroups already provide the sequencing and
boundaries needed for turns and inference steps.</t>
          </li>
          <li>
            <t>MOQT delivery timeouts and priorities operate at the Object level,
which is the right granularity for inference delivery.</t>
          </li>
          <li>
            <t>Standard MOQT relays can handle live agent traffic without
modification or frame parsing.</t>
          </li>
          <li>
            <t>Reusing the object model means existing MOQT tooling (monitoring,
debugging, relay management) works unchanged.</t>
          </li>
        </ul>
      </section>
      <section anchor="why-group-turn">
        <name>Why Group = Turn</name>
        <t>Alternatives considered:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Group = entire session</strong>: Loses the ability to discard stale
turns and prevents Group-level priority ordering.</t>
          </li>
          <li>
            <t><strong>Group = single inference step</strong>: Too fine-grained; creates
excessive Group metadata overhead and prevents turn-level
operations.</t>
          </li>
          <li>
            <t><strong>Group = time window (e.g., 1 second)</strong>: Arbitrary boundary that
doesn't align with application semantics; complicates barge-in.</t>
          </li>
        </ul>
        <t>Group = Turn provides the natural boundary for:
- What to discard when interrupted (the current turn).
- What to prioritize (the latest turn).
- What to cache for late-joiners (the most recent complete turn).</t>
      </section>
      <section anchor="why-separate-control-track">
        <name>Why Separate Control Track</name>
        <t>Embedding control signals in-band with media or text Objects was
considered but rejected because:</t>
        <ul spacing="normal">
          <li>
            <t>Control signals require different delivery characteristics. BARGE_IN
uses a Datagram fast path with a reliable control-track mirror, while
other turn-management signals use the reliable control track directly.</t>
          </li>
          <li>
            <t>Relays can apply priority to entire tracks but not to individual
Objects within a track.</t>
          </li>
          <li>
            <t>Subscribers may want control-only subscription (e.g., turn status
for UI state management without receiving media).</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="ack">
      <name>Acknowledgements</name>
      <t>The authors would like to thank the participants of the MoQ working
group for their contributions to the underlying transport protocol
that makes this work possible.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA919S3MbWZbePn9Fmlo0UAKgR1dP97BKNYZIqorTFKUiqCr3
VMhiAkiA2QIy0ZkJUmhSHbPxhNcTs/DS4YXX/gPezE/piPHv8PnOOfeVSFCP
KsdEmAuJBDLv49zzft1+vx/VWb1I9+OT7CqNh/M0r+PjvE7LZFJnRR4XV2kZ
Py++j5LxuEyvgufsd9NikidLGmRaJrO6v8jW/WXxJ/r/Ku0neLSfuSH7Dx9F
06Smp28Oh+dH76MJ/TEvys1+XNXTqKrLNFnux8dH58+iKFuV+3Fdrqv68cOH
f/vwcZTQt/vx3o/pOE7yqSw1T+v4vEzyalWU9V50XZRv52WxXu3Hz9NplsQv
sM7vXx0fRG/TDX073bfv9Q+x4ohmpdHeJIsip3Vt0ipaZfvxT3Ux6cUVDVqm
s4p+2yzxy+soStb1ZVHuR/0ojrO82o//MCDArOmv2XqxYFjQ73G8T0v9t//6
3/7tf//P//M//ssef5RUk4zG3vtDki/TDG/h86Kc78fDRTZOxgktbjKgz9Jl
ki3242WWFH/MBovN8j8m8gBBczKYFEs3/aGZXo7hMFml+Vw/CoY+WBTrqTd2
8m6wmK62Bo7yolwmNZ0f9vH8xffnBLL+4SBL6xkfbW3ATV+fvDhofLsoJvQ5
IL4fnz07+NuHDx/SUeazYNDRs8Zby2pGn4+ODl6dHfVfPP37o4PzUeORKp2s
y7RfjP+YTuqKnh4+HsojwDlBtVVZ0LkViz7QE29FUb/fj5MxYRZhYBSdX2ZV
TCi7XgKJp+ksy9MqTmLzYkzrjAnNFv06W6axRV3Ce4LNcp1nhLGEyNE4ra/T
NI/XVVpWjI7D45gXUSltMPoVBv0cksYdwLQ7iI7ruFqlk2yW0RIui+tY0D+j
0yN4pWWaT9K4WNerNY3ZGY7OYob8pMxWNWHkycnzuC7epnnVi87PR3GynmZF
l451RR/H9WXKZxcLvOJlMU0XPW/H9brM+3XyFtNNirwui0VkoXCd1ZfxOCnn
KaFFXK1XvHDA5qrIJh5cCpqdd58SFY0XWXVJ9ANYv8Vu1hOaBZDLrwgweJjH
AG8QWMVVWlX4fBCf04Lt/MWKhq9pqASwjZPVaqGA7y+SDYGUnpxlCwJPTptd
xcVMNot1E8Sw22y2wdYcslaE97SISTUQpFhm0+kijaJ7YAhlMV3zdqLoBNuO
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

-->

</rfc>
