Governed in the mesh, and only in the mesh.
Solo.io makes one strong architectural bet: agents are workloads, so govern them where workloads already talk to each other. Inside that path the controls run deep: identity-aware policy on every request, guardrails on model traffic, delegated tokens and a mesh underneath. The question this page measures is what sits outside it, and who answers for an agent once it acts.
What the platform is
Solo.io comes from the team behind Istio, and its agent stack is built the way a service mesh is built: a data plane in the traffic path, a control plane in Kubernetes, and policy attached to identity. Four pieces make it up.
- agentgatewayan open-source proxy for MCP, agent-to-agent and LLM traffic, with an enterprise build that adds on-behalf-of identity, OAuth scope restriction, Microsoft Purview DLP, LLM budgets and a cost-management UI. Policy is written in CEL against headers, token claims, source identity and MCP tool names.
- The ambient meshSolo's Istio distribution, where agentgateway runs as an ingress, egress or waypoint proxy and every enrolled workload receives a cryptographic identity issued by the infrastructure rather than declared by the application.
- kagenta Kubernetes-native agent runtime that defines agents as cluster resources, with tool approval gates for a human in the loop and mTLS and egress policy from the mesh underneath.
- agentregistrya catalog for agents, MCP servers, skills and prompts with an approval queue for new artifacts, plus discovery of agents already running on Kubernetes, Amazon Bedrock AgentCore, Microsoft Foundry and Copilot Studio.
All of it is self-hosted, with air-gapped installs and FIPS builds for regulated environments, and per-request access logs and traces export to the customer's own telemetry stack.
Where Solo.io is strongest
Two of the sixteen rows below go to Solo.io and four are level. Most follow from the same choice: the traffic path is the product, so everything on it is engineered deep.
- Network-layer enforcementLayer 4 and Layer 7 policy through the ambient mesh, with workload identity on every connection. We govern the action rather than the network, and run alongside whatever mesh is already there, which is what lets one policy reach agents that never join it.
- Ecosystem breadthopen-source projects with foundation backing, and integrations across the major LLM providers, MCP clients, agent frameworks and cloud agent runtimes. We run a focused set of governed connectors with a fixed integration SLA instead, which is what lets every one carry the same per-action policy.
- MCP tool governance and single-call blockingCEL rules on tool name and caller identity that hide a tool from one caller and deny a single call with a 403 while the agent keeps running. Both level.
- Delegationa built-in token service for RFC 8693 on-behalf-of exchange, with policies that see the user and the agent together. Level.
- Deploymentself-hosted on Kubernetes or OpenShift, air-gapped, with FIPS builds. Level.
Where the path ends
A gateway and a mesh govern what flows through them. Solo.io extends that reach in two directions: desktop AI clients can authenticate to the gateway, and the registry can list agents running on connected cloud runtimes. Both are real, and both depend on the agent being routed or the runtime being connected.
What remains outside is the agent that never takes that path: one running inside a SaaS platform, one calling an internal API directly with a static key, one on a laptop. The registry's own documentation draws the line clearly: agents it discovers but did not deploy are listed as unmanaged, and only the ones it deployed can be acted on. That is where the architecture stops, and it is why agents with no vendor identity object score a 2.
Who a Solo.io request answers to
Solo.io answers this in two ways. When a user delegates to an agent, the token service exchanges the user's token for one carrying both identities, policy can reason about the pair, and the audit trail follows the chain. When an agent acts on its own, the mesh gives it a cryptographic workload identity tied to where it runs, and policy attaches to that.
The distinction is between which workload made a call and who answers for the agent. A workload identity says which service account in which namespace sent the request; it does not name a person. Across the gateway, registry and runtime documentation, no field records the human accountable for an agent; the registry logs who published and approved an artifact, which is the closest equivalent. So an autonomous action resolves to infrastructure, and a delegated one to whoever delegated it.
Three questions to put to Solo.io's stack
The table is organised around three questions, and each lands on a different part of Solo.io's architecture: the gateway, the identity model and the reach of the mesh and the registry.
- Be at runtimefor anything crossing agentgateway or a waypoint, Solo.io decides on every request. What decides for an action that crosses neither?
- Know the identityan autonomous agent resolves to its workload identity, and a delegated call to the user who delegated. Which named human answers for the agent itself?
- Cover everythingdoes governance reach the agent that is not in the cluster, not on a connected runtime and not routed through the gateway, including the ones on employees' devices and in their browsers?
Then the bill. There is no public price list, licence keys come from an account representative, and the gateway, the registry and the Istio distribution each carry their own licence. A price per governed agent tracks how many agents you run.