Deterministic YAML. No LLM in the eval path.
Drop a file in your policy directory. Same input, same answer, every time. Any engineer can read it. Any compliance team can audit it.
Most companies keep AI agents in read-only mode. They're right to be cautious. Gate is the deterministic control plane between every agent decision and every production write. Policy decides what executes. Humans approve what matters. Everything is logged forever.
Runtime governance for AI agents. Early access waitlist.
Was it the first run or the fifth? What policy did it follow? If you can't answer those in 30 seconds, you don't have write-path governance. Most teams are rebuilding it from scratch — badly. Gate is the infrastructure.
Drop a file in your policy directory. Same input, same answer, every time. Any engineer can read it. Any compliance team can audit it.
Reviewers see risk score, record count, sensitivity tags and destination. Approve or reject in one click — dashboard, Slack, or API.
One auto-approved, one blocked, one held for review. Run it locally in under a minute — no server setup, no API keys.
V2 governs writes when the agent calls the SDK. V3 puts Gate in the network path: a forward proxy intercepts outbound HTTP, a TLS layer handles HTTPS. No SDK changes. No path around it.
The agent submits intent only. Gate evaluates policy, fetches the credential ephemerally, executes, then discards it from memory. A compromised agent has nothing to exfiltrate.
Execution continuity for governed agent runs. When a tracked run breaks during approval, execution, or retry, it picks up from the last safe point.
Approvals, audit trails and run inspection in one place. Engineering can finally see Marketing's queue.
These aren't edge cases. They're the first things that go wrong when agents move from read-only to write-path. Every team hits them.
Agent retried a lead workflow. Webhook fired twice. The lead got two AI calls in 30 seconds.
Agent sent Hello {{customer_name}} to hundreds of contacts before anyone noticed.
Enrichment agent overwrote 847 records with partial data. No rollback path. No audit trail.
Agent proposed a payout to an unlisted destination. Not in the allowlist. Nothing moves. The attempt is fully audited.
No flagged terms, single message, below threshold. Gate approves instantly, issues the execution order, logs the outcome.
Same agent, different draft: "refund guaranteed." Blocked before it reached Zendesk. The audit shows why.
gate.propose() or POST /v1/intents with destination, policy and payload. Unknown agents rejected. Duplicates blocked.
Deterministic evaluation. Risk scored from destination, record count, financial value and sensitivity tags.
Low risk auto-approves. High risk enters the approval queue with full context. One click.
One-time token, 15-minute TTL. In runner_exec mode a worker in your VPC executes — credentials never leave.
Every state transition logged and queryable by intent ID. Not deletable. The record of everything your agents did.
That's the moment it clicks. An agent tried to write. Gate stopped it. You saw why. The surface area is intentionally small — complexity lives in the policy file.
import { Gate } from "zehrava-gate" const gate = new Gate({ endpoint: "https://gate.yourco.com", apiKey: "gate_sk_..." }) // 1. Submit intent — get a policy decision immediately const p = await gate.propose({ payload: "./leads.csv", destination: "salesforce.import", policy: "crm-low-risk", recordCount: 847, idempotency_key: "batch-2026-03-08" }) // p.status → "pending_approval" (over the 100-record threshold) // 2. Human approves (dashboard, Slack, or API) await gate.approve({ intentId: p.intentId }) // 3. Signed execution order (15-min TTL) → worker runs in your VPC const order = await gate.execute({ intentId: p.intentId }) // 4. Full audit trail const audit = await gate.verify({ intentId: p.intentId })
from zehrava_gate import Gate gate = Gate(endpoint="https://gate.yourco.com", api_key="gate_sk_...") p = gate.propose( payload="payout_batch.csv", destination="netsuite.payout", policy="finance-high-risk", ) print(p["status"]) # pending_approval — always, for finance-high-risk
# scaffold 3 starter policies + .env npx zehrava-gate init # start the server npx zehrava-gate --port 4000 --policy-dir ./policies # or with Docker — SQLite in a named volume docker compose up
LangGraph has HITL. CrewAI has callbacks. None of it is shared, none of it spans teams. Gate sits outside every framework and governs all of them the same way.
| Feature | Framework built-in HITL | Zehrava Gate |
|---|---|---|
| Enforcement | Opt-in. Dev forgets to add it. It doesn't run. | Mandatory. Policy-driven. No bypass. |
| Audit log | Console logs scattered across five repos. | Centralized. Immutable. Queryable by intent ID. |
| Cross-team | Siloed per framework. | One queue. Every agent, team and framework. |
| Identity | The agent is code. No verified sender. | Every intent has a verified sender. Registry enforced. |
| Execution | Agent writes directly. No expiry. | Signed order. Worker runs in your VPC. 15-min TTL. |
| Policy | Hardcoded per agent. Not shareable. | Shared YAML. Same rules across every agent. |
Agents that write, send and execute without checkpoints create silent failure modes. Here's the fix.
Step-by-step tutorial for human-in-the-loop checkpoints on agent writes, in Node.js and Python.
The obvious design for an agent safety layer would be another AI. Here's why we went the other way.
An agent production incident that left no trace — and the commit checkpoint pattern that prevents it.
How Gate fits alongside NeMo Guardrails, Guardrails AI, LiteLLM and Portkey in a complete stack.
Three posts. Four agents. One approval queue. Nothing went live until a human approved it.
For auto-approved low-risk writes: one call. POST /v1/intents returns approved immediately if the policy allows it. Evaluation is synchronous and deterministic — no LLM call, no network hop outside Gate, sub-10ms in practice.
For human-reviewed writes: yes, there's latency — that's the point. You're waiting for a human. The approve + execute calls are lightweight once the decision is made.
Self-hosted Gate runs in your own infrastructure. No external dependency, no rate limits, no per-call pricing.
"The worker called /v1/executions/:id/report with status: succeeded." That's it. Gate trusts the worker's report.
Gate's job is governance — deciding whether an action is allowed and logging the full lifecycle. Verifying the worker did exactly what it said is the destination system's job. Salesforce confirms the import. Stripe confirms the charge. Gate confirms the intent was authorized and executed by an authenticated worker with a valid one-time token.
Cryptographic execution proofs — the worker signs the result, Gate verifies — are on the roadmap. Today the audit trail shows who authorized what, when, and what outcome was reported.
Gate's agent registry isn't replacing your IAM. It's a layer above it — governing intent, not credentials.
Your IAM controls whether the service account can call Salesforce. Gate controls whether the agent is allowed to send this specific write given the current policy, risk score, and approval state. Two different questions. Both need answers.
In runner_exec mode, Gate never touches your credentials. The worker holds them, inside your VPC. Gate is in the decision path, not the credential path.
Self-hosted — the default — means Gate runs on your infrastructure. The database, the payloads, the ledger: all on your server. We never see it. You control retention.
A PII scrubber runs on every unauthenticated read endpoint — emails, phone numbers, payload content stripped before anything goes out. Authenticated API calls get full data.
Cloud-hosted, SOC 2, encryption at rest and configurable data residency are on the roadmap — not shipped yet. If you have a hard compliance requirement today, self-host. It's a 5-minute deploy.
Most companies keep AI agents in read-only demo mode. They're right to. When an agent writes to production unsupervised, mistakes are expensive — wrong emails, duplicate records, refunds that shouldn't have happened. So agents stay sandboxed and roadmaps stall.
Gate changes that. Policy decides what runs. Humans approve what matters. Every action logged. Companies stop treating agents as a liability and start shipping them to the write path.
The bet is that this is infrastructure, not application logic. Every team building governance from scratch is building the same thing. Right now we're at cooperative adoption. The goal is an enforced standard.
Gate is free to self-host, forever. Join the waitlist for managed cloud hosting, credential vault integrations, and enterprise support.
No spam. Direct updates when managed cloud & enterprise features ship.