<?xml version="1.0" encoding="utf-8"?>
<?xml-model href="https://www.rfc-editor.org/rng/rfc7991bis.rnc" type="application/relax-ng-compact-syntax"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude"
     ipr="trust200902"
     docName="draft-feng-dmsc-intent-routing-requirements-00"
     category="info"
     submissionType="IETF"
     consensus="false"
     xml:lang="en"
     sortRefs="true"
     symRefs="true"
     tocInclude="true"
     tocDepth="3"
     version="3">

  <front>
    <title abbrev="Intent Routing Requirements">Requirements for Intent Routing in Multi-Agent Systems at Internet Scale</title>

    <author fullname="Chong Feng" initials="C." surname="Feng">
      <address>
        <email>fengchongllly@gmail.com</email>
      </address>
    </author>

    <date year="2026" month="August" day="14"/>

    <area>General</area>

    <abstract>
      <t>The rapid proliferation of autonomous AI agents across enterprise and
      Internet-scale deployments creates a structural challenge that existing
      agent frameworks cannot address: how to enable any agent to reach and
      invoke any other agent's capabilities without pre-established bilateral
      integration, across organizational boundaries, at Internet scale.</t>

      <t>This document states the normative requirements for that problem. It
      prescribes no solution, no specific mechanism, no message format, and no
      assumption of centralized or distributed architecture. Its purpose is to
      establish a verifiable yardstick against which any claimed "intent
      routing" solution can be judged.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="terminology" title="Terminology">
      <dl>
        <dt>Agent</dt>
        <dd>A participant capable of autonomous reasoning and action, not a
        passive endpoint.</dd>

        <dt>Requester / Originator</dt>
        <dd>An agent that initiates a coordination request and expresses an
        intent.</dd>

        <dt>Handler / Provider</dt>
        <dd>An agent that possesses a capability and can fulfill a requester's
        intent.</dd>

        <dt>Intent</dt>
        <dd>What the requester wants accomplished, abstracted from which
        specific handler will accomplish it.</dd>

        <dt>Capability</dt>
        <dd>A unit of function that a handler can offer, which can be
        identified and matched.</dd>

        <dt>Coordination Substrate</dt>
        <dd>The intermediary layer through which requesters and handlers reach
        each other and establish interaction. This document remains neutral
        about its form (registry, directory, routing network, gateway,
        etc.).</dd>

        <dt>Forwarding Node</dt>
        <dd>The element of the coordination substrate responsible for
        directing a request toward a handler. It may be a deterministic
        forwarding element or an intermediary that takes on more
        decision-making. Whether its data-path decisions involve reasoning,
        and the resulting infrastructure cost, is what <xref target="req10"
        format="default"/> and <xref target="req11" format="default"/>
        constrain.</dd>

        <dt>Control Plane</dt>
        <dd>The mechanisms responsible for capability registration,
        advertisement, dissemination, and synchronization (i.e., what
        capabilities exist and how to reach them).</dd>

        <dt>Data Plane</dt>
        <dd>The mechanisms responsible for delivering an intent request to its
        target handler.</dd>

        <dt>Administrative Domain / Organizational Boundary</dt>
        <dd>The boundary of a group of participants governed by the same
        policy and sharing the same trust and governance assumptions.</dd>

        <dt>Reachability</dt>
        <dd>Whether one endpoint can initiate and establish a connection to
        another. Subject to NAT, firewalls, and network policy, reachability
        may be one-way or asymmetric.</dd>
      </dl>
    </section>

    <section anchor="problem" title="Problem Statement">
      <section anchor="gap" title="The Multi-Agent Coordination Gap">
        <t>Existing agent frameworks solve orchestration <em>within</em> a
        single agent, or collaboration among agents in the same framework and
        the same trust domain. They assume participants already know of each
        other's existence and interfaces at deployment time.</t>

        <t>This assumption fails along three dimensions:</t>

        <ol>
          <li><strong>Scale</strong>: With N agents, pairwise integration
          costs O(N^2). Without shared coordination infrastructure,
          integration cost alone crushes any system.</li>

          <li><strong>Heterogeneity</strong>: Agents from different
          frameworks, languages, and runtime environments have no common entry
          point for reaching and invoking each other.</li>

          <li><strong>Organizational boundaries</strong>: Across
          organizations, trust and deployment assumptions no longer hold. No
          party can compel others to register their capabilities into its
          private directory.</li>
        </ol>

        <t>The Internet solved the same structural problem for host
        interconnection with shared routing infrastructure. Agent coordination
        faces a higher layer of that problem: treat capability as a routable
        object, not as endpoints that must be integrated pairwise.</t>
      </section>

      <section anchor="scope" title="Problem Space and Scope">
        <t>This document covers the span from "a requester expresses an
        intent" to "locating a handler that can fulfill that intent."
        Concretely: the expression and decomposition of intent, the
        identification and aggregation of capability, the directing of
        requests (routing), and the matching and selection of
        candidates.</t>

        <t>A clarification: in this document, locating a handler is the
        result of the delivery process, not a separate
        query-and-return-candidates mechanism. The core action of the
        coordination substrate is the delivery of the intent request (the
        data plane); finding the handler is the completion effect of that
        delivery. Whether the handler's information is returned to the
        requester, or the intent is delivered directly to the handler, is a
        policy declared by the handler at registration time (see
        <xref target="req8" format="default"/>), not an inherent shape of the
        locating action.</t>

        <t>This document does not cover: the interaction protocol after
        routing (task execution, session establishment, the message formats
        of result delivery), the schema of any capability description
        language, or identity, trust, and authorization mechanisms (which are
        handled elsewhere, but with which the requirements here must
        coexist).</t>
      </section>
    </section>

    <section anchor="requirements" title="Requirements">
      <t>The following requirements are normative. Each requirement's
      rationale explains its motivation but imposes no additional
      constraint.</t>

      <section anchor="openness" title="Openness and Heterogeneity">
        <section anchor="req1" title="REQ-1: Open Participation">
          <t>Any agent, regardless of framework, language, or deployment
          environment, <bcp14>MUST</bcp14> be able to register its
          capabilities and invoke others without establishing bilateral
          relationships with each potential partner in advance.</t>
          <t>Rationale: Requiring bilateral pre-registration brings back the
          O(N^2) integration cost verbatim. A shared coordination layer should
          eliminate pairwise agent integration structurally, just as IP
          eliminated pairwise host-reachability agreements.</t>
        </section>

        <section anchor="req2" title="REQ-2: Heterogeneous Handlers">
          <t>The coordination substrate <bcp14>MUST</bcp14> support
          heterogeneous handler types (LLM-based, deterministic programs,
          wrapped legacy services) without requiring the substrate to be
          redesigned when handler types change.</t>
          <t>Rationale: In real deployments, capabilities are provided by
          many technology stacks. If the coordination layer is sensitive to
          handler type, it degenerates into one routing mechanism per
          type.</t>
        </section>
      </section>

      <section anchor="control-data" title="Control Plane and Data Plane">
        <section anchor="req3" title="REQ-3: Control/Data Plane Separation">
          <t>Capability registration, advertisement, and dissemination (the
          control plane) <bcp14>MUST</bcp14> be separated in mechanism from
          the delivery of intent requests (the data plane).</t>
          <t>Rationale: The control plane answers what capabilities exist and
          how to reach them; the data plane answers where this request is
          delivered. Coupling them makes every delivery depend on global
          registration state (violating <xref target="req4"
          format="default"/> and <xref target="req6" format="default"/>) and
          prevents a handler from independently declaring its interaction
          policy at registration (<xref target="req8" format="default"/>).
          Internet architecture already separates the control plane (routing
          protocols) from the data plane (packet forwarding) for this reason:
          the data plane must be cheap, deterministic, and free of dependence
          on global state in order to carry per-packet forwarding at
          scale.</t>
        </section>
      </section>

      <section anchor="scale-state" title="Scale and State">
        <section anchor="req4" title="REQ-4: Bounded State">
          <t>The coordination mechanism <bcp14>MUST NOT</bcp14> require any
          single node (or gateway) to maintain state proportional to the
          total number of agents.</t>
          <t>Rationale: If a node's state grows linearly with the total agent
          population, that node becomes both a scaling ceiling and a single
          point of failure. A scalable mechanism makes each node's state
          proportional to what it locally governs or needs, not to the global
          total.</t>
        </section>

        <section anchor="req5" title="REQ-5: Capability Aggregation">
          <t>Capability information <bcp14>MUST</bcp14> be summarizable and
          aggregable, so that cross-domain (cross-organization,
          cross-administrative-boundary) capability advertisement is decoupled
          from the total agent population.</t>
          <t>Rationale: Cross-domain advertisement cannot carry every
          handler's full capability description item by item. Capability must
          support a form in which multiple capabilities collapse into one
          advertisable summary; otherwise cross-domain routing degenerates
          into full replication.</t>
        </section>
      </section>

      <section anchor="delivery-decision" title="Delivery and Decision">
        <section anchor="req6" title="REQ-6: Local Forwarding Decisions">
          <t>Every forwarding decision <bcp14>MUST</bcp14> be made locally,
          based on datagram-visible information plus locally maintained state;
          no centralized per-request routing decision point is assumed.</t>
          <t>Rationale: A centralized per-request routing decision point
          brings both availability risk (single point of failure) and a
          scalability ceiling. A scalable system requires decisions to be
          pushed down to the local level.</t>
        </section>

        <section anchor="req7" title="REQ-7: Real-Time State Decided by Its Holder">
          <t>Any matching or selection that depends on real-time state
          <bcp14>MUST</bcp14> be made by the entity that actually holds that
          real-time state. For example, load and availability are attributes
          whose true value only the handler itself knows at the current
          moment.</t>
          <t>Rationale: An intermediary can only infer real-time state through
          stale, indirect, possibly unsynchronized information. If an
          intermediary selects on the handler's behalf, it may pick a handler
          that looks idle in the directory but has just taken a heavy job. The
          only reliable location for a real-time-state decision is the holder
          of that state.</t>
        </section>

        <section anchor="req8" title="REQ-8: Delivery Endpoint Declared by Handler Policy">
          <t>When registering its capability, a handler <bcp14>MUST</bcp14>
          be able to declare its desired interaction policy, in particular the
          delivery endpoint: either the infrastructure delivers the intent
          directly to the handler, which then decides whether to connect back
          to the requester; or the infrastructure returns the reachable
          handler's information to the requester, which then initiates the
          connection.</t>
          <t>Rationale: The root cause of this policy declaration is endpoint
          reachability (NAT/firewall traversal), not arbitrary handler
          preference. The policy is the explicit declaration; reachability is
          the underlying driver. If the handler sits behind a firewall, the
          requester cannot initiate a connection to it even if the
          infrastructure returns the handler's information, so only the
          handler can connect back to the requester. Conversely, if the
          requester sits behind a firewall, the handler cannot connect to the
          requester, so only the requester can connect to the handler. Who
          connects to whom is therefore determined by reachability topology,
          and only the handler knows its own reachability conditions at
          registration time, so the delivery endpoint must be declared by the
          handler. Moreover, for one-shot delivery (no subsequent session
          after delivery), requiring the infrastructure to return a candidate
          set is pure waste: the delivery has already reached the handler, and
          returning reachability information afterward is like a mail carrier
          who has arrived at the recipient's door running back to tell the
          sender the door number. When the policy is "return to requester,"
          the infrastructure may return multiple matching handlers, from which
          the requester chooses; when the policy is "direct delivery," the
          infrastructure need not return any candidate, because the delivery
          itself completes the locating.</t>
        </section>

        <section anchor="req9" title="REQ-9: Session-Agnostic Delivery">
          <t>The delivery layer of the coordination substrate <bcp14>MUST
          NOT</bcp14> presume whether a persistent session exists between
          requester and handler; the delivery mechanism itself
          <bcp14>MUST</bcp14> remain unchanged regardless of whether a session
          is established after delivery.</t>
          <t>Rationale: The delivery layer's job is to get the intent datagram
          delivered; whether a session is established afterward is a matter
          between the endpoints. If the delivery layer presumes a follow-up
          session must exist, or must not, it forces an endpoint interaction
          pattern into the infrastructure and breaks its generality. Just as
          IP remains connectionless and stateless toward upper layers (whether
          carrying TCP or UDP, IP forwarding is unchanged), the delivery layer
          should remain session-agnostic, leaving session establishment
          entirely to the endpoints.</t>
        </section>
      </section>

      <section anchor="semantic-inference" title="Semantic and Inference Boundary">
        <section anchor="req10" title="REQ-10: Matching Based on Routable Identifiers">
          <t>Capability matching <bcp14>MUST</bcp14> be performed on routable
          identifiers; the forwarding nodes of the coordination substrate
          <bcp14>MUST NOT</bcp14> be required to understand the semantics of
          the task itself.</t>
          <t>Rationale: Semantic understanding depends on task context, which
          lives at the endpoints (requester and handler), not at forwarding
          nodes. If the forwarding layer must interpret semantics to forward,
          every forwarding node bears a semantic-understanding burden, and
          reasoning is forced into the forwarding path, which destroys
          determinism, predictability, and performance. Semantic heterogeneity
          (different domains expressing the same capability differently) is
          itself a problem to be aligned at the endpoints or at domain
          boundaries. It should not be dissolved by making every forwarding
          node understand semantics, because that increases the forwarding
          layer's burden without actually eliminating the heterogeneity.</t>
        </section>

        <section anchor="req11" title="REQ-11: Deterministic Forwarding, No Data-Path Inference">
          <t>Forwarding nodes <bcp14>MUST NOT</bcp14> be required to perform
          inference (e.g., LLM inference) when making forwarding decisions on
          the data path; forwarding decisions <bcp14>MUST</bcp14> be
          deterministic, predictable, and minimal-cost.</t>
          <t>Rationale: Inference on the data path pushes up forwarding
          latency, requires every forwarding node to have inference capability
          (raising the deployment threshold and operational cost), and makes
          forwarding behavior unpredictable and hard to debug and audit. The
          forwarding layer should be positioned like IP forwarding:
          deterministic lookup and hop-by-hop forwarding, with every step that
          needs intelligence left to the endpoints.</t>
        </section>
      </section>

      <section anchor="namespace-isolation" title="Namespace and Isolation">
        <section anchor="req12" title="REQ-12: Routable Hierarchical Namespace">
          <t>Capability <bcp14>MUST</bcp14> be expressible as an aggregable
          hierarchical namespace supporting prefix matching.</t>
          <t>Rationale: Prefix matching plus hierarchical aggregation is the
          mechanism prerequisite for cross-domain summarized advertisement
          (<xref target="req5" format="default"/>) and bounded local state
          (<xref target="req4" format="default"/>) to hold simultaneously.
          Without an aggregable namespace there is nothing to summarize;
          without prefix matching there is no way to direct a request correctly
          without holding the full map.</t>
        </section>

        <section anchor="req13" title="REQ-13: Isolation and Cross-Domain Authorization">
          <t>The coordination substrate <bcp14>MUST</bcp14> allow any
          organization to isolate its capability namespace from others;
          interoperation across organizational boundaries <bcp14>MUST</bcp14>
          be explicitly authorized and policy-controlled.</t>
          <t>Rationale: Isolation at organizational boundaries is a hard
          security and governance requirement. If the coordination layer
          defaults to global visibility (for example, replicating the
          capability directory across the whole network), an organization
          cannot participate in collaboration without exposing its internal
          capabilities, which suppresses cross-organization collaboration.
          This does not contradict <xref target="req1" format="default"/>
          (open participation); it is its precondition. Only when isolation is
          the default and cross-domain authorization is explicit will an
          organization participate openly. Isolation should therefore hold
          naturally at the capability-namespace layer: reachable within a
          domain, unreachable across domains by default, with cross-domain
          interoperation enabled by explicit authorization rather than by
          layering access control on top of a default-open posture.
          Namespace-level isolation also provides a low-cost private
          collaboration domain, because the reachability boundary is
          constituted by the namespace itself and requires no separate
          isolation-tunnel mechanism.</t>
        </section>
      </section>

      <section anchor="dynamism" title="Dynamism">
        <section anchor="req14" title="REQ-14: Bounded Convergence">
          <t>The coordination substrate <bcp14>MUST</bcp14> support the
          addition, update, and withdrawal of capabilities, and
          <bcp14>MUST</bcp14> exhibit bounded convergence behavior (such
          changes propagate and stabilize within a predictable bound).</t>
          <t>Rationale: Agent capabilities are dynamic. If changes propagate
          without bound, requesters see inconsistent capability views at
          different moments, and matching results become indeterminate.</t>
        </section>
      </section>

      <section anchor="reachability" title="Reachability">
        <section anchor="req15" title="REQ-15: Delivery Reachability">
          <t>The coordination substrate <bcp14>MUST</bcp14> be able to deliver
          a request to any registered handler.</t>
          <t>Rationale: This is the fundamental reason the coordination layer
          exists. Locating is worthless if the request cannot ultimately
          arrive.</t>
        </section>

        <section anchor="req16" title="REQ-16: Return-Path Reachability">
          <t>A handler <bcp14>MUST</bcp14> be able to deliver execution
          results back to the requester endpoint indicated in the request;
          this return path is not required to traverse the coordination
          infrastructure's forwarding data plane.</t>
          <t>Rationale: Request-response is the minimal closed loop of
          coordination. Not binding the return path to the coordination data
          plane lets it reuse existing transport protocols and reduces
          coupling.</t>
        </section>
      </section>

      <section anchor="intent-decomposition" title="Location of Intent Decomposition">
        <section anchor="req17" title="REQ-17: Intent Decomposed at the Originator">
          <t>The decomposition from "naturally expressed task intent" to
          "routable capability identifier" <bcp14>MUST</bcp14> occur at the
          originating end; the coordination infrastructure <bcp14>MUST
          NOT</bcp14> be required to perform this decomposition
          internally.</t>
          <t>Rationale: Intent decomposition depends on the requester's full
          task context (what it actually wants, under what constraints),
          information only the endpoint possesses. Putting decomposition
          inside the network hands the step that most needs context to the
          layer with the least context.</t>
        </section>
      </section>
    </section>

    <section anchor="security" title="Security Considerations">
      <t>The aggregation and summarization in <xref target="req4"
      format="default"/> and <xref target="req5" format="default"/> introduce
      the risk of misleadingly aggregated capability. The routable identifiers
      in <xref target="req10" format="default"/> and <xref target="req12"
      format="default"/> need protection against forgery and poisoning. The
      cross-domain authorization and namespace isolation in <xref
      target="req13" format="default"/> involve policy enforcement and
      unauthorized access. The originator-side decomposition in <xref
      target="req17" format="default"/> touches the privacy boundary of
      intent. This document states requirements only and prescribes no
      security mechanism, but these requirements must be compatible with
      identity, trust, and authorization mechanisms.</t>
    </section>

    <section anchor="iana" title="IANA Considerations">
      <t>This document has no IANA actions.</t>
    </section>
  </middle>

  <back>
    <references title="Informative References">
      <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date year="1997" month="March"/>
        </front>
      </reference>
      <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date year="2017" month="May"/>
        </front>
      </reference>
    </references>
  </back>
</rfc>
