I build the guardrails that let AI agents do real work.

Keeper runs ten Claude Code agents on a server, for my own work and for my clients. Every agent’s tool calls pass a policy gate compiled from written delegations, except the ops agent that maintains the system. The gate is open source.

How the gate decides (opens GitHub in a new tab)

Calls refused by the gate. Gate snapshot, Oct 5 to Nov 3
86 refused
Calls outside any grant, allowed and logged. Gate snapshot, Oct 5 to Nov 3
9,253
Tests in keeper-gate, the open-source gate (opens GitHub in a new tab)
115
Long-running agents, each with its own written delegation
10
Running daily since Aug 31, 2026. Gate data starts Oct 5
Daily

From the gate log of my own system. Every agent’s tool calls pass the gate, except the ops agent’s; the counts are a snapshot, not live. How Keeper works.

One tool call, through the gate

Agent · hook · policy from delegations · allow, log or deny · tool

KEEPER-GATEAgentCLAUDE CODEHookEVERY CALLPolicyPER AGENTDelegationsWRITTEN, BY MEAllowIN A GRANTAllow, logOUTSIDE GRANTDenyWITH REASONToolRUNS ITAgentACTS ON REASONcallcompiledallowedloggedrefused,reason sent back

Featured work

Things I’ve built

An open-source policy gate for AI agents and the system I run behind it, and a tool that shows who really does the work in an open-source project.

Keeper

An open-source policy gate for long-running Claude Code agents. It checks every agent’s tool calls against written delegations, except the ops agent’s: covered calls pass, a short list of dangerous ones is refused with a reason, and the rest are allowed and logged. I run ten agents behind it on a server, and failures report to an ops agent that fixes the cause.

Claude Code · Agents · MCP · TypeScript

Canopy

Reads GitHub, Jira, Slack and mailing lists together and shows who contributes what. On Apache Kafka it covered 428 PRs and 308 Jira tickets, linked 105 contributors as the same person in GitHub and Jira, and found that 79% of the 308 Jira tickets had no GitHub PR reference. Claude Code writes the digests, and a verification script checks every statistic against the source data.

Used by an Apache Kafka PMC member, who shares its reports with other communities.

Python · Claude Code

Articles

Recent articles

Writing on running agents, permission design and infrastructure.

· 5 min read

An Agent Ran My Visa Paperwork

Apostilles, translations, a US mailbox and a lawyer working from a portal checklist. How one of my agents ran the paperwork for a residence permit, and the parts it could not do.