<?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-mpsb-agntcy-messaging-03" category="info" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="agntcy-messaging-eco">An Overview of Messaging Systems and Their Applicability to Agentic AI</title>
    <seriesInfo name="Internet-Draft" value="draft-mpsb-agntcy-messaging-03"/>
    <author fullname="Luca Muscariello">
      <organization>Cisco</organization>
      <address>
        <email>lumuscar@cisco.com</email>
      </address>
    </author>
    <author fullname="Michele Papalini">
      <organization>Cisco</organization>
      <address>
        <email>micpapal@cisco.com</email>
      </address>
    </author>
    <author fullname="Mauro Sardara">
      <organization>Cisco</organization>
      <address>
        <email>msardara@cisco.com</email>
      </address>
    </author>
    <author fullname="Sam Betts">
      <organization>Cisco</organization>
      <address>
        <email>sambetts@cisco.com</email>
      </address>
    </author>
    <date year="2026" month="November" day="02"/>
    <keyword>AI</keyword>
    <keyword>Agentic AI</keyword>
    <keyword>Communications</keyword>
    <keyword>Realtime</keyword>
    <abstract>
      <?line 161?>

<t>Agentic AI systems require messaging infrastructure that supports real-time
collaboration, high-volume streaming, and dynamic group coordination across
distributed networks. Traditional protocols like AMQP <xref target="AMQP"/>, MQTT <xref target="MQTT"/>, and NATS <xref target="NATS"/> address
some requirements but fall short on security, particularly regarding
post-compromise protection and forward secrecy essential for autonomous
agents handling sensitive data.</t>
      <t>This document analyzes six messaging protocols—AMQP, MQTT, NATS, AMQP over
WebSockets, Kafka, and AGNTCY SLIM—across dimensions critical for GenAI agent
systems: streaming performance, delivery guarantees, security models, and
operational complexity. We examine how each protocol's design decisions impact
agentic AI deployments, from lightweight edge computing scenarios to large-scale
multi-organizational collaborations.</t>
      <t>This document also describes Agent Mesh <xref target="AgentMesh"/>, an overlay for agent
service discovery, policy enforcement, and cross-network connectivity. It
operates at the service-network layer, alongside messaging systems that provide
message delivery and session semantics.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/agntcy/slim-spec"/>.</t>
    </note>
  </front>
  <middle>
    <?line 182?>

<section anchor="conventions-and-definitions">
      <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?>

</section>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>When designing a multi-agent system for generative AI, the messaging layer
becomes a critical piece of infrastructure. GenAI agents—built with frameworks
like LangGraph, AutoGen, or LlamaIndex—often need to collaborate in real time,
exchange high volumes of streaming data (e.g., token-by-token outputs), and
coordinate complex tasks such as voting or consensus. Moreover, security
requirements extend well beyond basic TLS; in scenarios where agents share
sensitive models or partial computations, post-compromise security and robust
end-to-end encryption are essential.</t>
      <t>In practice, a designer of such systems will require a protocol that efficiently handles one-to-many or
many-to-many communication, supports dynamic membership (with agents joining or
leaving on the fly), and scales to accommodate a “forest” of agents spread
across global networks. Some protocols excel at ultra-low-latency,
high-throughput streaming—critical for continuous token streams or aggregated
embeddings—while others emphasize strong consistency and durability.
Additionally, advanced cryptographic features such as automatic key rotation and
forward secrecy are vital when compromised credentials must not enable an
attacker to decrypt future communications.</t>
      <t>Below, we compare six messaging protocols—AMQP, MQTT, NATS, AMQP over
WebSockets, Kafka, and AGNTCY SLIM (Secure Low-Latency Interactive
Messaging)—across dimensions that matter for GenAI agent systems: streaming
performance, delivery guarantees, flexible pub/sub patterns, agent coordination,
security (including end-to-end encryption and zero-trust support), and
real-world adoption.</t>
    </section>
    <section anchor="protocol-analysis-for-agentic-ai-systems">
      <name>Protocol Analysis for Agentic AI Systems</name>
      <t>The following sections provide detailed analysis of each messaging protocol in
the context of agentic AI requirements.</t>
      <section anchor="traditional-enterprise-messaging-amqp">
        <name>Traditional Enterprise Messaging: AMQP</name>
        <t>The Advanced Message Queuing Protocol (AMQP), most commonly implemented through
RabbitMQ, represents the gold standard for enterprise messaging systems. AMQP's
strength lies in its sophisticated message routing capabilities through
exchanges, queues, and routing keys, enabling complex message flow patterns
essential for enterprise applications.</t>
        <t>For agentic AI systems, AMQP offers several advantages. Its support for both
at-least-once and exactly-once delivery semantics (particularly in AMQP 1.0)
ensures reliable message delivery between AI agents, which is crucial when
agents are coordinating critical tasks or sharing expensive computational
results. The protocol's durable queue support means that agent messages can
persist across system restarts, preventing loss of important coordination data.</t>
        <t>However, AMQP's enterprise focus comes with trade-offs. The protocol carries
higher overhead due to its rich feature set, which may impact performance in
high-frequency agent communication scenarios. Streaming capabilities require
extensions like RabbitMQ Streams, adding complexity to deployments focused on
real-time agent collaboration.</t>
        <t>Authentication in AMQP relies on traditional enterprise mechanisms like SASL,
LDAP, and Kerberos, which integrate well with existing corporate identity
systems but may not align with modern cloud-native authentication patterns
preferred in AI infrastructure.</t>
      </section>
      <section anchor="iot-optimized-messaging-mqtt">
        <name>IoT-Optimized Messaging: MQTT</name>
        <t>Message Queuing Telemetry Transport (MQTT) emerged from the IoT world with a
focus on lightweight, efficient communication over constrained networks. Its
topic-based publish-subscribe model maps naturally to many agent communication
patterns, where agents subscribe to topics representing different types of
events or data streams.</t>
        <t>MQTT's three Quality of Service levels (QoS 0, 1, and 2) provide flexibility in
balancing performance versus reliability. For agentic AI systems, QoS 0
(at-most-once) works well for frequent status updates or non-critical
notifications, while QoS 2 (exactly-once) ensures critical agent coordination
messages are delivered reliably.</t>
        <t>The protocol's very low overhead makes it attractive for scenarios involving
large numbers of lightweight AI agents or edge computing deployments where
bandwidth is constrained. However, MQTT's IoT heritage shows in its limitations
for agentic AI use cases. Native streaming support requires broker extensions,
and message-level security typically relies entirely on transport-layer TLS
rather than end-to-end encryption.</t>
        <t>MQTT's authentication mechanisms, while sufficient for IoT devices, may not
provide the sophisticated identity and access management features required for
complex multi-agent AI systems involving different trust domains.</t>
      </section>
      <section anchor="cloud-native-messaging-nats">
        <name>Cloud-Native Messaging: NATS</name>
        <t>NATS represents a modern approach to messaging designed for cloud-native
architectures. Its lightweight design and support for multiple communication
patterns—publish-subscribe, request-reply, and queue groups—make it particularly
well-suited for microservices-based AI agent deployments.</t>
        <t>The protocol's core at-most-once delivery semantics align well with scenarios
where AI agents can tolerate occasional message loss in favor of high
performance. For use cases requiring stronger guarantees, NATS JetStream
provides at-least-once delivery and streaming capabilities, though this requires
additional infrastructure complexity.</t>
        <t>NATS's optional broker architecture offers interesting deployment flexibility
for agentic AI systems. While most deployments use a broker for efficiency, the
protocol can support peer-to-peer communication, potentially enabling direct
agent-to-agent communication in specialized scenarios.</t>
        <t>Authentication in NATS includes modern options like JWT tokens and NKey
cryptographic authentication, aligning better with cloud-native security
practices. However, like MQTT, NATS relies primarily on transport-layer security
rather than providing built-in end-to-end message encryption.</t>
      </section>
      <section anchor="browser-integration-amqp-over-websockets">
        <name>Browser Integration: AMQP over WebSockets</name>
        <t>AMQP over WebSockets addresses a specific deployment challenge: enabling
browser-based AI agents or user interfaces to participate in AMQP-based agent
coordination systems. This approach tunnels standard AMQP protocols through
WebSocket connections, allowing web applications to overcome firewall
restrictions and network topology limitations.</t>
        <t>For agentic AI systems that include web-based components—such as user-facing AI
assistants that need to coordinate with backend AI agents—this protocol variant
provides a bridge between browser environments and enterprise messaging
infrastructure. The WebSocket Secure (WSS) transport ensures encrypted
communication from browser to broker.</t>
        <t>However, the additional protocol layers (AMQP within WebSockets) introduce
higher overhead compared to native AMQP or other lightweight protocols. This
makes AMQP over WebSockets primarily suitable for scenarios where browser
integration is essential rather than for high-performance agent-to-agent
communication.</t>
      </section>
      <section anchor="high-throughput-streaming-apache-kafka">
        <name>High-Throughput Streaming: Apache Kafka</name>
        <t>Apache Kafka <xref target="Kafka"/> represents a fundamentally different approach to messaging, based
on distributed commit logs rather than traditional message queues. This
architecture provides exceptional throughput and built-in streaming capabilities
that align well with certain agentic AI use cases.</t>
        <t>Kafka's partition-based topic model enables massive horizontal scaling, making
it suitable for AI systems that need to process large volumes of training data,
model updates, or inference results across distributed agent networks. The
platform's native streaming capabilities through Kafka Streams and ksqlDB provide
powerful tools for real-time processing of agent-generated data.</t>
        <t>The protocol's built-in persistence across distributed clusters ensures that
agent communication history is preserved and can be replayed, which is valuable
for AI systems that need to audit agent decisions or retrain models based on
historical interactions. Consumer groups enable multiple agents to process
different partitions of the same topic concurrently, supporting parallel AI
workloads.</t>
        <t>However, Kafka's strengths come with complexity costs. The requirement for a
distributed cluster infrastructure may be overkill for simpler agent
coordination tasks. While Kafka provides exactly-once semantics through
transactions, the default at-least-once delivery may require additional
deduplication logic in agent implementations.</t>
        <t>Kafka's security model, while comprehensive, relies primarily on transport-layer
encryption and broker-based access controls rather than end-to-end message
encryption, which may not meet the security requirements of AI systems handling
sensitive model data or proprietary algorithms.</t>
      </section>
      <section anchor="next-generation-agent-messaging-slim">
        <name>Next-Generation Agent Messaging: SLIM</name>
        <t>AGNTCY SLIM <xref target="SLIM"/> (Secure Low-Latency Interactive Messaging) represents a
purpose-built protocol for modern agentic AI systems, designed to address the
specific security, performance, and coordination requirements that existing
protocols cannot fully satisfy.</t>
        <t>SLIM is intended as a transport layer for agent protocols like A2A <xref target="A2A"/>,
MCP <xref target="MCP"/>, and ACP <xref target="ACP"/>. It handles secure routing, group messaging, and
end-to-end encryption so protocol
implementations can focus on agent semantics. A registration-based model lets
agents become reachable through the SLIM network without exposing server ports,
while only routing nodes need to be publicly reachable. This simplifies
deployment for agents behind NATs and firewalls.</t>
        <t>SLIM carries Protocol Buffers messages over streaming gRPC <xref target="gRPC"/> on HTTP/2 or
over WebSocket. HTTP/2 supports multiplexed streams; latency, throughput, and
connection costs depend on the implementation, network path, and workload and
should be measured in the target deployment.</t>
        <t>SLIM is architected as a distributed system with a clear separation of
concerns:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Data plane</strong>: Routes messages across SLIM nodes using only metadata for
efficient forwarding and topology management.</t>
          </li>
          <li>
            <t><strong>Session layer</strong>: Provides reliable delivery, MLS-based end-to-end
encryption, and secure group management (create, invite, join, remove).</t>
          </li>
          <li>
            <t><strong>Control plane</strong>: Orchestrates routing nodes, configuration, and
administrative operations.</t>
          </li>
        </ul>
        <t>Routing nodes run only the data plane, keeping infrastructure lightweight,
while language bindings include the data-plane client plus the session layer
for full security and reliability.</t>
        <t>SLIM session delivery retries and acknowledgements are configurable and are not
guaranteed for every session. Applications should select and test the behavior
they require; they should not infer exactly-once processing from transport
retries. Idempotent handlers and application-level deduplication remain useful
when operations may be retried.</t>
        <t>SLIM separates hop-by-hop transport protection from optional session-layer
content protection. TLS may protect a transport hop. When MLS is enabled for a
session, application content is protected between session members while routing
nodes forward it using message metadata. Without MLS, transport security alone
does not hide content from a routing node that terminates the protected hop.</t>
        <t>Authentication and authorization use configured identity providers and session
policies. MLS group membership and identity-provider credentials serve related
but distinct purposes; deployments define how identity changes affect session
membership. Revoking an application credential does not by itself establish
that a participant has been removed from an existing MLS group.</t>
        <t>SLIM's naming system is hierarchical and DID-inspired, for example:
<tt>organization/namespace/service/instance</tt>. This supports anycast routing (to any
available instance), unicast routing (to a specific instance), and service
discovery without hardcoded endpoints or external registries. The structure maps
cleanly to organizational boundaries and multi-tenant deployments.</t>
        <t>The protocol's support for both broker-based and peer-to-peer operation offers
deployment flexibility. While broker-based operation provides efficiency for
multi-party group communications typical in agent coordination scenarios,
peer-to-peer capabilities enable direct agent-to-agent communication when
appropriate. SLIM exposes two session types that map to common agent patterns:
point-to-point sessions for tool calls and group sessions for coordination and
broadcast.</t>
        <t>SLIM provides multi-language bindings. Python and Go bindings are available
today, with JavaScript/TypeScript, C#, and Kotlin in progress, enabling
heterogeneous agent systems to interoperate on the same transport.</t>
      </section>
    </section>
    <section anchor="agent-network-overlays">
      <name>Agent-Network Overlays</name>
      <t>Agent-network overlays combine service discovery, identity, authorization, and
connectivity across networks. They operate at the service-network layer and can
work alongside messaging protocols and agent interaction protocols.</t>
      <t>Google Agent Mesh <xref target="AgentMesh"/> is a service-network overlay with a control
plane, routers, and nodes <xref target="AgentMeshDocs"/>. The control plane admits nodes,
issues credentials, distributes policy, and provides router configuration. A
node runs alongside an agent or service and connects that workload to the mesh.
Routers provide a directory for service discovery and relay traffic between
nodes when a direct connection is unavailable.</t>
      <section anchor="enrollment-and-identity">
        <name>Enrollment and Identity</name>
        <t>A node can enroll using an OpenID Connect identity token or an operator-issued
bootstrap token, and proves possession of its node key during enrollment. The
control plane issues a signed Biscuit credential containing the node identity
and authorization facts, such as roles and identity-provider claims. Nodes and
routers verify these credentials using the control plane's public key. The
control plane also holds mesh policy and distributes it to the nodes that
enforce that policy.</t>
      </section>
      <section anchor="service-discovery-and-calls">
        <name>Service Discovery and Calls</name>
        <t>Nodes publish services under typed names, including MCP, A2A, and inference
services. A node queries a router to discover the provider for a service name;
routers maintain and exchange directory records. Nodes connect directly when
network reachability permits, or use a router relay when it does not. Agent Mesh
uses libp2p for node connectivity, with QUIC or TCP transports; hole punching
can establish a direct path when the network permits it.</t>
        <t>An agent uses the local node API rather than addressing remote nodes itself.
The API includes an MCP server for discovering and calling remote tools, an
OpenAI-compatible endpoint for inference services, and proxy routes for
individual services, including A2A agents. For a service call, the connecting
node authenticates to the provider with its credential. The provider verifies
the credential and evaluates the service policy before forwarding the request
to its local backend. The caller can also verify the provider's credential and
attested labels before sending request data.</t>
        <t>The documented service-call path is point-to-point: a caller discovers one or
more providers and addresses a call to a selected provider
<xref target="AgentMeshNetworking"/>. Authorization policy can use identity groups when
deciding which peer nodes a caller may reach, but such a group is not a
multicast destination or shared message channel <xref target="AgentMeshAuthorization"/>.
Routers also distribute signed mesh-control events through gossip; those events
manage mesh state and are distinct from application messages. The documented
Agent Mesh APIs do not describe an application-level group messaging channel.</t>
      </section>
      <section anchor="transport-security-and-trust-boundaries">
        <name>Transport Security and Trust Boundaries</name>
        <t>Node-to-node connections use authenticated encrypted channels over libp2p. The
documented implementations use TLS 1.3 or Noise; routers relay encrypted traffic
when they are on the path. The control plane handles enrollment, credentials,
and policy distribution, while application requests travel between nodes. The
control plane is the trust root for credentials and mesh policy; service nodes
make the authorization decision for their hosted services.</t>
        <t>Agent Mesh describes service discovery, identity, authorization, and network
connectivity. Messaging protocols describe message delivery and session
semantics. The Agent Mesh node APIs expose MCP and A2A services to applications;
this section describes that integration boundary without treating the overlay
as a broker protocol.</t>
      </section>
    </section>
    <section anchor="security-analysis">
      <name>Security Analysis</name>
      <t>Security requirements for agentic AI systems extend well beyond the capabilities
provided by traditional messaging protocols. The autonomous nature of AI agents,
combined with their access to sensitive data and computational resources,
creates unique threat models that messaging infrastructure must address.</t>
      <t><strong>Post-Compromise Security</strong>: MLS defines forward secrecy and post-compromise
security properties for group key evolution. These properties depend on correct
MLS operation and group updates; recovery after a compromise is not automatic
merely because MLS is enabled. Deployments also need procedures to remove or
re-authenticate compromised participants.</t>
      <t><strong>Post-Quantum Cryptography</strong>: MLS does not by itself imply post-quantum
protection. The algorithms negotiated by an implementation determine whether a
deployment has classical, hybrid, or post-quantum security. The same applies to
the other systems discussed here; deployments should verify the algorithms
actually supported and enabled.</t>
      <t><strong>Multi-Domain Operations</strong>: Agentic AI systems can span organizational and
security domains. Optional MLS protection can limit intermediary access to
application content, but it does not replace identity federation, authorization,
endpoint security, or operational trust decisions.</t>
      <t><strong>Dynamic Group Membership</strong>: AI agent groups frequently change as agents join
collaborations, complete tasks, or become unavailable. MLS's efficient group
key management handles these membership changes while maintaining security
properties, unlike approaches that require complete cryptographic context
regeneration.</t>
    </section>
    <section anchor="performance-characteristics">
      <name>Performance Characteristics</name>
      <t>The performance characteristics of messaging protocols significantly impact the
behavior and capabilities of agentic AI systems, particularly as the number of
agents and frequency of interactions scale.</t>
      <t><strong>Latency Sensitivity</strong>: Many AI agent interactions are latency-sensitive.
SLIM supports streaming over HTTP/2 or WebSocket with Protocol Buffers encoding,
but protocol choice alone does not determine end-to-end latency. Implementations
should benchmark representative payloads, fan-out patterns, and network paths.</t>
      <t><strong>Throughput Requirements</strong>: Large-scale agentic AI systems may involve
thousands of agents generating substantial message volumes. While protocols
like Kafka excel at raw throughput, they may introduce latency through their
log-based architecture. SLIM balances throughput and latency through efficient
connection reuse and optional reliability levels.</t>
      <t><strong>Connection Efficiency</strong>: Traditional protocols often require separate
connections for each communication pattern or security context. SLIM's
connection multiplexing allows a single HTTP/2 connection to handle diverse
communication patterns between agents, reducing resource consumption and
connection establishment overhead.</t>
      <t><strong>Streaming Performance</strong>: AI agents frequently exchange streaming data—such as
token-by-token language model outputs or real-time sensor data. SLIM's native
gRPC streaming support over HTTP/2 provides efficient bidirectional streaming
without the overhead of connection-per-stream approaches.</t>
    </section>
    <section anchor="deployment-and-operational-considerations">
      <name>Deployment and Operational Considerations</name>
      <t>The operational characteristics of messaging protocols significantly impact the
total cost of ownership and operational complexity of agentic AI systems.</t>
      <t><strong>Infrastructure Requirements</strong>: Traditional enterprise protocols like AMQP
require broker infrastructure, while Kafka deployments typically use a
distributed cluster. SLIM deployments use a network of routing nodes; the
required topology depends on deployment scale and availability goals.</t>
      <t><strong>Monitoring and Observability</strong>: Debugging distributed agentic AI systems
requires comprehensive visibility into agent communications. SLIM's foundation
on standard HTTP/2 infrastructure enables use of existing observability tools
and practices, while proprietary protocols may require specialized monitoring
solutions.</t>
      <t><strong>Integration with Cloud Services</strong>: Modern AI deployments increasingly rely on
cloud services for scalability and managed operations. SLIM's HTTP/2 foundation
integrates naturally with cloud load balancers, API gateways, and observability
services, while specialized messaging protocols may require additional
integration layers.</t>
      <t><strong>Compliance and Auditing</strong>: Regulated deployments need explicit audit,
retention, and access-control policies. SLIM's optional session-state
persistence is not a message archive or audit log, and encryption alone does not
establish regulatory compliance.</t>
    </section>
    <section anchor="connectivity-for-agents-behind-nat">
      <name>Connectivity for Agents Behind NAT</name>
      <t>Messaging semantics and network reachability are separate concerns. An agent
that cannot accept inbound connections can still participate as a client when
it can establish an outbound connection to a reachable broker or routing node.
The established connection carries traffic in both directions, so replies and
subscribed messages can return without opening an inbound firewall port at the
agent. Long-lived connections require suitable keepalive settings and network
policy that permits egress to the service endpoint.</t>
      <t>This client-connection pattern does not, by itself, make a private agent
service directly reachable by another agent. For direct RPC to a service behind
NAT, deployments need a reachable gateway, relay, reverse connection, or
network overlay. Alternatively, the private agent can subscribe to requests on
a broker and publish replies over its existing outbound connection. The latter
uses the messaging system's request/reply conventions and requires application
logic for correlation, timeouts, retries, and authorization.</t>
      <section anchor="patterns-by-system">
        <name>Patterns by System</name>
        <t><strong>AMQP</strong>: An AMQP client initiates a TCP connection to an AMQP listener on a
broker. An agent in a private network can connect outward to a broker reachable
from that network; the broker mediates communication with other connected
clients. Where the broker is private as well, network routing, a VPN, or an
implementation-specific broker bridge is needed between the agent network and
the broker network. RabbitMQ documents separate client listeners and
inter-node ports; cluster inter-node access is an operator networking concern
and is distinct from client connectivity <xref target="RabbitMQNetworking"/>.</t>
        <t><strong>MQTT</strong>: MQTT defines the client as opening a bidirectional connection to a
server, then publishing and subscribing through that connection <xref target="MQTT"/>. This
fits devices or agents behind NAT when they can reach the broker outbound.
MQTT 5.0 supports TCP-based transports and WebSocket; a broker's WebSocket
listener can be used by browser clients, subject to the broker implementation
and its network configuration <xref target="RabbitMQWebMQTT"/>. A local MQTT broker or
bridge can aggregate clients on a private network and forward configured topic
traffic to an upstream broker.</t>
        <t><strong>NATS</strong>: Clients connect to a NATS server. For an edge network that permits
outbound connections only, a local NATS leaf node can dial a hub and bridge
subject interest and matching messages in both directions over that link. Local
agents then connect to the leaf on the private network; they do not each need a
public address or a direct connection to the hub <xref target="NATSLeaf"/>. NATS gateways
connect separate NATS clusters, while leaf nodes connect edge servers to a
hub <xref target="NATSGateway"/>.</t>
        <t><strong>Kafka</strong>: A Kafka client can initiate its connections outbound, but connecting
to the bootstrap address is not sufficient if broker metadata advertises
addresses the client cannot reach. Every broker address returned through
<tt>advertised.listeners</tt> must be reachable from the agent's network, directly or
through configured network paths such as private routing or a VPN
<xref target="KafkaListeners"/>. Kafka's broker topology is therefore an explicit part of
the connectivity design for clients in separate private networks.</t>
        <t><strong>AMQP over WebSockets</strong>: A WebSocket binding can let browser-based clients
connect through networks that permit HTTP(S) egress, when the chosen broker or
gateway implements that binding. WebSockets change how the client reaches the
service; they do not remove the need for a reachable broker endpoint or provide
an inbound route to a private agent.</t>
        <t><strong>SLIM</strong>: A SLIM endpoint can initiate a streaming gRPC connection over HTTP/2
or a WebSocket connection to an accessible routing node. Messages are then
routed by name through the interconnected routing-node network, rather than
requiring every application endpoint to expose an Internet-reachable listener.
Deployments still need reachable routing nodes and connectivity between the
routing nodes that carry the route.</t>
        <t><strong>Agent Mesh</strong>: An Agent Mesh node runs beside an agent or service and connects
to routers; nodes can communicate directly when network conditions permit and
use router relays otherwise. This lets a node behind NAT participate without
publishing its own reachable service address. Its service discovery and
authorization behavior is described in the Agent-Network Overlays section
<xref target="AgentMeshNetworking"/>.</t>
        <t>These patterns place a reachable broker, edge bridge, gateway, or router on
the network boundary and keep end-device connectivity outbound. They differ in
what that boundary component provides: message brokering, topic or subject
bridging, log access, or name-routed service connectivity. Deployments should
also account for the trust boundary at that component, connection loss and
reconnection behavior, and whether messages are buffered while an endpoint is
offline.</t>
      </section>
    </section>
    <section anchor="agent-gateways-for-inspection">
      <name>Agent Gateways for Inspection</name>
      <t>An Agent Gateway can enforce content policy when it is placed inline on a
request path and receives the application protocol in a form it can parse. For
example, a gateway between an agent and an MCP server, A2A agent, or LLM API can
inspect requests and responses, apply authorization and content guardrails, and
forward permitted traffic to a backend. Agent Gateway documents HTTP and gRPC
proxying, native MCP and A2A routing, and request/response guardrails for those
protocols <xref target="AgentGateway"/> <xref target="AgentGatewayMCP"/> <xref target="AgentGatewayLLM"/>
        <xref target="AgentGatewayA2A"/>.</t>
      <t>For inspection, the gateway must be an actual data-path hop. TLS therefore
terminates at the gateway, which establishes a separate protected connection to
the upstream service. This makes the gateway a trusted plaintext-handling
component; deployment policy should cover credential forwarding, payload
logging, redaction, audit retention, and failure behavior. A generic TCP proxy
can forward a connection, but application-level inspection requires a
protocol-aware gateway or adapter.</t>
      <section anchor="synchronous-enforcement-and-streaming">
        <name>Synchronous Enforcement and Streaming</name>
        <t>Content enforcement is an inline decision, not a passive copy of traffic. For a
request-phase check, the gateway receives and parses the request, evaluates the
policy locally or calls a policy service, and holds the request until it has a
decision. It then forwards the original or modified request, or rejects it
without contacting the backend. A response-phase check runs after the backend
returns and before the gateway releases the response to the client. Agent
Gateway documents request and response phases for MCP guardrail processors,
including pass, mutate, and deny outcomes <xref target="AgentGatewayMCP"/>.</t>
        <t>This introduces enforcement latency and may require buffering the content being
checked. Local deterministic rules can reduce this delay; remote classifiers or
policy services add their processing and network time. Deployments should set
body-size limits, timeouts, concurrency limits, and an explicit failure mode.
Fail-closed behavior preserves the policy when the checker is unavailable but
can make the service unavailable; fail-open behavior preserves availability but
allows unchecked traffic. Audit-only evaluation can help tune policies, but it
does not block or redact content.</t>
        <t>Streaming makes response enforcement different from request enforcement. A
gateway can hold a complete buffered response, inspect or redact it, and then
release it, at the cost of delaying the first response byte and storing the
response while it is checked. Alternatively, it can inspect a response stream
incrementally, but bytes already sent cannot be retracted. Agent Gateway's LLM
guardrail documentation states that streamed responses can be rejected when a
guardrail matches, but response masking does not apply to content already sent;
buffered responses support masking <xref target="AgentGatewayLLM"/>. Applications that
require redaction before any content reaches the caller therefore need buffering
or an endpoint-side policy, rather than relying on post-send inspection.</t>
        <t>The integration depends on the messaging system:</t>
        <ul spacing="normal">
          <li>
            <t><strong>HTTP-based A2A, MCP, or model APIs</strong>: Configure clients or service routing
to send requests through the gateway. The gateway can apply protocol-aware
policy before forwarding to a public or privately reachable backend.</t>
          </li>
          <li>
            <t><strong>AMQP, MQTT, NATS, or Kafka</strong>: A gateway can be placed at the client/broker
boundary, but a generic TCP listener does not interpret broker frames or
message payloads. Prompt inspection therefore requires a protocol-aware proxy,
broker extension, or application adapter. An alternative is to inspect
messages at the producer before publishing and at the consumer after delivery.</t>
          </li>
          <li>
            <t><strong>SLIM</strong>: A generic gateway attached to a routing node does not parse SLIM's
Protocol Buffers message envelope. Relay inspection requires a SLIM-aware
integration. If MLS is enabled, application content remains opaque to routing
nodes; inspect before MLS encryption at the sending endpoint, after decryption
at the receiving endpoint, or make the inspection gateway an explicitly
trusted session participant.</t>
          </li>
          <li>
            <t><strong>Agent Mesh</strong>: Agent Mesh documents an integration with Agent Gateway in
front of an <tt>agentmesh-node</tt> <xref target="AgentMeshAgentGateway"/>. The client sends its
identity-provider token to Agent Gateway. The gateway validates the token,
exchanges it at the node's <tt>/oauth/token</tt> endpoint for a caller-bound mesh
credential, then forwards the request to the node's <tt>/mesh/&lt;peer-id&gt;/&lt;type&gt;/&lt;name&gt;/</tt>
proxy with that credential. The node connects to the selected mesh provider,
and the provider node enforces its service policy. This places supported
application-layer checks at Agent Gateway before the request enters the mesh
and before the response returns to the client.  </t>
            <t>
The gateway is not inserted into the Agent Mesh router's relay or peer-link
path. Those links carry authenticated encrypted traffic, whether relayed or
direct, and are not readable by a gateway attached only to a router. To make
gateway policy mandatory, clients must use the gateway-facing endpoint rather
than bypassing it and calling a node API directly.</t>
          </li>
        </ul>
        <t>Colocating an Agent Gateway with a relay does not by itself enable inspection:
the gateway must terminate or receive the application-level plaintext, and the
system must route every applicable path through it. If end-to-end encryption is
required, inspection belongs at a trusted endpoint or authorized group member;
adding an intermediary that can decrypt changes the trust model.</t>
      </section>
    </section>
    <section anchor="rpc-in-agentic-protocols-and-relationship-to-messaging">
      <name>RPC in Agentic Protocols and Relationship to Messaging</name>
      <t>Agentic AI systems are predominantly built around Remote Procedure Call
(RPC)-oriented protocols. A2A <xref target="A2A"/>, the Model Context Protocol (MCP) <xref target="MCP"/>,
and the Agent Client Protocol (ACP) <xref target="ACP"/> all expose synchronous
request/response semantics: a caller issues a structured request, awaits a
response within a bounded time, and receives an explicit result or error. This
design provides well-defined interfaces, typed contracts, and composable error
handling that make agents discoverable and interoperable across heterogeneous
systems.</t>
      <t>However, pure point-to-point RPC does not scale to all coordination demands of
multi-agent systems. Fan-out invocations, asynchronous event delivery, streaming
responses, dynamic group membership, and multi-domain security are capabilities
that RPC protocols delegate to the underlying transport. This section examines
how RPC and messaging interoperate in agentic systems, and how SLIM's SRPC
capability provides a purpose-built solution.</t>
      <section anchor="agentic-protocols-are-rpc-oriented">
        <name>Agentic Protocols Are RPC-Oriented</name>
        <t>The three leading agentic coordination protocols each define an RPC-based
interaction model:</t>
        <t><strong>Model Context Protocol (MCP)</strong> defines a JSON-RPC interface between LLM hosts
and tools or resources. A host invokes tools by name with typed parameters and
receives typed results or streaming token outputs. MCP is designed for
synchronous tool calls with optional server-side streaming for partial results.</t>
        <t><strong>Agent2Agent (A2A)</strong> is an HTTP-based protocol for delegating tasks between
agents. An orchestrator submits task requests to worker agents and receives
structured results or a stream of progress events. Agent capabilities are
advertised via Agent Cards, enabling dynamic discovery without pre-configuration.</t>
        <t><strong>Agent Client Protocol (ACP)</strong> standardizes JSON-RPC communication between
code editors and coding agents, operating over stdio for local agents or HTTP
and WebSocket for remote agents. It enables editors to invoke coding agents and
receive structured responses, following a pattern analogous to the Language
Server Protocol for language tools.</t>
        <t>All three share a fundamental structure: a caller invokes a named callee with
parameters and awaits a response within a bounded time. SLIM is designed to
serve as the transport layer beneath all three.</t>
      </section>
      <section anchor="rpc-vs-messaging-synchronous-vs-asynchronous">
        <name>RPC vs. Messaging: Synchronous vs. Asynchronous</name>
        <ul spacing="normal">
          <li>
            <t><strong>RPC (A2A, MCP, ACP)</strong>: The caller issues a request and blocks or awaits a
timely response. Semantics emphasize tightly scoped operations with bounded
latency and explicit error contracts.</t>
          </li>
          <li>
            <t><strong>Messaging (AMQP, MQTT, NATS, Kafka, SLIM)</strong>: Decoupled producers and
consumers communicate via topics, subjects, or queues. Delivery can be
one-to-one, one-to-many, or many-to-many, with loose coupling, buffering,
and retries. Producers are not inherently blocked by consumers.</t>
          </li>
        </ul>
        <t>In practice, agentic applications need both: synchronous tool invocations for
interactivity and asynchronous channels for streaming output, progress,
coordination, and fan-out/fan-in patterns.</t>
      </section>
      <section anchor="challenges-of-running-rpc-over-messaging">
        <name>Challenges of Running RPC over Messaging</name>
        <t>Layering RPC semantics onto an asynchronous messaging substrate introduces
several non-trivial challenges:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Request/response correlation</strong>: Messaging systems are decoupled by design
and provide no direct return path. Implementing RPC requires correlating
requests and responses using unique identifiers and temporary reply channels.</t>
          </li>
          <li>
            <t><strong>Latency and ordering</strong>: Messaging layers may introduce variable delivery
latency and do not guarantee strict ordering, which can conflict with
synchronous RPC contracts.</t>
          </li>
          <li>
            <t><strong>Error propagation</strong>: Messaging systems may buffer, retry, or drop messages,
making it difficult to propagate errors and timeouts in a way that matches
RPC error contracts.</t>
          </li>
          <li>
            <t><strong>Streaming and multiplexing</strong>: Supporting streaming RPC (server streaming,
client streaming, bidirectional) over messaging requires careful management
of stream lifecycles, backpressure, and multiplexing multiple logical RPCs
over shared channels.</t>
          </li>
          <li>
            <t><strong>Security and authorization</strong>: Ensuring that only authorized callers can
invoke specific methods, and that all messages are authenticated and
encrypted end-to-end, is more complex in a distributed, group-based
messaging environment.</t>
          </li>
        </ul>
        <t>SRPC resolves all of these challenges natively, as described below.</t>
      </section>
      <section anchor="when-asynchronous-feels-synchronous">
        <name>When Asynchronous Feels Synchronous</name>
        <t>Asynchronous transports can provide an interactive, RPC-like experience when:</t>
        <ul spacing="normal">
          <li>
            <t>A request message carries a correlation ID and a reply-to destination.</t>
          </li>
          <li>
            <t>The callee publishes a response to the reply destination within a short SLA.</t>
          </li>
          <li>
            <t>Client libraries surface responses as futures or promises and manage
timeouts and retries.</t>
          </li>
        </ul>
        <t>This pattern underpins agent UIs where a user triggers an action and expects
prompt, possibly streaming, results.</t>
      </section>
      <section anchor="bridging-patterns-rpc-over-messaging">
        <name>Bridging Patterns: RPC over Messaging</name>
        <ul spacing="normal">
          <li>
            <t><strong>Request/Reply over Pub/Sub</strong>: Implement RPC by publishing a command event
and awaiting a correlated reply event (applicable to AMQP, NATS, MQTT, and
SLIM topics).</t>
          </li>
          <li>
            <t><strong>Streaming RPC</strong>: Use bidirectional streams (gRPC over SLIM HTTP/2/3) to
deliver token streams, partial results, or progress updates while retaining
an RPC caller experience.</t>
          </li>
          <li>
            <t><strong>Sagas and CQRS</strong>: For multi-step workflows across agents, coordinate via
asynchronous orchestration with idempotency keys, correlation/causation IDs,
and compensating transactions.</t>
          </li>
          <li>
            <t><strong>Backpressure and Flow Control</strong>: Prefer streaming transports (HTTP/2/3,
gRPC) or messaging systems with flow control when returning large or
continuous results.</t>
          </li>
        </ul>
      </section>
      <section anchor="slim-rpc-srpc">
        <name>SLIM RPC (SRPC)</name>
        <t>SRPC layers request/response semantics directly onto SLIM's secure messaging
fabric, addressing all of the challenges enumerated above:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Correlation and reply routing</strong>: SRPC manages correlation IDs and reply
channel lifecycle automatically, with no application-level plumbing required.</t>
          </li>
          <li>
            <t><strong>Idempotency and deduplication</strong>: SRPC idempotency keys make retries safe
without duplicating side effects.</t>
          </li>
          <li>
            <t><strong>Ordering and synchronization</strong>: Lightweight ordering guarantees for both
request/response and streaming patterns.</t>
          </li>
          <li>
            <t><strong>All four gRPC interaction patterns</strong>: Unary, server streaming, client
streaming, and bidirectional streaming are all supported, enabling direct
mapping of A2A, MCP, and ACP interaction models onto SLIM.</t>
          </li>
          <li>
            <t><strong>Integrated security</strong>: Every SRPC call inherits SLIM's MLS end-to-end
encryption and OAuth-based authorization without additional configuration.</t>
          </li>
        </ul>
        <t>See the SRPC specification for details <xref target="SRPC"/>.</t>
      </section>
      <section anchor="advantages-of-slim-for-agentic-protocols">
        <name>Advantages of SLIM for Agentic Protocols</name>
        <t>SLIM augments the point-to-point RPC model of A2A, MCP, and ACP with
capabilities that are difficult to achieve over plain request/response transports:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Scatter-gather RPC</strong>: Invoke a single RPC across many agents simultaneously
(by topic, group, or label) and aggregate responses (first-success, quorum,
or all-success) using correlation IDs.</t>
          </li>
          <li>
            <t><strong>Group addressing and dynamic membership</strong>: Target MLS-secured groups; add
or remove agents without reconfiguring endpoints or updating caller code.</t>
          </li>
          <li>
            <t><strong>Streaming responses</strong>: Return partial results or token streams from each
agent over a single multiplexed connection.</t>
          </li>
          <li>
            <t><strong>Idempotency and safe retries</strong>: SRPC idempotency keys enable robust retry
without duplicating effects—critical for expensive or stateful agent
operations.</t>
          </li>
          <li>
            <t><strong>QoS, deadlines, and backpressure</strong>: Apply delivery guarantees, per-call
timeouts, and flow control to avoid overload while maintaining interactivity.</t>
          </li>
          <li>
            <t><strong>End-to-end security</strong>: MLS encryption and OAuth-based policy apply
uniformly across both RPC and messaging channels.</t>
          </li>
          <li>
            <t><strong>Observability</strong>: Correlation and causation IDs, combined with standard
HTTP/2 transport, enable distributed tracing and per-agent metrics with
existing tooling.</t>
          </li>
        </ul>
        <t>These capabilities let A2A, MCP, and ACP interactions scale beyond one-to-one
invocations, enabling broadcast queries, coordinated multi-agent actions, and
efficient collection of results in real time.</t>
      </section>
      <section anchor="security-implications">
        <name>Security Implications</name>
        <ul spacing="normal">
          <li>
            <t><strong>Unified identity</strong>: OAuth tokens are reused across RPC calls and messaging
channels for consistent policy enforcement. An agent's identity and
authorization scope apply uniformly to tool calls and subscription channels.</t>
          </li>
          <li>
            <t><strong>End-to-end encryption</strong>: MLS-backed channels ensure that RPC requests,
responses, and streaming payloads are encrypted end-to-end, independently
of transport hops. Routing nodes cannot inspect RPC call content.</t>
          </li>
          <li>
            <t><strong>Caller authentication</strong>: SRPC carries MLS group membership proofs with
each call, allowing callees to verify that the caller is an authorized group
member before executing the requested operation.</t>
          </li>
        </ul>
      </section>
      <section anchor="guidance-when-to-choose-what">
        <name>Guidance: When to Choose What</name>
        <ul spacing="normal">
          <li>
            <t>Use <strong>RPC (A2A, MCP, ACP)</strong> for low-latency point operations with immediate
feedback and well-defined error contracts.</t>
          </li>
          <li>
            <t>Use <strong>Messaging</strong> for broadcast/fan-out, decoupling, retries, buffering,
and multi-party coordination.</t>
          </li>
          <li>
            <t>Use <strong>SRPC over SLIM</strong> for any of the above when end-to-end security,
scatter-gather invocation, streaming responses, or multi-organization
deployment is required.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="comparison">
      <name>Comparison</name>
      <t>Table 1 provides a detailed comparison of three popular messaging protocols commonly considered for agent communication systems:</t>
      <table>
        <thead>
          <tr>
            <th align="left">Feature</th>
            <th align="left">AMQP (e.g. RabbitMQ)</th>
            <th align="left">MQTT</th>
            <th align="left">NATS</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">
              <strong>Protocol Type</strong></td>
            <td align="left">Message queueing (queues/exchanges)</td>
            <td align="left">Lightweight pub/sub for IoT</td>
            <td align="left">Lightweight messaging (pub/sub, req/reply, queue groups)</td>
          </tr>
          <tr>
            <td align="left">
              <strong>Transport</strong></td>
            <td align="left">TCP (optionally TLS)</td>
            <td align="left">TCP (optionally TLS)</td>
            <td align="left">TCP (optionally TLS)</td>
          </tr>
          <tr>
            <td align="left">
              <strong>Message Model</strong></td>
            <td align="left">Queues, exchanges, routing keys</td>
            <td align="left">Topic-based</td>
            <td align="left">Subjects (pub/sub), queue groups, request/reply</td>
          </tr>
          <tr>
            <td align="left">
              <strong>QoS / Delivery</strong></td>
            <td align="left">At-least-once, exactly-once (AMQP 1.0)</td>
            <td align="left">QoS 0 (at-most-once), 1, 2 (exactly-once)</td>
            <td align="left">At-most-once (core), at-least-once with JetStream</td>
          </tr>
          <tr>
            <td align="left">
              <strong>Streaming</strong></td>
            <td align="left">Via extensions/plugins (e.g. RabbitMQ Streams)</td>
            <td align="left">Not native (requires broker extensions)</td>
            <td align="left">Native with JetStream</td>
          </tr>
          <tr>
            <td align="left">
              <strong>Persistence</strong></td>
            <td align="left">Yes (durable queues)</td>
            <td align="left">Broker-dependent</td>
            <td align="left">Optional via JetStream</td>
          </tr>
          <tr>
            <td align="left">
              <strong>Protocol Overhead</strong></td>
            <td align="left">Higher (rich feature set)</td>
            <td align="left">Very low</td>
            <td align="left">Very low</td>
          </tr>
          <tr>
            <td align="left">
              <strong>Broker Required</strong></td>
            <td align="left">Yes</td>
            <td align="left">Yes</td>
            <td align="left">Optional (but common)</td>
          </tr>
          <tr>
            <td align="left">
              <strong>Authentication</strong></td>
            <td align="left">User/password, SASL (e.g., LDAP, Kerberos)</td>
            <td align="left">Username/password or custom tokens</td>
            <td align="left">NKey, JWT, token, user/password</td>
          </tr>
          <tr>
            <td align="left">
              <strong>Transport Security</strong></td>
            <td align="left">TLS</td>
            <td align="left">TLS</td>
            <td align="left">TLS</td>
          </tr>
          <tr>
            <td align="left">
              <strong>Message Security</strong></td>
            <td align="left">Typically broker-level or plugin-based encryption</td>
            <td align="left">Usually none at message level; rely on TLS</td>
            <td align="left">None in core (TLS in transit), JetStream can encrypt at rest</td>
          </tr>
          <tr>
            <td align="left">
              <strong>Binary or Text</strong></td>
            <td align="left">Binary framing</td>
            <td align="left">Binary framing</td>
            <td align="left">Text-based protocol (core), binary clients available</td>
          </tr>
          <tr>
            <td align="left">
              <strong>Use Cases</strong></td>
            <td align="left">Enterprise messaging, financial transactions, RPC</td>
            <td align="left">IoT, mobile, sensor networks</td>
            <td align="left">Cloud-native microservices, real-time communications</td>
          </tr>
          <tr>
            <td align="left">
              <strong>Real-World Usage</strong></td>
            <td align="left">Very widely used via RabbitMQ (top open-source broker) in enterprises of all sizes</td>
            <td align="left">Dominant in IoT ecosystems; supported by many device/broker vendors</td>
            <td align="left">Gaining traction in cloud-native (CNCF project), used by major tech companies</td>
          </tr>
        </tbody>
      </table>
      <t>Table 2 extends the comparison to include additional protocols relevant to modern agentic AI systems:</t>
      <table>
        <thead>
          <tr>
            <th align="left">Feature</th>
            <th align="left">AMQP over WebSockets</th>
            <th align="left">Kafka</th>
            <th align="left">SLIM</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">
              <strong>Protocol Type</strong></td>
            <td align="left">AMQP tunneled through WebSockets</td>
            <td align="left">Distributed commit log, high-throughput pub/sub</td>
            <td align="left">Secure low-latency interactive messaging</td>
          </tr>
          <tr>
            <td align="left">
              <strong>Transport</strong></td>
            <td align="left">WebSockets over TLS</td>
            <td align="left">TCP (optionally TLS)</td>
            <td align="left">Streaming gRPC over HTTP/2 or WebSocket</td>
          </tr>
          <tr>
            <td align="left">
              <strong>Message Model</strong></td>
            <td align="left">Same as AMQP (depends on the broker's AMQP model)</td>
            <td align="left">Topics with partitions, consumer groups, offset-based consumption</td>
            <td align="left">Hierarchical names (<tt>org/namespace/service/instance</tt>), point-to-point and group sessions</td>
          </tr>
          <tr>
            <td align="left">
              <strong>QoS / Delivery</strong></td>
            <td align="left">Same as AMQP</td>
            <td align="left">At-least-once default; exactly-once possible via transactions</td>
            <td align="left">Configurable retries and acknowledgements; not guaranteed for every session</td>
          </tr>
          <tr>
            <td align="left">
              <strong>Streaming</strong></td>
            <td align="left">Same as AMQP if broker supports streaming</td>
            <td align="left">Native log-based streaming (Kafka Streams, ksqlDB, etc.)</td>
            <td align="left">Native gRPC support via HTTP/2/3 client streaming, server streaming</td>
          </tr>
          <tr>
            <td align="left">
              <strong>Persistence</strong></td>
            <td align="left">Same as AMQP</td>
            <td align="left">Built-in: messages persist on disk across clusters</td>
            <td align="left">Not supported</td>
          </tr>
          <tr>
            <td align="left">
              <strong>Protocol Overhead</strong></td>
            <td align="left">Higher (AMQP + WebSockets handshake)</td>
            <td align="left">Moderate (custom binary protocol, but optimized for high throughput)</td>
            <td align="left">Low: binary Protocol Buffers wire format; native support for both binary (bytes) and text payloads</td>
          </tr>
          <tr>
            <td align="left">
              <strong>Broker Required</strong></td>
            <td align="left">Yes</td>
            <td align="left">Yes (distributed cluster)</td>
            <td align="left">Routed through SLIM nodes; topology is deployment-specific</td>
          </tr>
          <tr>
            <td align="left">
              <strong>Authentication</strong></td>
            <td align="left">Same as AMQP (broker-based)</td>
            <td align="left">SASL/PLAIN, SASL/SCRAM, Kerberos, OAuth</td>
            <td align="left">Configured identity providers and session policies</td>
          </tr>
          <tr>
            <td align="left">
              <strong>Transport Security</strong></td>
            <td align="left">WSS (WebSocket Secure)</td>
            <td align="left">TLS</td>
            <td align="left">TLS</td>
          </tr>
          <tr>
            <td align="left">
              <strong>Message Security</strong></td>
            <td align="left">Same as AMQP (depends on the broker's encryption at rest/in-transit)</td>
            <td align="left">TLS in-flight encryption, optional at-rest encryption (broker config)</td>
            <td align="left">Optional MLS end-to-end content protection, independent of transport</td>
          </tr>
          <tr>
            <td align="left">
              <strong>Binary or Text</strong></td>
            <td align="left">Binary AMQP frames over WebSockets</td>
            <td align="left">Binary protocol (common payloads: Avro, JSON, Protobuf)</td>
            <td align="left">Binary or Text</td>
          </tr>
          <tr>
            <td align="left">
              <strong>Use Cases</strong></td>
            <td align="left">Browser-based apps needing AMQP behind firewalls</td>
            <td align="left">High-throughput data pipelines, streaming analytics, event sourcing</td>
            <td align="left">Group messaging, one-to-many, many-to-many, cloud-native microservices, real-time communications, streaming</td>
          </tr>
          <tr>
            <td align="left">
              <strong>Real-World Usage</strong></td>
            <td align="left">Less common, mainly for browser/firewall scenarios using RabbitMQ or similar</td>
            <td align="left">Extremely widespread across industries; de facto standard for large-scale event streaming</td>
            <td align="left">New entrant; reference implementations in Python and Go available; early production deployments</td>
          </tr>
        </tbody>
      </table>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This document is an informational comparison of messaging protocols for agentic
AI systems. Security properties specific to each protocol are discussed in the
Security Analysis section of this document. Readers deploying any
of the protocols described <bcp14>SHOULD</bcp14> consult the security considerations sections
of the respective protocol specifications.</t>
      <t>Among the systems analyzed, SLIM explicitly integrates optional MLS-based
end-to-end protection for session content. The other protocols and systems do
not provide that same integrated MLS model, although applications can add
message-level encryption or other end-to-end protections. Transport-layer TLS
alone protects a hop and does not hide content from an intermediary that
terminates that hop.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="AMQP" target="https://www.oasis-open.org/standards#amqp">
          <front>
            <title>OASIS Advanced Message Queuing Protocol (AMQP) 1.0 Specification</title>
            <author initials="" surname="OASIS" fullname="OASIS">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="MQTT" target="https://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.html">
          <front>
            <title>OASIS MQTT Version 5.0 Specification</title>
            <author initials="" surname="OASIS" fullname="OASIS">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="NATS" target="https://docs.nats.io/">
          <front>
            <title>NATS Documentation</title>
            <author initials="S." surname="Communications" fullname="Synadia Communications">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="Kafka" target="https://kafka.apache.org/documentation/">
          <front>
            <title>Apache Kafka Documentation</title>
            <author initials="A. S." surname="Foundation" fullname="Apache Software Foundation">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RabbitMQNetworking" target="https://www.rabbitmq.com/docs/networking">
          <front>
            <title>Networking and RabbitMQ</title>
            <author initials="" surname="Broadcom" fullname="Broadcom">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RabbitMQWebMQTT" target="https://www.rabbitmq.com/docs/web-mqtt">
          <front>
            <title>RabbitMQ Web MQTT Plugin</title>
            <author initials="" surname="Broadcom" fullname="Broadcom">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="NATSLeaf" target="https://docs.nats.io/learn/topologies/leaf-nodes">
          <front>
            <title>NATS Leaf Nodes</title>
            <author initials="S." surname="Communications" fullname="Synadia Communications">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="NATSGateway" target="https://docs.nats.io/learn/topologies/super-clusters">
          <front>
            <title>NATS Super-clusters</title>
            <author initials="S." surname="Communications" fullname="Synadia Communications">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="KafkaListeners" target="https://kafka.apache.org/44/configuration/broker-configs/#brokerconfigs_advertised.listeners">
          <front>
            <title>Kafka Broker Configs: Listeners</title>
            <author initials="A. S." surname="Foundation" fullname="Apache Software Foundation">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="gRPC" target="https://grpc.io/docs/">
          <front>
            <title>gRPC Documentation</title>
            <author initials="" surname="CNCF" fullname="CNCF">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="SLIM" target="https://spec.slim.agntcy.org">
          <front>
            <title>AGNTCY SLIM Specification</title>
            <author initials="" surname="AGNTCY" fullname="AGNTCY">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="A2A" target="https://google.github.io/A2A/">
          <front>
            <title>Agent2Agent (A2A) Protocol</title>
            <author initials="" surname="Google" fullname="Google">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="MCP" target="https://modelcontextprotocol.io/">
          <front>
            <title>Model Context Protocol (MCP) Specification</title>
            <author initials="" surname="Anthropic" fullname="Anthropic">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="AgentMesh" target="https://github.com/google/agentmesh">
          <front>
            <title>Agent Mesh</title>
            <author initials="" surname="Google" fullname="Google">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="AgentMeshDocs" target="https://google.github.io/agentmesh/docs/concepts/architecture/">
          <front>
            <title>Agent Mesh Architecture Documentation</title>
            <author initials="" surname="Google" fullname="Google">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="AgentMeshNetworking" target="https://google.github.io/agentmesh/docs/concepts/networking/">
          <front>
            <title>Agent Mesh Networking and Node API</title>
            <author initials="" surname="Google" fullname="Google">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="AgentMeshAuthorization" target="https://google.github.io/agentmesh/docs/concepts/authorization/">
          <front>
            <title>Agent Mesh Authorization</title>
            <author initials="" surname="Google" fullname="Google">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="AgentMeshAgentGateway" target="https://google.github.io/agentmesh/docs/guides/agentgateway/">
          <front>
            <title>Agent Mesh: Agent Gateway Integration</title>
            <author initials="" surname="Google" fullname="Google">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="AgentGateway" target="https://agentgateway.dev/">
          <front>
            <title>Agent Gateway</title>
            <author initials="A." surname="Project" fullname="Agentgateway Project">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="AgentGatewayMCP" target="https://agentgateway.dev/docs/standalone/latest/documentation/mcp/guardrails/">
          <front>
            <title>Agent Gateway MCP Guardrails</title>
            <author initials="A." surname="Project" fullname="Agentgateway Project">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="AgentGatewayLLM" target="https://agentgateway.dev/docs/standalone/latest/documentation/llm/prompt-guards/">
          <front>
            <title>Agent Gateway LLM Guardrails</title>
            <author initials="A." surname="Project" fullname="Agentgateway Project">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="AgentGatewayA2A" target="https://agentgateway.dev/docs/standalone/latest/documentation/agent/a2a/">
          <front>
            <title>Agent Gateway A2A Gateway</title>
            <author initials="A." surname="Project" fullname="Agentgateway Project">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="SRPC" target="https://github.com/agntcy/slim/blob/main/data-plane/slimrpc-compiler/README.md">
          <front>
            <title>SLIM RPC (SRPC) Reference</title>
            <author initials="" surname="AGNTCY" fullname="AGNTCY">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="ACP" target="https://agentclientprotocol.com/get-started/introduction">
          <front>
            <title>Agent Client Protocol (ACP)</title>
            <author initials="A. C. P." surname="Community" fullname="Agent Client Protocol Community">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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
PRnofwMdqdMtQswAAA==

-->

</rfc>
