Skip to content

The AI Control Plane

At the centre of the platform sits the Brutor AI Gateway: a single entry point that your AI systems, MCP/IDE clients and the User Portal all call, and that fronts every AI resource you allow — models, MCP servers, agent skills, knowledge bases and peer agents.

Brutor AI Gateway architecture: your AI systems, MCP/IDE clients and the Brutor User Portal all enter one Rust proxy. Inside it, the top half is enforced in the request path on every call — identity and RBAC, guardrails, policies, routing and resilience, limits and budgets, and the two-layer cache — and the bottom half is the evidence every call leaves behind: the run ledger, the signed call chain, and drift/replay/liveness signals feeding the assurance report. Below the gateway sit the AI resources it fronts: models, MCP servers, agent skills, knowledgebases and agent peers.

Read the picture in two halves. The enforcement half runs in the request path on every call — it can block, redact or refuse, and there is no opt-out path around it. The evidence half is what every call leaves behind: the run ledger, the signed call chain, and the signals that feed assurance. Governance you can switch off is advice; this is neither optional nor after-the-fact.

Clients don’t change to get this: point an existing OpenAI or Anthropic SDK at the gateway’s base URL and every request is authenticated, policy-checked, metered and logged. The client sees a normal response — governance is invisible until a policy fires.

When a request hits the gateway, Brutor transparently applies:

Control What happens
Authentication & tenancy The API key or JWT resolves to a tenant, user and resource group. No anonymous traffic reaches a provider.
Guardrails Input and output checks — PII, prompt injection, jailbreak, secrets, banned words, toxicity — run inline. A blocked request returns 403 with a guardrail_blocked error; the provider never sees it.
Argument & semantic policies Tool calls are checked against argument rules and semantic intent policies — refused, or held for human approval.
Budgets & limits Daily/monthly token and dollar budgets, requests-per-minute and concurrency caps per resource group and per model. Exceeded limits return 429 with a Retry-After header.
Usage metering Tokens, cost, latency and cache hits are written to the usage ledger and attributed to the user, group, model — and run.
Audit Every decision — allowed, blocked, redacted, approved — lands in the proxy and audit logs with a correlation ID, and optionally carries compliance tags (SOC 2, EU AI Act, HIPAA, GDPR).

The same gates apply to every governed surface — LLM completions, MCP tool calls, A2A delegations and agent-skill executions — so an agent’s whole loop is governed, not just its model calls.

What actually happens to one call, gate by gate:

The path of a single AI call through the gateway. Going out, it passes in order through identity and RBAC, input guardrails, policies, limits and budgets, cache lookup and routing before reaching the provider. Each gate can stop it instead: 401 or 403 with no valid principal, block or redact at guardrails, deny or hold at policies, 429 at a budget or rate cap; a cache hit answers without calling the provider at all. Coming back, the response passes through output guardrails — which can block or redact mid-stream — and is recorded in the run ledger, the usage record and the audit log before reaching the caller. Every outcome, including every refusal, is recorded.

Two properties are worth pausing on:

  • Blocked requests short-circuit. A guardrail violation or exceeded budget stops the call at its gate — the provider is never called, no tokens are spent, and the refusal is recorded with the same fidelity as a success.
  • Every outcome is evidence. Allowed, cached, redacted, denied, held for approval — each lands in the run ledger, the usage record and the audit log. This is what makes assurance possible without instrumenting your application.

For the deployment view behind this picture — the Rust data plane, the Python config plane, the shared database — see Architecture.

Not all AI traffic can route through a gateway, and Brutor does not pretend otherwise. Two mechanisms bring the rest into the same picture — observed, costed and attributed, but never enforced:

  • Traffic Data Import calls provider enterprise APIs — usage and spend exports for the ChatGPT, Claude and Copilot seats you buy — and lands them in the same usage ledger as routed traffic. FinOps sees one number per team and provider, whether the tokens went through the gateway or not.
  • Shadow AI Discovery collects the non-routable and unregistered traffic: discovery agents and adapters send signed events about AI usage found on the network, in repositories or in expense data — agents nobody registered, MCP servers nobody governs.