Platform / Integrations
Does it meet the stack you already run?
GovernorAI governs agents it did not build, on infrastructure it does not own — so every integration here is an insertion point into something you already operate, not a platform you are asked to move onto.
ENFORCEMENT SEAMS
Where the decision is applied.
If a gateway already sees the call, that is where the decision goes. Each adapter is a thin protocol translator: it parses the tool call off the wire, builds the canonical execute request, and expresses the verdict in that protocol's own terms.
01Gateway and proxy adapters
failure_mode_allow: false is required.tools/call is governed; initialize, tools/list, ping and notifications pass through untouched.auth_request, Traefik ForwardAuth, an AWS Lambda authorizer, Apigee or Azure APIM. Allow returns 200, deny returns 403. This pattern cannot rewrite a body.02LLM gateways — governing the model call itself
CustomGuardrail.ext_proc filter.The gateway keeps the provider credentials, the connection and the retry behaviour. GovernorAI registers as a guardrail on the gateway that is already there and answers a question; it does not sit in the token path.
PLATFORMS
Named platform coverage.
Each of these has a page describing exactly what is and is not governed at that seam.
DISCOVERY SOURCES
Where unregistered AI activity shows up.
The discovery surface is derived from live wiring, so it cannot claim a source the backend cannot actually ingest.
01Agent frameworks
Framework runtimes are registered rather than found: an operator declares them, or they heartbeat themselves in. A framework install groups many agents under one process, so it is counted once, not once per agent.
02Identity and consent
03SIEM, log and telemetry
ddtags into user, host and env dimensions and reading the nested attributes object.governor.request_count, governor.request_latency, governor.policy_evaluation_duration.DECLARE AND OPERATE
Policy as a reviewed artifact.
LLM GATEWAYS
How each LLM-gateway adapter attaches and answers.
The gateway keeps the provider credentials, the connection and the retry behaviour; GovernorAI answers a question it is asked. Endpoints and on-allow, on-deny behaviour per adapter.
| Adapter | Attaches to | On allow | On deny, pause or error |
|---|---|---|---|
| Portkey webhook | POST /v1/portkey/guardrail — a Bring Your Own Guardrail check on the before- and after-request hooks. Config only; no code on the Portkey side. | verdict:true, with a redacted body returned as transformedData when Portkey sends the structured JSON. | HTTP 200 with verdict:false — never a 5xx. |
| LiteLLM guardrail | POST /v1/llm/check through governor_guardrail.py, wired at pre_call, during_call and post_call. | allow:true, with transformed_messages or transformed_response when content was shaped. | allow:false carrying fail_closed. The shim blocks on an outage unless fail_open is deliberately set. |
Envoy ext_proc | Envoy Gateway, Istio, Gloo, Envoy AI Gateway, agentgateway — gRPC on :9002. | CONTINUE; a redaction is applied as a body mutation. | Pause returns 202, deny returns 403. failure_mode_allow: false is required. |
| Forward-auth | NGINX auth_request, Traefik, Apigee, Azure APIM, Lambda authorizer. | 200. | 403. This pattern cannot rewrite a body — it emits X-Governor-Shaping-Required: true so the operator knows shaping was requested but not applied. |
# allowed, with the prompt rewritten by inline DLP
HTTP 200
{
"verdict": true,
"transformedData": { "request": { … } }
}
# denied. still HTTP 200 — a 5xx would trip
# Portkey's fail-OPEN default and let the
# model call through.
HTTP 200
{ "verdict": false }
# a pause is also verdict:false — a synchronous
# webhook cannot hold a request open while a
# human decides. the approval is recorded and
# the call is refused now.
# operator action required on the Portkey side:
# guardrail failure action = deny
# tenancy travels on the webhook call, so the
# verdict is attributable to a principal:
# x-governor-org-id
# x-governor-principal-id
# x-governor-agent-id SEAM CAPABILITY
What each seam can execute.
Allow, deny and pause are universal. The richer outcomes — redact, mask, constrain — are not, and a seam that cannot execute an outcome is not permitted to advertise it.
| Seam | Request side | Response side | Stated limit |
|---|---|---|---|
gateway_execute | Redact, mask, constrain | Redact and mask, including plain-text and SSE bodies shaped in flight | Constraining is request-side only. A response that cannot be shaped safely fails closed to deny rather than being forwarded un-inspected. |
mcp_invocation | Redact, mask, constrain — argument-aware | Retrieval output inspected as untrusted retrieved content | Ordinary model-answer responses are not classified on this seam. |
provider_bedrock | Redact, mask, constrain — verified against the exact payload sent onward | Redact and mask on the response text, with a re-scan that proves the content is gone | Streaming, SSE and binary Bedrock responses are not shaped. Content a detector cannot localize fails closed rather than being partially redacted. |
provider_azure | Constrain, re-verified against the exact request | Not offered | Response shaping is not available on this seam. A constraint that cannot be honoured fails closed to deny. |
provider_gcp | Constrain, re-verified against the exact request | Not offered | Response shaping is not available on this seam. |
sdk_wrapper | Consult only — allow, deny, pause | Not offered | The SDK path receives a decision, not a shaped payload; choosing a shaping outcome here downgrades to deny. |