Skip to main content

agentic


Agentic Domain

The Agentic domain manages the lifecycle of MCP (Model Context Protocol) servers within the Control Plane — from server registration through exposure to subscription. It acts as an abstraction layer above the Gateway domain, handling business logic for who can access which MCP servers and under what conditions.

Custom Resources

ResourcePurpose
McpServerRegisters an MCP server endpoint for a given basePath. Created and owned by the Rover domain via McpSpecification. Only the oldest active McpServer per basePath is considered active.
McpExposureExposes an active McpServer on the AI Gateway by creating gateway Routes. Only one McpExposure per basePath can be active at a time (oldest-wins).
McpSubscriptionRequests access to an MCP exposure. Triggers an approval workflow; once approved, a ConsumeRoute is created on the gateway.

Reconciliation Flow

rover-ctl apply mcpspec.yaml

├──▶ McpSpecification created (rover domain)
│ └──▶ McpServer created (registered)

├──▶ McpExposure created (by exposing team)
│ └──▶ AI Gateway Route(s) provisioned

└──▶ McpSubscription created (by subscribing team)

├──▶ Approval created (if strategy ≠ auto)
├──▶ Approval granted
└──▶ Gateway ConsumeRoute created (access granted)

Route Provisioning

When an McpExposure is reconciled, the Agentic operator provisions gateway Routes on the AI Gateway:

Route createdWhenLocation
Primary routeAlways — one per exposureProvider's zone namespace
Proxy routeFor each zone with an approved cross-zone subscriptionSubscriber's zone namespace, upstream = provider zone's AI Gateway

Cross-Zone Meshing

When subscribers exist in a different zone than the exposure, the operator creates a proxy Route in the subscriber's zone. That proxy gateway stamps a Last-Mile-Security (LMS) token when forwarding traffic to the provider zone. The primary route therefore adds the subscriber zone's LmsIssuer to its TrustedIssuers so that forwarded requests are accepted.

The primary route's TrustedIssuers are composed as follows:

  • Exposure zone's IDP issuer — only when at least one local (same-zone) subscriber exists, for direct consumer access
  • LMS issuers from each cross-zone proxy gateway — for mesh-forwarded traffic from subscriber zones

Variants

An McpExposure can declare a spec.variant that changes how access is provisioned:

MCP (default)

Standard exposure. The AI Gateway Route is created with normal access control. Consumers gain access by subscribing and having a ConsumeRoute provisioned.

TELECONTEXTMCP

Used for MCP servers that should be accessible by the Telecontext platform consumer without going through the standard subscription/approval flow.

How it works: When spec.variant: TELECONTEXTMCP is set on an McpExposure, the operator resolves the Telecontext Application using a platform-level configuration (AGENTIC_TELECONTEXT_APPLICATION_ID, format: group--team--appName). From this, the operator:

  1. Looks up the Application CR to discover its zone and derives the consumer name (team--appName)
  2. Adds the consumer to the AI Gateway Route's spec.security.defaultConsumers, giving the Telecontext application pre-authorized access without a ConsumeRoute or approval flow
  3. Creates a proxy route on the Telecontext Application's zone if it differs from the exposure zone, ensuring cross-zone reachability even when no regular subscribers exist on that zone
  4. Trusts the Telecontext zone's LMS issuer on the primary route, so mesh-forwarded traffic from the Telecontext zone is accepted

This mirrors how the legacy Java controlplane handled Telecontext integration: iterating all zones and creating proxy routes where the Telecontext Application is located, plus granting access via a dedicated RoutePermission (now replaced by the DefaultConsumers mechanism).

Why not a ConsumeRoute? A ConsumeRoute is namespace-scoped and goes through the approval flow. DefaultConsumers is a gateway-level bypass that is more appropriate for a trusted platform component that needs seamless, always-on access to TeleMCP servers across the whole platform.

McpExposure (variant: TELECONTEXTMCP)

├──▶ Resolve Application (from AGENTIC_TELECONTEXT_APPLICATION_ID)
│ └──▶ Get zone + derive consumer name

├──▶ AI Gateway Route (primary, on exposure zone)
│ └──▶ spec.security.defaultConsumers:
│ - gateway (cross-zone proxy access)
│ - telecontext--tcapp (Telecontext platform consumer)

└──▶ AI Gateway Route (proxy, on Telecontext zone — if different)
└──▶ upstream = exposure zone's AI Gateway

The AGENTIC_TELECONTEXT_APPLICATION_ID value is injected at operator startup via environment variable and must be configured for environments that support the TELECONTEXTMCP variant.

Domain Interactions

  • Rover domain — Creates McpSpecification which owns the McpServer. McpExposure and McpSubscription are also created from rover configuration.
  • Gateway domain — The Agentic operator creates Route (primary, proxy) and ConsumeRoute resources on the AI Gateway.
  • Admin domain — Zones provide the AI Gateway reference, preset URLs, and identity issuers used to wire up routes and mesh trust.
  • Approval domain — Subscriptions trigger approval workflows before ConsumeRoute is created.