Know what your agents
actually did.
Enlil is an open-source control and audit plane for AI agent actions. It sits inline between your agents and any model or tool, and answers the two questions that keep agents out of production: what is this agent allowed to do, and can you prove what it did?
Claude secures Claude. Enlil governs everything your agents touch.
$ cargo install enlil $ enlil → listening on http://0.0.0.0:8080 — traces at /api/traces
$ docker run -p 8080:8080 \
-v enlil-data:/data ghcr.io/enlilhq/enlil
$ curl -L https://github.com/enlilhq/enlil/releases/latest/\ download/enlil-v0.1.0-x86_64-unknown-linux-gnu.tar.gz | tar xz $ ./enlil
Zero config. Point your agent's base URL at it, then open
localhost:8080 for the built-in dashboard.
One inline hop. Every action governed and recorded.
Send a request through Enlil and it enforces policy, strips sensitive data, and writes an audit trail — before the provider ever sees it.
Vendor-neutral by construction
Enlil scans payloads structurally, not by schema. It walks every string in the request rather than matching one vendor's field names — so new providers and frameworks are covered on day one, with no per-vendor adapter to wait for.
| Payload shape | Result |
|---|---|
| messages[].content — OpenAI | 403 blocked |
| messages[].content[].text — OpenAI multimodal | 403 blocked |
| system — Anthropic | 403 blocked |
| contents[].parts[].text — Gemini | 403 blocked |
| params.arguments — MCP tools/call | 403 blocked |
| prompt — bare completion | 403 blocked |
Each case is pinned by a test in the repo. Your agents will not all be on one model, and your audit trail should not be owned by whoever sold you the model.
What's in the box
All of it open source. This is the engine, not a limited demo of a paid product.
◆ Injection & tool poisoning
Scans message content for instruction-override attempts, and MCP/OpenAI tool descriptions for hidden imperatives, encoded blobs, and invisible Unicode-tag smuggling.
◆ Policy rules
Declarative block / redact / alert rules per request. Credential exfiltration, SQL injection, and prompt injection ship enabled.
◆ Reversible PII redaction
Masks SSNs, emails, cards and phone numbers on the way out, with a local vault to reverse it. Also deobfuscates hex-encoded shell payloads.
◆ Time-travel traces
Every request gets a trace id and is recorded with its governance decisions, cache disposition, latency and cost. Stored locally in SQLite — your data stays yours.
◆ Agent loop-breaker
Detects a session re-issuing the same request intent within a window and hard-stops it before it burns your budget.
◆ Built-in dashboard
Served from the binary itself at /. No separate frontend to deploy, no npm install, no cloud account.
Governance you won't feel
Enforcement is on the critical path, so its cost is measured rather than asserted — and regressions fail the build.
Per-request CPU overhead, 5000 iterations, release build, measured on CI so you can check the numbers in the Actions log instead of trusting us. Rust and Tokio, no GC pauses on the hot path; the request body is parsed once and shared across every analyzer. One binary with no database, cache, or cloud account to stand up first — traces go to local SQLite.
Enlil, and Plumb
Enlil is complete and free forever for a team running its own agents. Plumb is the commercial cloud built on the same engine, for when an organisation needs it.
Enlil — open source
Single-tenant, self-hosted, zero config. BSL 1.1 → Apache 2.0.
- The full inline enforcement engine
- Local traces and the built-in dashboard
- Exact-intent caching and cost accounting
- Run it in production, modify it, keep your data
Plumb — commercial cloud
The org wrapper, when one team's proxy isn't the problem any more.
- Multi-tenancy, SSO and RBAC
- Signed compliance evidence packs
- Long-term retention and fleet-wide policy
- Managed, with support
The only BSL restriction is offering Enlil itself as a competing managed service. If you're running agents, you're unrestricted.
Put it in front of your agents
One binary, no signup, no cloud account.
$ cargo install enlil $ enlil