The agent proposes. Verun authorizes.
Every consequential action passes three layers of control before it executes. Deterministic. Explainable. No LLM judge in the decision path. Runs inline with negligible overhead.
Agent proposes an action
The agent runtime routes the consequential action through Verun — via the OpenAI-compatible proxy, the sidecar, or an explicit SDK call.
Policy — Can it?
The action is checked against tenant policy: allowed tools, thresholds, environment restrictions, allow/block lists, and mandatory-approval rules. Default-deny — undefined actions don't proceed.
Behavior — Does it usually?
The action is scored against the agent's own behavioral baseline. Velocity bursts, first-seen targets, cross-domain behavior, and unusual sequences raise an anomaly signal — UEBA for agents.
Mission — Should it?
A deterministic off-topic tripwire: an action drifting from the agent's declared purpose is held for human review before it executes.
Decision returned
Verun returns one of four decisions synchronously. ALLOW proceeds. HOLD pauses for review. BLOCK refuses. ESCALATE pushes to a human immediately. Behavioral and mission signals hold — they never silently block.
Enforcement mode applied
Tenants graduate through enforcement phases: observe (record what would have happened), hold_only (convert blocks to holds), then full. No team deploys blocking infrastructure cold.
Human review, when needed
Held and escalated actions enter a review workflow with full context — proposed action, target, reason, anomalies, policy version. A reviewer approves once, or turns the decision into a standing rule.
Signed receipt written
Every decision produces a signed receipt: which layer decided, why, under which policy version, with the anomaly and mission signals attached. Replayable as evidence.
From observation to policy.
After observing, Verun mines the recorded decisions into a draft policy — an allowlist of the actions your agents actually use, sensible thresholds from what it saw (for example, a refund-amount threshold for the refund action), and default-deny for everything else. Deterministic, explainable, and yours to approve — no LLM, no blank page.
Govern any agent, any stack.
From a single HTTP call to a drop-in proxy to an MCP gateway. Choose the level of enforcement your deployment needs.
Proxy
Agent thinks it is talking to its model provider. Verun intercepts each tool-call, authorizes it, then forwards (ALLOW), pauses (HOLD), refuses (BLOCK), or routes to a human (ESCALATE). Zero application code changes.
OPENAI_BASE_URL=https://verun-proxy.internal
Sidecar
No base-URL change required. Intercepts outbound HTTP at the network layer via sidecar injection. Envoy/Istio ext_authz compatible. Configured via Kubernetes annotations and a Helm chart.
The right choice for teams that cannot route all traffic through a single proxy, or who require network-layer enforcement independent of application code.
SDK
For teams that want explicit instrumentation and per-action control. Zero required dependencies — Python stdlib only.
d = verun.authorize( agent_id=..., action=... ) if d.held: verun.wait_for_review(d.receipt_id)
MCP gateway
Govern tool-calls at the Model Context Protocol layer. Every tool an MCP client invokes is authorized before it runs — no per-agent wiring.
n8n · Make · Zapier
Drop a Verun node into a no-code workflow. Automations built by ops teams get the same authorize → hold → approve path as coded agents.
One-line HTTP call
Any agent or chatbot can self-check by calling one Verun endpoint from its own instructions. Near-zero setup — see “Verun in one line” below.
Verun in one line.
Any agent or chatbot can govern itself by calling a single Verun HTTP endpoint from its own prompt or instructions — before it takes a consequential action, it asks Verun and obeys the decision. Near-zero setup, works anywhere.
Honest trade-off:this path is opt-in and cooperative — the agent has to choose to call it, so it can be bypassed. It's great for governing your own agents, not for adversarial enforcement. When you need enforcement that can't be skipped, upgrade to the SDK, proxy, sidecar, or MCP gateway.
Verun Light is currently in testing with a small closed community.
# In your agent's system prompt: Before any refund, payment, or email, POST the action to https://api.verun.ai/authorize and only proceed if it returns allow. If hold, tell the user it's pending review.
One call before every consequential action.
The SDK is zero-dependency — Python stdlib only. Drop it into any environment. Every call returns a deterministic decision and a signed receipt.
- ✓Works with LangGraph, CrewAI, AutoGen, and raw Python
- ✓Synchronous — decision returned in the same call
- ✓Four decisions: allow / hold / block / escalate
- ✓Signed receipt stored automatically
import verun # Authorize before a consequential action decision = verun.authorize( agent_id="support-refund-agent", action={ "type": "issue_refund", "amount": 4200, } ) # Handle the decision if decision.allow: issue_refund() elif decision.held or decision.escalated: queue_for_review(decision.receipt_id) else: # blocked log_blocked(decision.reason)
When Verun says Hold or Escalate.
A hold doesn't cancel the workflow. It queues the action for human review with full context, pausing execution until someone decides — or until a standing rule decides for them.
Hold / Escalate
Verun pauses the action. Receipt stored with the reason and signals.
Review Queued
Reviewer sees the action, target, anomaly signals, and policy version.
Decide or Remember
Approve once, reject, or turn the decision into a standing rule.
Agent Resumes
If approved, the agent continues — decision logged. If rejected, the workflow ends cleanly.
Synchronous and deterministic
Same input → same decision → same reason
Every action produces a signed receipt