Projects

Case studies from my own infrastructure

I build and run my own agentic AI systems against live infrastructure. These are the three that best show how I work: what problem each one solves, the decisions that mattered, and what each demonstrates.

community-agent (Dave)

In production

Discord · WhatsApp · Claude Code · GitHub

Problem
A live community needs an agent that is genuinely useful without being able to do damage, and that can improve over time without anyone silently changing what it is allowed to do.
What I built
A community agent for Discord and WhatsApp, built in a month of part-time work: role-based access tiering, audit trails, and confirmation guards on destructive actions.
The decision that matters
The agent improves itself through a pipeline that coordinates Claude Code sessions through GitHub issues. Every change the agent proposes to itself becomes a reviewable artefact before it lands, so the improvement loop is fully auditable.
  1. CommunityDiscord, WhatsApp
  2. AgentRBAC tiers, CONFIRM guards, audit trail
  3. GitHub issuesimprovement queue
  4. Claude Codeproposed changes as pull requests
  5. Human reviewnothing merges itself

What it demonstrates: governance built into the architecture instead of bolted on. The GitHub-issues-as-coordination pattern turns self-improvement from a risk into a paper trail.

Crow's Nest

In production

Cloud log analytics · Claude API · ticketing

Problem
Operational signals arrive faster than people can triage them, and raw error noise buries the issues that matter.
What I built
An autonomous triage pipeline: an operational log stream feeds the Claude API for classification, and classified issues arrive in the ticketing system already triaged, with no human in the loop.
The decision that matters
Full autonomy is appropriate here because the blast radius is bounded: the pipeline's only power is to create tickets. Scoping an agent's authority to match the risk is the design decision, not an afterthought.
  1. Log analyticsoperational signals
  2. Claude APIclassification and triage
  3. Ticketingtickets, pre-triaged

What it demonstrates: matching the level of autonomy to the blast radius. No human in the loop is the right call when the worst case is an unnecessary ticket.

Conn (Agent.Connor)

In production

Claude Agent SDK · Docker · Azure Key Vault · self-hosted

Problem
An executive day is fragmented across a handful of work systems: tasks, messages, calendar, and mail. I wanted a chief of staff that works those systems continuously, controllable from my phone, without handing an autonomous system raw credentials to my working life.
What I built
A self-hosted multi-agent chief of staff: an 11-container Docker stack on a Mac Mini, built on the Claude Agent SDK, integrating the systems my working day runs on, driven from a chat thread on my phone.
The decision that matters
Security was designed in from day one rather than added after. Agents never hold raw credentials: an Azure Key Vault credential proxy brokers every secret. A DNS-aware egress proxy bounds where traffic can go, hooks enforce policy at the action level, and Bandit, Semgrep, and Trivy run in CI. Conn can propose improvements to its own code, but the pipeline is built so it can never merge its own pull requests. Conn operates as a registered workload under Blackpearl Group's AI Agent IAM Policy, which is in production.
  1. Chat on my phonedirect messages
  2. Agent runtimeClaude Agent SDK, 11 containers
  3. Credential and egress proxiesKey Vault broker, DNS-aware egress
  4. Work systemsthe tools an executive day runs on

The self-improvement loop runs beside this flow: proposed changes go to pull requests that only I can merge.

What it demonstrates: that agent autonomy and strict identity controls are not in tension. The same person can want the agent to do more and design the limits that make that safe.

Other systems and open-source work

More on GitHub at github.com/swampratnz. For how this experience feeds the day job, see Work.