Kirto Gate

Every AI gateway routes. Gate decides, and proves what it decided.

Six kinds of product sit between your application and a model. Which moments of one request each is present for, when to use one instead of Gate, and eight questions that separate them.

what is compared
6 positions on the path, not products
what decides one
which moments of a request it is present for
what is not here
a feature table, which is wrong within a quarter
positions checked
28 August 2026

Position is the part that keeps. Where a product sits on the path, and who pays it for what, holds for years: a marketplace will not stop being the counterparty, a gateway will not stop thinking in routes, a governance platform will keep answering to the person who signs the assessment. Features move the other way. The products here are converging on one list from opposite directions, so a cell saying any of them lacks something is wrong within a quarter. The grid below is drawn from position, and a deployment can be planned around it.

One request, and who is present at each moment

A single call in the order it happens, from the credential the client presents to the check somebody outside the system can run on what was decided. Under it is one row per position: a filled mark where that position acts at that stage, a ring where it acts only through something else. Pick a stage and its column lights, with what is true there and what is not.

admitnothing sent yetsendone attemptdeliverthe record of itprovea different clockclientthe tool result comes back heredetectorcalled out to with a stringprovidermodel · MCP server12345678910
A stage of one request

1 of 10The client authenticates

on the path here
A marketplace, a proxy, the API gateway you run, the cloud's own service, Gate. Each issues its own credential and holds the provider's.
not on it
A detector and a governance SDK are handed text by an application that already holds the provider key.

2 of 10The request is admitted or refused

on the path here
A proxy, the API gateway you run, the cloud's own service, Gate. A key, a model allowlist, a quota, a rule.
not on it
A marketplace bills the call it has already made. A detector returns a score and admits nothing.

3 of 10What the request says is read

on the path here
A detector, the cloud's own service, Gate. Gate runs its pattern and model detectors inside the process holding the connection.
not on it
A proxy calls a detector over the network, so that detector's latency and its failure mode are the network's.

4 of 10What a tool result says is read

on the path here
Gate, on the tool_result segment, by default. That is where an injection arrives when a page an agent fetched carries one.
not on it
A product that thinks in routes sees one request body. A detector reads a tool result only when the application passes it one.

5 of 10What comes back is read in the stream

on the path here
The cloud's own service for its own models, Gate. Gate inspects the stream as it arrives, holding it only as far as a match could reach.
not on it
A detector called once the response is assembled answers after the user has read it.

6 of 10The tool call and the message to a peer agent

on the path here
Gate, at /mcp/<name> and /a2a/<name>, under the same keys, rules, budgets and record as the model call.
not on it
An API gateway with an MCP plugin reaches the call and not what the arguments say. The rest sit in front of a model endpoint.

7 of 10What it cost is settled

on the path here
A marketplace, a proxy, the API gateway you run, the cloud's own service, Gate. Gate reserves the cost before the call and settles it against real usage after.
not on it
A detector and a governance SDK never see usage. A rate limit counts requests, and spend goes uncounted.

8 of 10What was decided is written down

on the path here
Every position writes something. Gate signs each decision with the key of the node that made it and chains it to the one before.
not on it
A record kept in the vendor's account is the vendor's to produce, and says what the vendor chose to write.

9 of 10The claim is checked

on the path here
Gate: kirto-gate audit verify reads a trail in any order and reports every record altered, removed, moved, forged or cut short.
not on it
Nothing else on the path offers a check somebody outside it can run.

10 of 10What never came through

on the path here
Gate builds a second ledger from the provider's own usage API and judges the two against each other per day.
not on it
A ledger inside any product on the path cannot report the traffic that went around it.
PositionStage 1: The client authenticatesStage 2: The request is admitted or refusedStage 3: What the request says is readStage 4: What a tool result says is readStage 5: What comes back is read in the streamStage 6: The tool call and the message to a peer agentStage 7: What it cost is settledStage 8: What was decided is written downStage 9: The claim is checkedStage 10: What never came through
A marketplaceOpenRouter, Requesty, Vercel AI Gatewaypresentnot presentnot presentnot presentnot presentnot presentpresentpresentnot presentnot present
A proxyLiteLLM, Portkey, Heliconepresentpresentpresent only through another productnot presentnot presentnot presentpresentpresentnot presentnot present
The API gateway you runKong, Apigee, Tyk, Traefik, Envoy AI Gateway, kgateway, agentgatewaypresentpresentnot presentnot presentnot presentpresent only through another productpresentpresentnot presentnot present
The cloud's ownBedrock Guardrails, Azure API Management, Model Armorpresentpresentpresentnot presentpresentnot presentpresentpresentnot presentnot present
A detectorPresidio, Lakera, Prisma AIRS, Guardrails AI, NeMo Guardrailsnot presentnot presentpresentpresent only through another productpresent only through another productnot presentnot presentpresentnot presentnot present
A governance platform's SDKCredo AI, Holistic AI, watsonx.governance, OneTrustnot presentnot presentnot presentnot presentnot presentnot presentnot presentpresentnot presentnot present
Kirto Gatepresentpresentpresentpresentpresentpresentpresentpresentpresentpresent

Every position acts somewhere in the first eight stages, and a deployment that needs only what one of them does there is well served by it. Two of those eight are thin: the tool result nothing else on the path reads, and the tool call an MCP plugin reaches without reading its arguments. Every position writes something down at the eighth, which is why that column is full and why a record on its own settles nothing.

The line is cut after it. The last two stages are a check run later and a reconciliation run daily, off the request's clock. That is the cell Gate was built for: a record signed on the node that decided it, a check that runs without trusting the store it reads, and a second ledger for the traffic that never arrived. They start to matter at the first question about what a prompt contained, or whether a rule ran, and by then the quarter being asked about has already been forwarded.

When to use something else

Each position is the better choice for somebody. The cases below are the ones where it beats Gate, each argued in its own post.

A marketplaceOpenRouter, Requesty, Vercel AI Gateway
A developer with nobody asking. One person, one project, the model changes weekly, and a marketplace that does not store prompts by default beats most teams' own logging.
A proxyLiteLLM, Portkey, Helicone
Five people and three providers. Run LiteLLM, and keep it upgraded, because that is where the list of known fields lives.
The API gateway you runKong, Apigee, Tyk, Traefik, Envoy AI Gateway, kgateway, agentgateway
Keep the one you run. Keys, quotas and a model allowlist are answered by its own AI plugin, on the routes it already owns.
The cloud's ownBedrock Guardrails, Azure API Management, Model Armor
A single-cloud shop whose verifier reads the account's logs from inside the account. Everything it covers, it covers for that one cloud.
A detectorPresidio, Lakera, Prisma AIRS, Guardrails AI, NeMo Guardrails
Any content the process on the path cannot recognise on its own: injection, jailbreaks, toxicity. Buy the detector, then decide separately what holds the connection.
A governance platform's SDKCredo AI, Holistic AI, watsonx.governance, OneTrust
One application, one supported language, no agents talking to tools directly. It stops working at the first service that does not embed it.

Questions to ask any of them

Each asks about a position, never about one vendor's product, so the answers keep for longer than a feature table does. Four are about what happens while the call is open, three about what is left afterwards, and one about who can undo either: eight in all. A record makes prevention checkable and is no substitute for it, which is the order they are in.

Under each question is what a weak answer tells you, and beside it is Gate's. No other product is named here for an absence. Ask, and read what comes back.

While the call is open

  1. Can it refuse the call, or only report on it?A product that reports was never holding the connection, so the request had already gone.GateIt refuses. One process holds the connection while the rule runs, so a denied request never reaches the provider, and the caller gets a bounded reason at once. Nobody has to read an alert later.
  2. Does it read the arguments, or only the route?A route says which model. It does not say what the tool is about to do.Gateargs is a policy variable at the MCP hop, beside the tool's name, so a rule can refuse a write to an issue tracker from a bare workload before the call leaves. An unguarded read of an args field is refused when the rule is written.What a rule reads at each hop
  3. Does it know the person behind the agent, or only the key?A key names a workload. It cannot say whether anybody asked for this.Gateagent and user are separate principals, filled from the one token the identity provider issued, and present at every hop. A refusal can turn on whether anybody is behind the agent.Who the agent is
  4. When it changes something, is it the same process that found it?Two passes means the finder and the rewriter can disagree about where a value started.GateYes. The in-process detectors return byte offsets into the text as sent, and the operator rewrites that value in place, with nothing re-serialized in between. A redaction cannot miss a field the detector found, and cannot damage one it did not.One pass, one address

Afterwards

  1. If a record was altered or removed, what would show it?Nothing to show it means the record is a claim about their storage.GateEvery record is chained to the one before it on that node and signed with that node's key. kirto-gate audit verify reads a trail in any order, with anything interleaved, and reports every record that was altered, removed from the middle, moved or forged, by sequence number.Verify the audit trail
  2. What does the record contain, and what does it deliberately not?Anything that keeps your prompts is a data store you now have to assess.GateThe decision, the rule that made it, the control identifiers that rule named, and how many spans a redaction rewrote. Never the prompt and never the response. Reads and admitted requests are left out on purpose, and the documentation says so.The four ways to check that claim
  3. Which party, besides the store the records sit in, has to be honest for that check to hold?Every name in the answer is a party you are trusting. Count them.GateA quorum of your own cluster. A chain cannot show it was cut at the end, so each node offers its signed head to the cluster about once a minute, and kirto-gate audit verify -heads reports a trail that stops short of a witnessed head. Raft holds the heads and never the records; the records go to your collector, in your account. A cluster of one witnesses itself, and there the collector is the witness.What a cluster survives

Whoever runs it

  1. Who can turn it off, and would you know?Anyone who can edit the rule is part of the control. Ask how many that is, and what records them doing it.GateTwo answers, because there are two planes. A team cannot loosen a deployment-wide access rule: its own profile narrows the rule or leaves it alone. Changing the rule through the admin API is decided by a Cedar policy that denies by default and names roles your identity provider assigns. The write is a config.source.write record, naming the caller, in the same signed trail as the decisions the rule goes on to make. Whoever can edit the configuration file on the host holds more than any role, and the threat model lists that as a limit.Evidence

Two limits belong beside the answers about the record. A key used by somebody other than the node is not something a trail can show. It proves what the key signed, and keeping the key where only the node reaches it is the deployment's job. Reads and admitted requests are absent from the trail on purpose, because the record is bounded.

Positions checked 28 August 2026

The positions and the vendors named under them were last checked on 28 August 2026. The questions have been revised since. A post describes the day it was written, and this grid is the part of the argument kept current. The reasoning behind each position is a post of its own in Where control lives, starting at Where AI governance came from and ending with Comparing the six positions. The whole series is on the blog.