An agent is only as good as what surrounds it. I work on that part: what a tool call is allowed to do, what it costs, and what happens when it goes wrong.
Most of what I publish is small, dependency-free TypeScript for agents that run unattended — policy and guardrails, spend caps, loop detection, retries and circuit breakers. The rest is Python and notebooks, usually closer to the data.
I also write about how this field keeps renaming itself — prompt, context, harness, loop, graph — and the one skill that survives every rename: verification.
Small pieces, each one thing, no dependencies.
| Project | What it does |
|---|---|
| react-agent-loop | A minimal ReAct loop — bring your own LLM, register tools, run Think → Act → Observe with pluggable guardrail hooks |
| agent-policy-engine | Evaluates every tool call as allow / deny / quarantine: spend limits, allowlists, command safety, path protection |
| agent-budget-guard | Maps a spend balance to survival tiers and downgrades the model when funds run low |
| agent-loop-detector | Catches identical repeated calls, cyclic patterns and idle status-check loops, then returns a corrective nudge |
| resilient-http-client | Timeouts, jittered exponential backoff and a circuit breaker for outbound requests |
| x402-pay-client | USDC micropayments over HTTP via x402 and EIP-3009 on Base — no API keys, no logins |
Also building textdm (iMessage for agents), princeai (browser UI for Claude Code) and LifeOS (self-hosted life tracking). → all repositories



