I build tools that let AI agents safely work with real systems through dry-run previews, human approvals, and verifiable audit trails.
At Cornell University, I work on AI tooling for higher education. Outside of work, I use Claude Code to build and maintain open-source projects: 32 public repos, 3,100 commits, and 220 PRs in the past year, a shared MCP runtime library adopted across six servers, and a fleet-wide CVE remediation shipped across ten repositories in a day.
I define the requirements, guardrails, and tests. Claude writes much of the implementation. My focus is making sure the result is safe, reliable, and ready for production.
| Project | What it does |
|---|---|
| open-setlist-stash | Self-hostable setlist-prediction game. Pluggable band data via MCP (Phish + Umphrey's built in), FastAPI + Postgres, mypy-strict |
| mcp-unifi | Safety-first MCP for self-hosted UniFi. Dry-run previews, JSONL audit log, composite rollback |
| strava-mcp-vault | Strava MCP server with SQLite caching, token refresh, and rate-limit awareness |
| mcp-threatintel | Threat intel MCP for Claude Code: IOC lookups, CVE checks, breach data, dark web search, OTX pulses |
| ai-upskill-playbook | The AI application stack for IT professionals. A map of what's worth learning in 2026 |
| claude-code-statusline | Labeled status bar for the Claude Code TUI: context, billing, git, weather |
| astro-claude-microblog | A microblog that publishes from Claude Code. Astro + rsync. No CMS, no database. One command to post |



