Software engineer at the intersection of platform infrastructure, security, and AI, making agents safe to run in production.
I build and operate the controls that let companies hand real power to AI agents: per-agent identity and least-privilege tool scoping, gated actions ("propose, never promote"), full trace audit, and eval-backed verification. Day job at Sophos: a production agent workflow platform and MCP servers over a threat-intelligence graph. The same patterns run in the public working code below.
I come at this from infrastructure and security, not ML: Python and Go services on AWS (EKS, ECS, Lambda, SQS, IAM), Terraform and CDK, Kafka, CI/CD, structured observability.
- threat-intel-brief - AI-reliability harness: the LLM is confined to one graded boundary, output is grounded and citation-checked, golden eval set with a regression gate in CI
- recruiter-risk-triage-v1 - local-first agentic dashboard for safely triaging recruiter outreach: verification evidence, containment of risky assessments
- shadow-ai-scout - autonomous due-diligence agent for shadow-AI vendor risk: plan/act/observe/verify loop, rejects any claim without a source quote, full audit trail
- claude-session-memory - published Claude Code skill governing agent memory lifecycle: typed memories, propose-and-persist, correction capture
- studio-agent-daw - natural-language control of DAWs (Ableton, Reaper, Logic) via MCP servers I build, not just consume
- The Shed (MusiciansPracticeApp) - shipped browser practice workbench for musicians
- Curated, parameterised tools over raw passthrough. An agent is an injection surface.
- Propose, never promote. Agents draft, humans commit.
- Every action attributable: per-agent identity, scoped tokens, audit trails.
- An LLM step earns its place with evals and a regression gate, or it ships as deterministic code instead.
Writing lives at tech.dandiggas.com. I'm also a session musician; the music side lives at dandiggas.com.


