<?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.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-liu-moq-live-agent-interaction-02" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="Live Agent over MoQ">Live Agent Interaction over MoQ</title>
    <seriesInfo name="Internet-Draft" value="draft-liu-moq-live-agent-interaction-02"/>
    <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                          |
+-----------------+--------+--------------------------------------+
| status          | uint8  | 0x01=invocation, 0x02=result,        |
|                 |        | 0x04=error                           |
| metadata_flags  | uint8  | 0x01=authorization_required,         |
|                 |        | 0x02=authorization_ref_present       |
| tool_id         | varint | Tool/function identifier             |
| call_id         | varint | Unique call/action instance          |
| metadata_length | varint | Length of metadata in bytes          |
| metadata        | bytes  | JSON-encoded action metadata         |
| payload         | bytes  | JSON-encoded tool call or result     |
+-----------------+--------+--------------------------------------+
]]></artwork>
          </figure>
          <t>The <tt>metadata</tt> field is an extension point for action-level metadata. If
<tt>metadata_length</tt> is zero, no metadata is present. When the
<tt>authorization_ref_present</tt> bit is set, <tt>metadata</tt> <bcp14>MUST</bcp14> include an
authorization reference that identifies the authorization artifact for
the action identified by <tt>tool_id</tt> and <tt>call_id</tt>.</t>
        </section>
        <section anchor="tool-authorization">
          <name>Tool Action Authorization</name>
          <t>Tool results can be purely informational, or they can correspond to
consequential actions such as payments, permission changes, or bookings.
When a tool action requires per-action authorization, the agent <bcp14>MUST</bcp14> keep
the authorization artifact transport-agnostic and use this profile only
to define its MOQT carriage and correlation.</t>
          <t>If authorization is required before completing a tool action, the agent
<bcp14>MUST</bcp14> publish a reliable <tt>AUTH_REQUIRED</tt> control signal on <tt>control/agent</tt>
and <bcp14>SHOULD</bcp14> publish a Tool Output Object with the
<tt>authorization_required</tt> metadata flag set. The corresponding control
payload identifies the pending action:</t>
          <figure anchor="fig-auth-control-payload">
            <name>Authorization Control Payload</name>
            <artwork><![CDATA[
Authorization Control Payload:
+-----------------+--------+--------------------------------------+
| Field           | Type   | Description                          |
+-----------------+--------+--------------------------------------+
| tool_id         | varint | Tool/function identifier             |
| call_id         | varint | Tool call/action instance            |
| artifact_length | varint | Length of artifact in bytes          |
| artifact        | bytes  | Challenge, reference, or receipt     |
+-----------------+--------+--------------------------------------+
]]></artwork>
          </figure>
          <t>The user endpoint or authorizing component can answer with an
<tt>AUTH_RECEIPT</tt> control signal on <tt>control/user</tt> using the same payload
format. The <tt>artifact</tt> field is opaque to this profile; it can carry an
offline-verifiable receipt, a challenge reference, or another
application-defined authorization artifact. Subscribers correlate the
authorization artifact with the tool action using <tt>tool_id</tt> and
<tt>call_id</tt>; no separate authorization track is required by this profile.</t>
        </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 complete status records. The subscriber
<bcp14>MUST NOT</bcp14> discard tool results due to lateness. <tt>AUTH_REQUIRED</tt> and
<tt>AUTH_RECEIPT</tt> control signals <bcp14>MUST</bcp14> be delivered reliably.</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)
  0x08 = AUTH_REQUIRED    (agent → user)
  0x09 = AUTH_RECEIPT     (user → agent)
]]></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>
            <tr>
              <td align="left">0x08</td>
              <td align="left">AUTH_REQUIRED</td>
              <td align="left">
                <xref target="tool-authorization"/></td>
            </tr>
            <tr>
              <td align="left">0x09</td>
              <td align="left">AUTH_RECEIPT</td>
              <td align="left">
                <xref target="tool-authorization"/></td>
            </tr>
          </tbody>
        </table>
        <t>Values 0x0A-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="8" month="September" 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-21"/>
        </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="20" month="July" 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-04"/>
        </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="6" month="July" 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-01"/>
        </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 1117?>

<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:
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
5qzKAAA=

-->

</rfc>
