<?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.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-mpsb-agntcy-slim-00" category="info" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.30.2 -->
  <front>
    <title abbrev="agent-slim">Secure Low-Latency Interactive Messaging (SLIM)</title>
    <seriesInfo name="Internet-Draft" value="draft-mpsb-agntcy-slim-00"/>
    <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="2025" month="October" day="16"/>
    <workgroup>Independent Submission</workgroup>
    <keyword>AI</keyword>
    <keyword>Agentic AI</keyword>
    <keyword>Communications</keyword>
    <keyword>Realtime</keyword>
    <abstract>
      <?line 87?>

<t>This document specifies the Secure Low-Latency Interactive Real-Time Messaging
(SLIM), a protocol designed to support real-time interactive AI applications at
scale. SLIM leverages gRPC and adds publish-subscribe capabilities to enable
efficient many-to-many communication patterns between AI agentic applications
(AI models, tools and data). The protocol provides mechanisms for connection
management, stream multiplexing, and flow control while maintaining
compatibility with existing gRPC deployments.</t>
    </abstract>
  </front>
  <middle>
    <?line 97?>

<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>
      <section anchor="summary">
        <name>Summary</name>
        <t>The Secure Low-Latency Interactive Messaging (SLIM) protocol addresses the
unique communication requirements of modern AI agentic applications by providing
a secure, scalable, and efficient messaging infrastructure. SLIM combines the
reliability and performance of gRPC with publish-subscribe messaging
capabilities, creating a comprehensive solution for interactive AI application
communication.</t>
        <t>At its core, SLIM consists of three primary components: messaging nodes that
serve as intelligent message queues, message producers that publish encrypted
content, and message consumers that subscribe to and receive messages. The
protocol leverages Message Layer Security (MLS) for end-to-end encryption,
ensuring that messages remain confidential even when passing through
intermediate nodes or experiencing TLS termination along the communication path.</t>
        <t>The architecture is built around a distributed network of messaging nodes, each
maintaining connection and subscription tables to enable efficient message
routing.  A centralized control plane orchestrates the entire system, handling
node discovery, configuration management, security policies, and system
monitoring. This separation of control and data planes allows for scalable
deployment while maintaining centralized administrative control.</t>
        <t>SLIM employs a hierarchical naming system based on Decentralized Identifiers
(DIDs) to ensure globally unique, secure, and routable channel names. This
naming scheme supports both decentralized and federated authentication models,
enabling flexible deployment across different organizational boundaries while
maintaining security and interoperability.</t>
        <t>The protocol includes a session layer that abstracts the complexity of MLS
operations and messaging infrastructure from applications, providing simple
publish-subscribe APIs and native Remote Procedure Call (RPC) semantics via SRPC
(SLIM RPC). SRPC enables request/response and streaming RPC directly over SLIM's
secure messaging fabric (see <xref target="SRPC"/>), while handling authentication,
encryption, connection management, and fault recovery automatically. This design
enables developers to focus on application logic rather than the underlying
messaging complexities.</t>
        <t>Security is fundamental to SLIM's design, with authentication and authorization
handled through MLS groups, cryptographic client identities, and configurable
access policies. The protocol supports deployment in various environments, from
data center workloads and mobile applications, while maintaining
consistent security guarantees and low-latency performance characteristics.</t>
      </section>
    </section>
    <section anchor="protocol-overview">
      <name>Protocol Overview</name>
      <t>SLIM is designed to work as a messaging layer for applications running as
workloads in a data center, but also running in a browser or mobile device while
guaranteeing end-to-end security and low-latency communication. SLIM leverages
HTTP/2 end to end as a thin waist of the communication stack and avoids the need
to create message transcoding along the path. By leveraging message encryption
via MLS <xref target="RFC9420"/> <xref target="RFC9750"/>, TLS connection termination along the path
does not negatively affect confidentiality. Authentication and authorization are
handled at the application level and can be managed in a decentralized or
federated way or a mix of both.</t>
      <t>In SLIM there are three main communication elements: intermediate nodes equipped
with message queues, message producers and message consumers.</t>
      <t>A producer (also called a "publisher") is an endpoint that encapsulates content
in SLIM messages for transport within the SLIM message network of nodes. A
producer <bcp14>MUST</bcp14> belong to an MLS group to encrypt messages that can be decrypted
by message consumers who are members of the same group, as specified by the MLS
protocol. Once a SLIM message is encrypted, it can be published under a routable
name, which is human-readable and hierarchical. This routable channel name is
used by intermediate nodes to store and forward messages within the same
channel, allowing consumers to retrieve messages using this name.</t>
      <t>A routable name is a name prefix that is stored in a forwarding table (FIB).
This enables requests to reach the producer and fetch a response, if one exists.</t>
      <figure anchor="fig-general-arch">
        <name>Main components of the SLIM architecture.</name>
        <artwork><![CDATA[
 +-------------+         +---------------------+         +-------------+
 | Producer 1  |         |                     |         | Consumer 1  |
 +-------------+         |   Messaging Node    |         +-------------+
                         |                     |<------->| Consumer 2  |
 +-------------+         |                     |         +-------------+
 | Producer 2  |-------->|                     |<------->| Consumer 3  |
 +-------------+         +---------------------+         +-------------+

          |                        ^   ^   ^
          |                        |   |   |
          |                        |   |   |
          |                        |   |   |
          v                        |   |   |
 +------------------------+        |   |   |
 | MLS Authentication     |<-------+---+---+
 | Service                |
 +------------------------+

 Legend:
 - Producers publish to topics at the Messaging Node.
 - Consumers subscribe to topics at the Messaging Node.
 - MLS Authentication Service handles group authentication and key management.
 - Encryption group coincides with the topic identifier.
]]></artwork>
      </figure>
      <t>Secure group members are clients as described in <xref target="RFC9750"/> which can write
messages as producers or read messages as consumers. Most of the time, clients
are able to read and write messages in the same secure group. Clients join
secure groups as described in the MLS standard <xref target="RFC9750"/> via an
authentication service and by exchanging messages via the delivery service. In
the SLIM architecture, the SLIM nodes constitute the infrastructure that is
responsible for delivering messages in a secure group via a logical SLIM
channel. MLS commit messages are exchanged directly using the SLIM messaging
nodes.</t>
      <section anchor="messaging-nodes">
        <name>Messaging Nodes</name>
        <t>Messaging nodes are fundamental components of the SLIM architecture that serve
as specialized message queues. They fulfill several critical functions in the
messaging infrastructure. At their core, nodes efficiently route messages
between connected clients using intelligent routing algorithms while handling
the distribution and delivery of messages across the network infrastructure.</t>
        <figure anchor="fig-node-network">
          <name>SLIM messaging node network topology.</name>
          <artwork><![CDATA[
    Producer A              Producer B              Producer C
        |                       |                       |
        v                       v                       v
   +----------+            +----------+            +----------+
   |  Node 1  |<---------->|  Node 2  |<---------->|  Node 3  |
   +----------+            +----------+            +----------+
        ^                       ^                       ^
        |                       |                       |
        v                       v                       v
   +----------+            +----------+            +----------+
   |  Node 4  |<---------->|  Node 5  |<---------->|  Node 6  |
   +----------+            +----------+            +----------+
        ^                       ^                       ^
        |                       |                       |
    Consumer X             Consumer Y             Consumer Z

Legend:
- Each Node maintains connection and subscription tables
- Bidirectional arrows represent inter-node communication paths
- Producers and Consumers connect to their local nodes
- Messages are routed through the node network based on subscriptions
]]></artwork>
        </figure>
        <t>The node architecture relies on two essential data structures that work in
concert. The connection table forms the foundation for tracking all active
client connections and their states, maintaining crucial metadata about each
connected client. Alongside it, the subscription table manages topic
subscriptions and implements message filtering rules, determining which messages
should be delivered to which clients.</t>
        <t>Through this dual-table architecture, messaging nodes can effectively coordinate
message delivery while maintaining optimal system performance. The connection
and subscription mechanisms work together seamlessly to ensure reliable message
routing, proper client tracking, and efficient subscription management across
the distributed system. Each node operates autonomously while participating in
the broader network, creating a resilient and scalable messaging infrastructure.</t>
        <section anchor="connection-table">
          <name>Connection Table</name>
          <t>The connection table serves as a fundamental data structure within the
SLIM messaging node architecture, maintaining a comprehensive registry of both
client-to-node and node-to-node connections. Each entry in the table contains
essential metadata about connected endpoints, including their unique
identifiers, connection timestamps, authentication status, and current state
information.</t>
          <t>For client connections, the table tracks end-user applications that connect to
receive or send messages through the system. For node connections, it maintains
the network fabric topology by recording inter-node relationships and routing
paths. This dual-purpose nature enables SLIM to manage both the edge
connectivity with clients and the internal communication infrastructure between
nodes.</t>
          <t>Connection states are dynamically tracked and updated to reflect the real-time
status of each endpoint. This includes monitoring whether clients or nodes are
actively connected, temporarily disconnected, or in various intermediate states.
The table maintains crucial session information such as endpoint capabilities,
protocol versions, and quality of service parameters that influence message
handling.</t>
          <t>By maintaining this detailed connection state, the table enables efficient
routing decisions across the entire network fabric. It provides each messaging
node with immediate access to both client and node status information, allowing
for rapid determination of message delivery paths and handling of
connection-related events. The connection table also plays a vital role in
system reliability by tracking connection health and enabling quick detection of
disconnections or network issues at both the client and node levels.</t>
          <t>A connection table maps location-independent channel names to connections to
remote nodes. The mapping is used to forward messages towards nodes that can
either route messages or consume them in case consumers are directly connected
to the node.</t>
          <t>Channel names are encoded as human-readable hierarchical names for efficient
table lookup operations.</t>
          <section anchor="subscription-table-and-matching">
            <name>Subscription Table and Matching</name>
            <t>The subscription table is used to map channel subscriptions to neighboring
nodes. It manages the distribution of messages based on subscriptions and
ensures efficient delivery of messages.
A message carries the data to be delivered as well as the channel name and the
address locator of the message producer.</t>
            <t>The control plane manages the configuration and updates of the connection and
subscription tables.</t>
            <figure anchor="fig-message-structure">
              <name>SLIM message structure carrying channel name, address locator, and data.</name>
              <artwork><![CDATA[
+-------------------------------------------------------------+
|                    SLIM Message Structure                   |
+-------------------------------------------------------------+
| Channel Name   | Address Locator   |      Data Payload       |
+-------------------------------------------------------------+
| "/foo/bar"     | 192.0.2.10:12345 |   { ... application ... |
|                |                  |         data ... }      |
+-------------------------------------------------------------+

Legend:
- Channel Name: Identifies the logical channel/topic for routing.
- Address Locator: Specifies the producer's network address.
- Data Payload: Contains the actual message content.
]]></artwork>
            </figure>
          </section>
        </section>
        <section anchor="control-plane">
          <name>Control Plane</name>
          <t>The control plane is responsible for the management and orchestration of
SLIM messaging nodes and their interconnections. It handles the configuration,
provisioning, and monitoring of nodes, ensuring that the messaging
infrastructure operates smoothly and efficiently.</t>
          <t>Key functions of the control plane include:</t>
          <ul spacing="normal">
            <li>
              <t><strong>Node Discovery and Registration</strong>: New messaging nodes discover
each other and register their presence with the control plane. This
enables the control plane to maintain an up-to-date view of the
messaging infrastructure.</t>
            </li>
            <li>
              <t><strong>Configuration Management</strong>: The control plane distributes
configuration updates to messaging nodes, including connection and
subscription table updates. This ensures consistent and correct
routing behavior across the node network.</t>
            </li>
            <li>
              <t><strong>Monitoring and Analytics</strong>: The control plane collects and
analyzes telemetry data from messaging nodes, providing insights
into system performance, message flow, and potential issues.</t>
            </li>
            <li>
              <t><strong>Security and Access Control</strong>: The control plane manages
security policies, authentication, and authorization of nodes and
clients, ensuring a secure messaging environment.</t>
            </li>
          </ul>
          <t>By centralizing these management functions, the control plane enhances
the overall reliability, security, and performance of the SLIM messaging
infrastructure. It enables efficient scaling, dynamic reconfiguration,
and proactive maintenance of the node network.</t>
        </section>
        <section anchor="session-layer">
          <name>Session Layer</name>
          <t>The session layer serves as a critical abstraction component that bridges
application frameworks with the underlying SLIM messaging infrastructure. It
provides a unified interface that simplifies the complexity of secure messaging
while handling the details of MLS client operations and message distribution.</t>
          <section anchor="core-responsibilities">
            <name>Core Responsibilities</name>
            <t>The session layer encapsulates several key functionalities:</t>
            <t><strong>MLS Client Operations</strong>: The layer implements comprehensive MLS client
functionality including authentication procedures, message encryption and
decryption, key management, and group membership operations. It handles the
complex cryptographic operations transparently from the application perspective.</t>
            <t><strong>Channel Management</strong>: It provides seamless channel subscription and
unsubscription capabilities, managing the lifecycle of channel memberships and
maintaining subscription state across connection interruptions or node
failures.</t>
            <t><strong>Message Abstraction</strong>: The session layer abstracts message passing between
applications and the SLIM message distribution network, handling message
formatting, routing, and delivery confirmation while providing simple send and
receive primitives to applications.</t>
            <t><strong>Configuration Abstraction</strong>: It eliminates the need for applications to
manage complex configuration details required to connect to SLIM nodes,
automatically handling node discovery, connection establishment, and
subscription management.</t>
          </section>
          <section anchor="api-design-principles">
            <name>API Design Principles</name>
            <t>The session layer API is designed with the following principles:</t>
            <ul spacing="normal">
              <li>
                <t>Simplicity: Applications interact with the messaging system through
intuitive publish/subscribe operations without needing to understand the
underlying MLS or routing complexities.</t>
              </li>
              <li>
                <t>Asynchronous Operations: All messaging operations are designed to be
non-blocking, supporting high-performance applications.</t>
              </li>
              <li>
                <t>Framework Agnostic: The API provides language bindings and framework
adapters for various application development environments, ensuring broad
compatibility across different technology stacks.</t>
              </li>
              <li>
                <t>Error Handling: Comprehensive error reporting and recovery mechanisms
help applications handle communication issues and authentication failures.</t>
              </li>
            </ul>
          </section>
          <section anchor="session-management">
            <name>Session Management</name>
            <t>The session layer maintains persistent session state at the client across network
disconnections and node failures. It implements automatic reconnection logic,
subscription recovery, and message queuing to ensure reliable message delivery
even in unstable network conditions. Session persistence includes maintaining
MLS group membership state, channel subscriptions, and pending message queues.</t>
          </section>
        </section>
      </section>
      <section anchor="naming-considerations">
        <name>Naming Considerations</name>
        <t>SLIM requires several types of identifiers: node names, channel names,
and client locators.</t>
        <t>Node names are used for secure onboarding and authentication. Node names do not
have aggregation requirements and therefore use decentralized identifiers:</t>
        <t><tt>
node name A: did:key(node_A)
</tt></t>
        <t>A channel name identifies a messaging group and must be routable; that is, it
must include a globally unique network prefix that can be aggregated for
scalable lookups and message forwarding.</t>
        <t>A group in SLIM is an MLS group with a moderator client responsible for adding
and removing group members. The moderator is identified by a cryptographic
public key as defined in MLS <xref target="RFC9750"/>, and in SLIM, also by a decentralized
identifier derived as the hash of the public key <xref target="DID-W3C"/>.</t>
        <t>By naming entities with hashes <xref target="RFC6920"/>, SLIM achieves secure and globally
unique naming, enabling the creation of permissionless systems where channel
names and client names can be distributed across administrative boundaries. W3C
DIDs are optional but can be used when hash links are employed and conform to
the Named Information <xref target="RFC6920"/> standard, referencing the IANA registry
<xref target="NI-Registry"/>.</t>
        <t>SLIM routable name prefixes and client names can use different DID methods
which have different resolution systems such as did:web <xref target="DID-Web"/>, did:key
<xref target="DID-Key"/> or did:plc <xref target="DID-ATProto"/>. See <xref target="DID-Methods"/> for well-known DID
methods.</t>
        <t>The naming structure follows these patterns:</t>
        <t><tt>
client locator: did:key(org)/namespace(org)/service/did:key(client)
channel name: did:key(org)/namespace(org)/service/did:key(moderator)
</tt></t>
        <t>Where the moderator is the special client that has the role to create a channel,
add actual application clients and remove them from the group.
As mentioned above the moderator is a data plane client which is a decentralized
instance of the MLS delivery service as described in <xref target="RFC9420"/>.</t>
        <t>The hierarchical structure is required to maximize aggregation in subscription
tables, which can aggregate multiple names under name prefixes such as
organization identifiers, organization namespaces, and services.</t>
      </section>
      <section anchor="deployment-considerations">
        <name>Deployment Considerations</name>
        <t>SLIM helps the deployment of agentic AI applications where a combination of
data streams, tools and LLMs are combined to create a distributed multi-agent
systems that can solve problems via AI.</t>
        <t>These applications work as SLIM clients and <bcp14>MAY</bcp14> expose a service to the secure
group. The channel and client naming structure combined allows for service
discovery capabilities by binding the application a specific application
namespace and service name.</t>
      </section>
    </section>
    <section anchor="rpc-in-agentic-protocols-and-relationship-to-messaging">
      <name>RPC in Agentic Protocols and Relationship to Messaging</name>
      <t>Most agent-facing interfaces in use today—such as A2A and the Model Context
Protocol (MCP)—are Remote Procedure Call (RPC) oriented. They expose synchronous
request/response semantics for tool invocation, resource listing, and capability
execution. This section clarifies how RPC relates to asynchronous messaging and
how the two paradigms interoperate in agentic systems.</t>
      <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)</strong>: The caller issues a request and blocks or awaits a timely
response. Semantics emphasize tightly scoped operations (for example, “call tool
X with parameters Y”) 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-rpc-over-messaging">
        <name>Challenges of RPC over Messaging</name>
        <t>Bridging synchronous RPC semantics with asynchronous messaging infrastructure
introduces several challenges:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Request/Response Correlation</strong>: Messaging systems are inherently decoupled
and do not guarantee a direct response path. Implementing RPC requires
correlating requests and responses, often 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 complicate synchronous
RPC expectations.</t>
          </li>
          <li>
            <t><strong>Error Handling</strong>: Messaging systems may buffer, retry, or drop messages,
making it difficult to propagate errors and timeouts in a way that matches RPC
contracts.</t>
          </li>
          <li>
            <t><strong>Streaming and Multiplexing</strong>: Supporting streaming RPC (e.g., bidirectional
or server/client streaming) 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 parties can
invoke or respond to RPCs, and that all messages are authenticated and
encrypted, is more complex in a distributed, group-based messaging environment.</t>
          </li>
        </ul>
        <t>The SRPC capability in SLIM addresses these challenges by providing a native,
secure, and streaming RPC abstraction directly over the SLIM messaging layer, as
described in the following section.</t>
      </section>
      <section anchor="remote-procedure-calls-over-slim-srpc">
        <name>Remote Procedure Calls over SLIM (SRPC)</name>
        <t>SLIM natively supports Remote Procedure Calls (RPC) through its SRPC (SLIM RPC)
capability, enabling efficient, secure, and flexible communication patterns for
distributed and agentic applications. SRPC is designed to provide gRPC-like
streaming RPC semantics directly over the SLIM transport, leveraging SLIM's
secure, multiplexed, and group-oriented messaging infrastructure.</t>
        <section anchor="overview">
          <name>Overview</name>
          <t>SRPC allows applications to define and invoke remote procedures using familiar
gRPC patterns, including unary calls, client streaming, server streaming, and
bidirectional streaming. This enables developers to build complex, stateful, and
interactive workflows between distributed agents, services, and tools, all while
benefiting from SLIM's end-to-end security and group membership features.</t>
        </section>
        <section anchor="key-features">
          <name>Key Features</name>
          <ul spacing="normal">
            <li>
              <t><strong>Streaming RPC Support</strong>: SRPC supports all gRPC streaming modes, allowing
for flexible data exchange patterns such as real-time data feeds, interactive
sessions, and collaborative workflows.</t>
            </li>
            <li>
              <t><strong>Multiplexed Transport</strong>: Multiple concurrent RPC streams can be established
over a single SLIM connection, reducing overhead and improving resource
efficiency.</t>
            </li>
            <li>
              <t><strong>Secure Group Communication</strong>: SRPC leverages SLIM's MLS-based security
model, ensuring that all RPC calls and responses are encrypted and authenticated
within the context of secure groups.</t>
            </li>
            <li>
              <t><strong>Protocol Buffers Integration</strong>: Service definitions and message schemas are
specified using Protocol Buffers, enabling strong typing and interoperability
across languages and platforms.</t>
            </li>
          </ul>
        </section>
        <section anchor="architecture">
          <name>Architecture</name>
          <t>SRPC is implemented as a protocol extension and a set of client/server libraries
that integrate with the SLIM session layer. Developers define service interfaces
using Protocol Buffers, and code generation tools produce client and server
stubs that handle message serialization, stream management, and invocation logic
over SLIM channels.</t>
          <t>The SRPC protocol manages the lifecycle of RPC streams, including initiation,
message exchange, error handling, and stream termination. It ensures that all
communication adheres to SLIM's security and routing policies, and that group
membership and authorization are enforced for each RPC interaction.</t>
        </section>
        <section anchor="benefits-for-agentic-applications">
          <name>Benefits for Agentic Applications</name>
          <t>By providing native, streaming RPC capabilities, SRPC enables agentic AI
applications and distributed systems to:</t>
          <ul spacing="normal">
            <li>
              <t>Orchestrate complex, multi-step workflows across multiple agents and services.</t>
            </li>
            <li>
              <t>Exchange large or continuous data streams efficiently and securely.</t>
            </li>
            <li>
              <t>Implement interactive, real-time collaboration between distributed components.</t>
            </li>
            <li>
              <t>Simplify integration with existing gRPC-based tools and ecosystems.</t>
            </li>
          </ul>
          <t>SRPC makes it possible to build robust, scalable, and secure agentic
applications that fully leverage the power of SLIM's messaging and group
communication model.</t>
        </section>
        <section anchor="slim-naming-in-srpc">
          <name>SLIM Naming in SRPC</name>
          <t>SRPC derives per-service and per-handler routing names directly from the
structured SLIM naming scheme to enable efficient subscription and message
dispatch without requiring application developers to manually manage channel
names.</t>
          <t>Each application participating in a secure SLIM group already has a hierarchical
SLIM name composed of multiple components (organization identifier, namespace,
service, and client/moderator key). SRPC appends a handler-qualified suffix to
the service component to form unique, routable identifiers for RPC methods.</t>
          <t>Service interface definitions (e.g., Protocol Buffers) describe one or more RPC
handlers supporting the four common gRPC communication patterns:</t>
          <ul spacing="normal">
            <li>
              <t>Unary → Unary</t>
            </li>
            <li>
              <t>Unary → Stream</t>
            </li>
            <li>
              <t>Stream → Unary</t>
            </li>
            <li>
              <t>Stream → Stream (bidirectional)</t>
            </li>
          </ul>
          <t>For every handler declared inside a service, SRPC generates a method routing
token using the pattern:</t>
          <t><tt>
{package}.{service}-{handler}
</tt></t>
          <t>Example: Given a protobuf package <tt>example_service</tt> and service <tt>Test</tt> with
handlers <tt>ExampleUnaryUnary</tt>, <tt>ExampleUnaryStream</tt>, <tt>ExampleStreamUnary</tt>,
<tt>ExampleStreamStream</tt>, the generated handler tokens are:</t>
          <ul spacing="normal">
            <li>
              <t>example_service.Test-ExampleUnaryUnary</t>
            </li>
            <li>
              <t>example_service.Test-ExampleUnaryStream</t>
            </li>
            <li>
              <t>example_service.Test-ExampleStreamUnary</t>
            </li>
            <li>
              <t>example_service.Test-ExampleStreamStream</t>
            </li>
          </ul>
          <t>SRPC then embeds the handler token into the second component (service segment)
of the full SLIM name for routing. If the original SLIM application name
components c[i] are:</t>
          <t><tt>
c[0]/c[1]/c[2]/c[3]
</tt></t>
          <t>The subscribed name for a specific handler becomes:</t>
          <t><tt>
c[0]/c[1]/c[2]-example_service.Test-ExampleUnaryUnary/c[3]
</tt></t>
          <t>This transformation yields a distinct, hierarchical, and aggregatable name per
RPC method while preserving the organizational and namespace prefix structure
needed for subscription table aggregation. Applications exposing SRPC services
automatically subscribe to all derived handler names; the SRPC library manages
these subscriptions and maps incoming messages to the corresponding generated
server stub functions. Developers implement only the handler logic exactly as
with conventional gRPC, without manual SLIM channel management.</t>
          <t>Benefits of this naming approach:
- Deterministic and collision-resistant per-method naming.
- Preserves hierarchical aggregation for routing efficiency.
- Avoids separate discovery round-trips for method endpoints.
- Enables capability advertisement to reference method names directly.
- Simplifies multi-service deployments—adding a new handler produces a single
new routable token.</t>
          <t>This integration of SRPC handler naming with SLIM's hierarchical naming model
ensures consistent, secure, and scalable routing semantics for RPC traffic
within agentic groups.</t>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="DID-W3C" target="https://www.w3.org/TR/did-core/">
          <front>
            <title>Decentralized Identifiers (DIDs) v1.0</title>
            <author initials="W. C. C." surname="Group" fullname="W3C Credentials Community Group">
              <organization/>
            </author>
            <date year="2022" month="July" day="19"/>
          </front>
        </reference>
        <reference anchor="NI-Registry" target="https://www.iana.org/assignments/named-information/named-information.xhtml">
          <front>
            <title>Named Information Hash Algorithm Registry</title>
            <author initials="" surname="IANA" fullname="IANA">
              <organization/>
            </author>
            <date year="2013" month="August" day="01"/>
          </front>
        </reference>
        <reference anchor="DID-Methods" target="https://www.w3.org/TR/did-extensions-methods/">
          <front>
            <title>Known DID Methods in the Decentralized Identifier Ecosystem</title>
            <author initials="W. C. C." surname="Group" fullname="W3C Credentials Community Group">
              <organization/>
            </author>
            <date year="2025" month="April" day="29"/>
          </front>
        </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>
        <reference anchor="RFC9420">
          <front>
            <title>The Messaging Layer Security (MLS) Protocol</title>
            <author fullname="R. Barnes" initials="R." surname="Barnes"/>
            <author fullname="B. Beurdouche" initials="B." surname="Beurdouche"/>
            <author fullname="R. Robert" initials="R." surname="Robert"/>
            <author fullname="J. Millican" initials="J." surname="Millican"/>
            <author fullname="E. Omara" initials="E." surname="Omara"/>
            <author fullname="K. Cohn-Gordon" initials="K." surname="Cohn-Gordon"/>
            <date month="July" year="2023"/>
            <abstract>
              <t>Messaging applications are increasingly making use of end-to-end security mechanisms to ensure that messages are only accessible to the communicating endpoints, and not to any servers involved in delivering messages. Establishing keys to provide such protections is challenging for group chat settings, in which more than two clients need to agree on a key but may not be online at the same time. In this document, we specify a key establishment protocol that provides efficient asynchronous group key establishment with forward secrecy (FS) and post-compromise security (PCS) for groups in size ranging from two to thousands.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9420"/>
          <seriesInfo name="DOI" value="10.17487/RFC9420"/>
        </reference>
        <reference anchor="RFC9750">
          <front>
            <title>The Messaging Layer Security (MLS) Architecture</title>
            <author fullname="B. Beurdouche" initials="B." surname="Beurdouche"/>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="E. Omara" initials="E." surname="Omara"/>
            <author fullname="S. Inguva" initials="S." surname="Inguva"/>
            <author fullname="A. Duric" initials="A." surname="Duric"/>
            <date month="April" year="2025"/>
            <abstract>
              <t>The Messaging Layer Security (MLS) protocol (RFC 9420) provides a group key agreement protocol for messaging applications. MLS is designed to protect against eavesdropping, tampering, and message forgery, and to provide forward secrecy (FS) and post-compromise security (PCS).</t>
              <t>This document describes the architecture for using MLS in a general secure group messaging infrastructure and defines the security goals for MLS. It provides guidance on building a group messaging system and discusses security and privacy trade-offs offered by multiple security mechanisms that are part of the MLS protocol (e.g., frequency of public encryption key rotation). The document also provides guidance for parts of the infrastructure that are not standardized by MLS and are instead left to the application.</t>
              <t>While the recommendations of this document are not mandatory to follow in order to interoperate at the protocol level, they affect the overall security guarantees that are achieved by a messaging application. This is especially true in the case of active adversaries that are able to compromise clients, the Delivery Service (DS), or the Authentication Service (AS).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9750"/>
          <seriesInfo name="DOI" value="10.17487/RFC9750"/>
        </reference>
        <reference anchor="RFC6920">
          <front>
            <title>Naming Things with Hashes</title>
            <author fullname="S. Farrell" initials="S." surname="Farrell"/>
            <author fullname="D. Kutscher" initials="D." surname="Kutscher"/>
            <author fullname="C. Dannewitz" initials="C." surname="Dannewitz"/>
            <author fullname="B. Ohlman" initials="B." surname="Ohlman"/>
            <author fullname="A. Keranen" initials="A." surname="Keranen"/>
            <author fullname="P. Hallam-Baker" initials="P." surname="Hallam-Baker"/>
            <date month="April" year="2013"/>
            <abstract>
              <t>This document defines a set of ways to identify a thing (a digital object in this case) using the output from a hash function. It specifies a new URI scheme for this purpose, a way to map these to HTTP URLs, and binary and human-speakable formats for these names. The various formats are designed to support, but not require, a strong link to the referenced object, such that the referenced object may be authenticated to the same degree as the reference to it. The reason for this work is to standardise current uses of hash outputs in URLs and to support new information-centric applications and other uses of hash outputs in protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6920"/>
          <seriesInfo name="DOI" value="10.17487/RFC6920"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <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="DID-Key" target="https://w3c-ccg.github.io/did-method-key/">
          <front>
            <title>The did:key Method v0.7: A DID Method for Static Cryptographic Keys</title>
            <author initials="W. C. C." surname="Group" fullname="W3C Credentials Community Group">
              <organization/>
            </author>
            <date year="2025" month="March" day="26"/>
          </front>
        </reference>
        <reference anchor="DID-ATProto" target="https://atproto.wiki/en/wiki/reference/identifiers/did">
          <front>
            <title>Decentralized Identifiers (DIDs) in the AT Protocol</title>
            <author initials="B. P." surname="Community" fullname="Bluesky/AT Protocol Community">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="DID-Web" target="https://w3c-ccg.github.io/did-method-web/">
          <front>
            <title>The did:web Method Specification</title>
            <author initials="W. C. C." surname="Group" fullname="W3C Credentials Community Group">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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
ru0MboQPSXjfxQch1P8HZxj/8rN1AAA=

-->

</rfc>
