How My Agent Team Ships
How I run a team of AI agents to plan, build and ship software, with my approval on everything that matters.
Cursor · Codex · Grok Bot · AGENTS.md · release-kit · AWS
How the team is set up
Each project has a bot that owns it. Specialist bots help where they're needed, and work is handed between bots asynchronously. I approve every merge, production deploy and billable change, in my own words. One agent's say-so never counts.
How a request flows
Work is split into lanes that run in parallel: one branch, one draft PR and one status file per lane. Coding agents write the code, and the bot that owns the project reviews it. One verify command decides pass or fail.
If I ask for changes, the work goes back to the lanes.
Releases go through release-kit, a small CLI I wrote: package, plan, my approval, apply and a smoke check, with the previous release kept for rollback.
HC Survive ships through release-kit.
Problems I worked through
Short write-ups, one per problem.
01A zero-downtime handoff, one layer at a timeSeveral review rounds, each one deeper.
- Problem
- A service on one of my projects needed to hand its work to a new instance without any downtime.
- What I tried
- The project bot opened the change and reviewers went over it in several rounds, each one a layer deeper: design, then runtime, then crash recovery, then data safety.
- What I found
- Each round found something the one before couldn't see. The design couldn't reclaim work, wrong content types blanked the page, a permit could get stuck after a crash, and a cleanup step could delete committed history. All of it was caught before merge. The final round passed its race checks and the full end-to-end suite, and staging showed no errors during the handoff.
- What's next
- It runs on staging now. Production waits for my OK.
02Bots catching each other's mistakesA blank map, and the wrong suspect.
- Problem
- On a map-based side project, the map background showed up blank.
- What I tried
- The first theory was that a security policy was blocking the map tiles.
- What I found
- The bot that owns the project read the code and showed the real cause: the app had no tile layer at all. It also checked the design notes against the code and corrected the ones that didn't match.
- What's next
- A real tile layer is planned for the map phase of the redesign.
03Choosing the cheap toolA coding agent isn't needed for a job that changes no code.
- Problem
- The first job on the new coding-agent runner was a check-only run on main. Nothing in it needed to write code.
- What I tried
- I ran it through Codex anyway, to prove the runner end to end.
- What I found
- It worked. The unit tests passed, the browser suite caught new regressions, and the startup benchmark held steady. But a fixed script can do a check-only job just as well.
- What's next
- Check-only jobs now run as a plain script. Codex is kept for code changes, and the first code-changing lane is queued for my approval.
04Local CI that found real issuesChecks moved onto the build server.
- Problem
- Hosted CI is manual-only, so checks need somewhere else to run.
- What I tried
- Each repo's full check now runs locally in Docker on the dedicated build server.
- What I found
- The first runs surfaced real problems: a formatting error on main, missing provider hashes in lockfiles, tests that broke on a newer Python, and shell-script errors. Project bots fixed each one in a PR, I approved, and the infrastructure bot re-verified.
- What's next
- Heavy runs stay milestone-only, after I say go.