Know what your agents do. Decide what they may.
Xenovia finds the agents already running, governs what they can reach, and leaves evidence an auditor accepts. Nova does most of the work with you.
Find the agents nobody registered.
Point a workload at the gateway and its tools, models and destinations are inventoried on first call. No instrumentation, no survey of your engineers.
Two of them reach customer data with no rule attached.
ProxyIntentStatusModel
support-botCustomer supportActivegpt-4o
finance-botInvoice triageActivegpt-4o-mini
reporting-botAnalyticsNeeds reviewclaude-sonnet
✦Nova
Found 12 tools across 3 proxies. 2 reach customer data (orders.read, db.users) with no policy attached.
See what every agent did today.
Volume, verdicts, latency and spend for all workloads in one place: the operational view your platform team asks for on day one.
One call was redacted at 14:02. Open it.
Decisions over timeAllowedEscalatedBlockedRedacted
08:0010:0012:0014:00
Latest decisionsView traces →
Allowsupport-bot412ms · 14:07:18
Redactsupport-bot604ms · 14:02:09
Allowfinance-bot318ms · 14:01:44
Blockreporting-bot288ms · 13:59:02
Stop the export before it leaves.
Describe the limit in plain English and Nova writes the rule. Watch it in Monitor, then enforce. The verdict lands in well under a millisecond, on the call path.
Enforced at 14:31. Blocks start climbing.
PolicyRuns atEnforcement
Customer data boundaryRequestEnforced
Refund limit for supportRequestEnforced
Prompt injection guardrailRequestMonitor
Tool-result inspectionResponseMonitor
✦Nova drafted this from “support may never export customer tables”
redact {
input.tool == "orders.read"
input.args.table == "db.users"
}Answer “what happened” in minutes.
Every session replays span by span: the model call, the tool it reached, the rule that fired and the reason it fired. No log archaeology, no guessing.
The rule worked. Now watch for the next one.
Modelgpt-4o812ms
Toolorders.read96ms
PolicyCustomer data boundaryRedact
Guardrailinjection 0.08Pass
Finishedresponse returned1.2s
Trace outcomeComplete trace
DecisionRedact
Rulecustomer_data_boundary
Rationaledb.users is out of scope for support
Catch the regression at three percent.
Rules watch block rate, guardrail scores, latency and spend, then reach your team where they already are. Nova says why it moved before anyone opens a dashboard.
Enforcement is biting. Who changed the rule?
ConditionPolicy block rate > 2%
Observed value3.4%
Window15 min
Occurrences6
ScopeProxy support-bot
In-appEmailSlack
✦Nova
Blocks rose after Customer data boundary moved to Enforced at 14:31. 6 calls from support-bot hit the rule.
Hand the auditor a record, not a story.
Every policy change, key and verdict is written as it happens, attributable and immutable. Evidence for SOC 2, the EU AI Act, or the customer asking how you control this.
And the same record wherever it runs.
WhenActionResourceActorSource
14:31UpdatePolicyrichardControl plane
14:02CreateAPI keyci-botControl plane
13:44UpdateAgentsrinivasProxy runtime
13:20CreateProviderrichardControl plane
Meet the residency rule without a rebuild.
The same control plane on our cloud, in your VPC, or entirely in your cluster. Decisions stay where your data has to stay.
NameStatusConnectionSync lagSpool
eu-prodActiveConnected0.4s0
us-stagingAwaiting connectionNever connected——
✦Nova
Store the bootstrap token, deploy the sync plane, and this shows Connected in about thirty seconds.