Bring the runtime you already have.
Cirvix does not ask you to move your agents. It sits on the path between whatever you run and whatever it reaches, and it speaks the interfaces both sides already use.
Four ways in.
Pick the one that matches how much you want to change. All four produce the same decision and the same record.
| Surface | Use it when | Shape |
|---|---|---|
| Node SDK | You want the decision inline, in process. | guard.wrap(fn) around the call you want governed |
| Python SDK | Your agent stack is Python. | Native evaluator, held to the shared conformance fixture |
| HTTP gateway | Your runtime is not Node or Python. | cirvix gateway in front of the action |
| Webhooks | Something outside your runtime triggers the agent. | Signed external triggers, verified before dispatch |
What connects.
Inputs on one side, sanctioned destinations on the other. The control plane is the only path between them.
Agent frameworks
Bring your own runtime. The SDK wraps the tool call; the framework does not need to know Cirvix exists.
→Tools & MCPClaude Code & OpenClaw
Direct Model Context Protocol gateway. Intercepts tool calls, MCP resources, and sub-agent delegations inline.
→OutputsLLM providers
Model routing is scoped per agent and per org, so a key is never broader than the agent using it.
→OutputsExternal APIs
Tool calls are sanctioned individually. An unmatched call is denied, not passed through.
→OutputsDatabases
Tenant-aware access, with org_id scoping enforced in routing rather than added by convention.
→IdentityOIDC / SCIM
Identity is (issuer, subject) — never email. Deprovisioning revokes live sessions, not just membership.
→DeliveryGitHub Action
Scan policies in CI and publish SARIF, with stable fingerprints so dismissals stick.
→Missing something you need?
Tell us what your stack looks like and we will tell you honestly whether it fits today.
Bring every agent
under control.
Set durable policy, preserve a verifiable record, and give teams a safer way to put intelligent systems to work.