Ellul Control
Your agents are powerful.
Make sure you are in control.
The problem
AI coding agents can execute arbitrary code, read your secrets, push to your repos, and modify your databases. They have the same permissions as the process they run in.
Your agent has your credentials. The only thing between it and a productiongit pushis whether the model decides to run the command.
IAM scopes access at the API boundary. It cannot pause an agent mid-action and ask the human “did you actually want this?” That is what Ellul Control does.
How it works
Three commands. No code changes. No SDK.
Shield classifies traffic by destination and HTTP method. Privileged requests pause for your confirmation. Everything else passes through with no added latency.
Install the CLI
One npm package. No configuration files. No Docker. No infrastructure to manage.
Log in with your passkey
Browser opens, you authenticate with FIDO2. Your biometric or hardware key is the only way to approve actions.
Start the proxy and work as normal
Shield runs locally. Your agents route through it. When they attempt a privileged action, you get a prompt. Approve or deny.
# Install and start
$ npm install -g ellul
$ ellul login
$ ellul
Shield proxy running on localhost:3005
# Push code to remote
$ /git-push
Gate locked. Approve via passkey...
Passkey verified. Pushing to origin/main...
Done. Credential session destroyed.
# Set a secret
$ /set-secret STRIPE_KEY sk_live_...
Gate locked. Approve via passkey...
Secret encrypted and synced to vault.
Works with any agent
The gate system
Every privileged action requires your passkey.
Gates are permission boundaries with a default state of locked. Each gate has a TTL that auto-expires. The agent never holds credentials directly.
Agent
Requests action
Shield
Pauses request
You
FIDO2 passkey
Shield
Executes + destroys
/git-push5 minCommit and push to remote
In-memory credential session
/set-secret30sSet a secret
Encrypted vault sync
/paste-secrets30sPaste and upload secrets
Encrypted vault sync
/enable-scopeSessionEnable a permission scope
Scoped policy grant
/set-policySessionSet a security policy
Policy enforcement
/revoke-deviceImmediateRevoke a trusted device
Device trust removal
Security
Defense Summary
The adversary is not an external attacker. The adversary is the AI agent itself. Traditional security assumes the workload is trusted. Agentic security assumes the workload is potentially adversarial and the infrastructure must constrain it.
Secret exfiltration via env vars
KernelSecrets not in agent's environment; injected via gate-controlled stdin pipe
Secret exfiltration via file read
KernelShield data in shield-runner-owned directories (700 perms)
Secret exfiltration via /proc
Kernelptrace_scope=1 blocks cross-UID ptrace; hidepid=2 on /proc
Credential theft via crash dump
KernelLimitCORE=0 on Shield systemd unit
Unauthorized git push
Kernel + Crypto9-layer defense: in-memory credentials, session tokens, gate tokens, safeGitCmd
Unauthorized deploy
KernelCaddy config dirs caddy:caddy 2770; agent not in caddy group
Database access without approval
Application + DBPer-app PostgreSQL roles; query proxy classifies SQL and enforces gate
Network exfiltration
KernelPer-namespace nftables egress whitelist
Cross-project data access
KernelMount namespace isolation; rsync snapshots with security filter
Side-channel (cross-tenant)
HardwareSovereign Host: no co-tenancy. Standard: namespace + seccomp
What we claim
Standard Instances provide stronger logical isolation than container-based sandboxes by using namespace stacking with no escape hatches.
Sovereign Hosts mitigate cross-tenant side-channel attack classes by eliminating co-tenancy. This is a design property, not a patch.
The gate system makes privileged agent actions require a cryptographic ceremony that terminates at a hardware authenticator.
Pricing
Start free. Scale when you're ready.
Every project gets its own isolated sandbox. Upgrade to Pro for a dedicated server with encrypted persistent storage.
Your agents are powerful. Make sure you are in control.
Three commands. No code changes. Hardware-backed approval for every privileged action.