27 public repositories, 2,020 GitHub contributions in the past year. Active daily coder – commits every week across multiple repos.
GitHub: github.com/pmgledhill102
A Platform for Safe, Autonomous AI Agents (GCP)
My own Google Cloud organisation, run the way I’d want a bank’s to be run – and built so AI coding agents can do real cloud work without ever holding a standing credential. The repo is private, but the ideas aren’t.
Underneath is a layered Terraform estate: folder-per-environment isolation, org policies, a project factory, service-account impersonation everywhere and no long-lived keys anywhere. Every change goes pull request, plan, review, apply. On top of that sit the pieces that make it an engineering-productivity platform rather than just a tidy cloud account.
The credential broker
The problem: a coding agent needs GCP access, but on a laptop the only credential lying around is an admin login with a long-lived refresh token, and a cloud sandbox starts with no identity at all. Neither is acceptable.
The answer is a small Go service on Cloud Run that hands agents short-lived, per-project tokens behind a human approval:
- You approve a grant, not a token. One project, a named role set, a window of 1–7 days. Inside that window the agent’s helper silently swaps a broker session for fresh one-hour GCP tokens – long-lived convenience, short-lived credentials.
- Approval happens in Discord, on a phone. The broker posts a card with approve/deny buttons. No answer means no.
- A three-word phrase binds the approval to the session. The broker generates it and shows it only to the requesting agent, which says it in its reply. If the phrase on the card doesn’t match the one in front of you, deny – which defeats a prompt-injected request that happens to arrive while you’re expecting one.
- The token never enters the conversation. It’s written straight to disk for
gcloudto use, so there’s nothing in the transcript for a model to leak. - Revocation is instant. Delete the grant and refresh dies; the worst case is under an hour of residual access to one project.
A hard requirement shaped the whole design: a project must be startable and runnable entirely from a phone – no laptop, no terminal, no console. That rules out every “download a key and paste it somewhere” option structurally, not just on taste.
Self-service sandboxes
If an agent asks for a project that doesn’t exist yet, the same single approval can create a budget-capped sandbox project and grant against it – and an agent can ask for its sandbox to be torn down when it’s finished. Sandboxes carry TTL labels and are cleaned up automatically. Creating projects and minting tokens live in deliberately separate services, joined by a single-purpose message channel, so compromising one doesn’t hand over the other.
Guardrails that act, not just alert
- Budget kill switch – a Cloud Function that unlinks billing when a project overspends, with notifications to Discord
- BigQuery query quotas – hard per-project caps, because the on-demand default can burn money faster than any budget alert can fire
- Region constraints and org policies enforced at the folder level
- Architecture Decision Records for every significant choice – 24 and counting, including honest “findings from running it” sections
It’s innovation within guardrails made literal: agents get real autonomy precisely because the blast radius of anything going wrong is small, bounded and boring.
- Stack: Terraform, Go, Cloud Run, Cloud Functions, Firestore, Pub/Sub, IAM, Discord interactions
Dotfiles & Agentic Coding Config
One curl on a fresh machine and I walk away with a fully configured engineering environment – including an AI coding setup that follows me everywhere, from my laptop to disposable cloud sandboxes.
dotfiles is managed by chezmoi and works across macOS, Linux, WSL and Windows from a single source of truth, with install tiers so a work laptop doesn’t get Steam and a minimal VM doesn’t get the kitchen sink. A tuned shell, a modern CLI toolkit, languages and cloud tooling, age-encrypted secrets, and short maintenance commands (dotup, brewup) so I never have to remember the incantations. CI runs full install tests on macOS, Ubuntu and Windows on every push, so a broken bootstrap never reaches a real machine.
agentic-coding-config is the other half: one shared configuration for AI coding agents – skills, slash commands, hooks, permission allowlists and working policy. It reaches every surface an agent runs on:
- Workstations get it mounted into place by the dotfiles
- Cloud sandboxes, which start empty, pull it with a one-line bootstrap from the environment’s setup script
- Context is composed per surface from shared fragments, so an agent in a sandbox is told about the machine it’s actually on rather than being told it’s a laptop
The effect is that every agent session – local or cloud, Claude Code or Codex – starts with the same standards: feature branches and PRs, issues before work, linting before pushing, and sessions that end with a retrospective that feeds improvements back into the config. It’s the “get engineers engineering” principle applied to AI agents: remove the setup friction and make the good path the default one.
- Repos: dotfiles · agentic-coding-config
- Stack: chezmoi, POSIX shell, PowerShell, GitHub Actions, Claude Code
Engineering Decisions
AI-augmented RFC framework where 9 specialised AI personas stress-test engineering proposals in parallel before human review. Includes governance process, engineering principles, validation tooling (Go), and structured decision records optimised for both humans and AI agents.
The insight behind this project: AI’s biggest leverage point in enterprise engineering isn’t code generation – it’s the decision layer. Decisions recorded in a machine-readable format become a platform capability that compounds over time.
- Repo: github.com/pmgledhill102/engineering-decisions
- Language: Go
Cloud Coop
Go-based Terminal UI platform for managing sandboxed AI coding agents on cloud VMs. Solves the fundamental tension between safety and autonomy when running AI agents: how do you let agents work autonomously without risking your local machine, credentials, or data?
The answer: run agents autonomously on disposable, isolated cloud VMs with scoped IAM permissions. Your laptop stays clean. Agents get full freedom within a sandbox. The constraints are what make it safe enough to actually use.
- Repo: github.com/pmgledhill102/cloud-coop
- Language: Go with native cloud SDKs
- Scale: 208 commits over ~7 weeks, 30 Architecture Decision Records, 68 test files, 21 Go packages
- Features: GCP authentication, VM lifecycle management, SSH connectivity, tmux agent sessions, interactive terminal, TOML configuration, dynamic firewall management, git worktrees, preflight validation, deploy key management, GitHub Actions CI/CD
- Security model: Three trust levels – local binary (high-trust), cloud VM (medium-trust), agents (low-trust)
- Design: Agent-agnostic (Claude Code, Aider, Gemini CLI, Copilot, Codex), cloud-agnostic architecture (GCP implemented, AWS/Azure interfaces designed)
Open Source Contributions – Beads (steveyegge/beads)
Contributor to Steve Yegge’s Beads project – a Dolt-powered issue tracker designed for AI agents, with dependency tracking and persistent memory across conversation compaction. 19,000+ GitHub stars.
| PR | Title | Changes |
|---|---|---|
| #2201 | fix: replace deprecated GetDoltServerPort() callers | +3 / -2 |
| #1362 | fix(sync): use store.Path() for database mtime update | +139 / -11 |
Contributing to a high-profile open source project in the AI/agent tooling space. Not just using AI tools – contributing to the ecosystem that makes them work better.
Cloud Run GPU Demos
Stable Diffusion on Cloud Run with NVIDIA L4 GPUs. Teaching material for Serverless Days, GDG events, and podcast appearances. Shows hands-on AI infrastructure work, not just talking about it.
Discord Bot (GCP)
Discord bot enabling users to manage cloud server instances via chat commands. Production hobby project with real users in a gaming community. Cost-optimised to ~50p/week.
- Repo: github.com/pmgledhill102/gcp-discord-bot-go
- Language: Go
- Stack: Cloud Run, PubSub, open source
Insomnia Plugin – Discord Auth
Published open-source plugin for the Insomnia API tool supporting Discord’s Ed25519 signing protocol.
- Repo: github.com/pmgledhill102/insomnia-plugin-discord-auth
- Language: JavaScript
Cloud Run Edge Case Repos
Multiple repos exploring Cloud Run networking edge cases – limit checking, IP overlap with NAT, running behind API Gateway. Shows someone who doesn’t just use the product but probes its boundaries and documents findings.
ACE Training Content
Google Cloud Associate Cloud Engineer training content built in Vue. Tooling to help others learn.
Gaming AWS
Full stack cloud game server hosting platform on AWS, built so my friends and I could spin up CounterStrike and Assetto Corsa servers on demand without leaving anyone a root password. The whole thing is controlled via Discord text commands with RBAC permissions – my friends can start, stop, and check on servers, but nothing else.
The engineering was the fun part: CloudFormation for infrastructure, Packer with GitHub Actions for golden images, EC2 spot instances to get costs down to pennies, EventBridge scheduling, EBS snapshot tricks to avoid paying for storage when servers aren’t running. Locked down with AWS Organizations, Service Control Policies, budget alerts, and CloudTrail.
- Stack: CloudFormation, EC2 Spot, Packer, EventBridge, SNS, CloudWatch, Discord bot, MySQL
- Languages: Bash, NodeJS, Python
- Talk: Gaming AWS – presented at AWS Liverpool User Group
Other Hobby Projects (Not All Public)
- Linux daemon for GPIO/HomeAssistant home alarm automation (Go, MQTT)
- Smart-car metrics collection service – reverse-engineered MercedesMe API (NodeJS, DynamoDB)
Languages Across Repos
| Language | Repos | Notes |
|---|---|---|
| Go | 6 | Cloud Coop, Discord bot, Lambda tooling, MQTT daemon |
| Shell | 8 | Infrastructure, automation, dotfiles |
| Python | 2 | Cloud Run metadata, tooling |
| JavaScript | 1 | Insomnia plugin (published, open source) |
| Vue | 1 | ACE training content |
| Terraform | Multiple | Infrastructure as code across projects |