obstruo is the neutral control layer for regulated AI. One plane sits in front of every provider, so you can govern what your AI can see, say, and do, and prove it on every call.
Companies are deploying AI faster than they can govern it. Every LLM call is becoming a potential compliance event, and most organizations have no single place to decide what reaches a model, where it is processed, and how it is audited.
Customer PII reaches providers without consistent redaction. Each team reinvents anonymization, or skips it.
Provider keys live across teams and tools. Audit trails are fragmented across vendor dashboards no one owns.
Compliance arrives after deployment. The EU AI Act makes AI a governance problem, not only a technical one.
Apps and agents hold one obstruo key. Every request passes through the control plane, redacted, routed, enforced, and logged, before it reaches any provider.

Because every call already passes through the gateway, obstruo can act on it in path. No queue, no agent to wake, no redeploy. Three kinds of control, one plane.
Strip or stop what must not pass: PII, secrets, jailbreaks, prompt injection, before it reaches the model.
Require what policy says must be present: context, disclaimers, allowed tools, on the way through.
When policy says a human must decide, hold the action, escalate with context, and emit a signed Article 14 record.
From keys and redaction to the governance registries your agents will need. Some surfaces are live today, others are in preview, with the governance model already wired into the gateway.
A per-country pipeline of regex, NER, and LLM entity detection tokenizes sensitive data on the way in. A prompt from Germany leaves with GDPR-grade redactions; the same prompt from California gets CCPA-grade.
Stop traffic at the gateway the moment something goes wrong: hard kill, safe degrade, or quarantine. It takes effect in path immediately, with no async plumbing and no redeploy. Every engage and restore is signed into the audit log.
One audit trail across every provider and agent: the full call chain, the routing decision, and the redaction state preserved exactly as it was at request time. Query it, export it, and retain it for years.
The gateway sees what your agents actually do, so it can discover them, classify risk, and hold their tools and data sources to one policy. A registry for the AI surface area, half-filled for you.
Owners, risk, data sources, tools, and approvals in one registry. Auto-discovered from gateway traffic.
Trust, transport, auth posture, and per-tool permissions. Flag destructive tools before an agent connects.
Source, bundled scripts, and the capabilities each skill is allowed to use. Approve code execution and egress.
Route across models, providers, and regions by policy and cost. Failover when one degrades. No governance locked into a single vendor ecosystem.
EU-resident by default. Pin traffic to in-jurisdiction endpoints and keep processing where your regulators expect it.
Policy is enforced in path on every call, not reported on after the fact. Redact, route, hold, or block, and emit signed evidence as it happens.
Agents, MCP servers, and skills in one place: owners, risk, data sources, and per-tool permissions, discovered from real gateway traffic.
Point your existing SDK at obstruo and change nothing else. Provider keys live in the vault, redaction and routing apply in path, and the audit record is written before a single token leaves your network.
from openai import OpenAI
client = OpenAI(
base_url="https://api.obstruo.ai/northwind/v1",
api_key=OBSTRUO_KEY, # one key, provider keys live in obstruo
)
resp = client.chat.completions.create(
model="obstruo-chat", # logical model, obstruo picks the provider
messages=[{"role": "user", "content": prompt}],
)
# PII redacted, call routed, decision written to the audit log
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.obstruo.ai/northwind/v1",
apiKey: process.env.OBSTRUO_KEY, // one key for every provider
});
const resp = await client.chat.completions.create({
model: "obstruo-chat", // obstruo resolves the real model
messages: [{ role: "user", content: prompt }],
});
// redacted, routed, and audited before it reaches a provider
curl https://api.obstruo.ai/northwind/v1/chat/completions \ -H "Authorization: Bearer $OBSTRUO_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "obstruo-chat", "messages": [{"role": "user", "content": "..."}] }' # one endpoint, governed: redaction, routing, and audit in path
Sovereign AI is not only about where the model runs. It is about who controls the data, the rules, the routing, and the audit evidence.
Put one control layer in front of every LLM call. Deploy AI faster, without giving up control over data, compliance, and auditability.