Eight stages. Exactly one of them is a human, and it is deliberately the last one that
can change anything.
- 01 Intake
- I describe a job from my phone. A Telegram bot turns it into a properly scoped GitHub issue, which matters more than it sounds: a badly scoped issue is the single most expensive failure mode this system has.
- 02 Trigger
- I add one label. Nothing runs without it, and labelling several repos at once runs them at once.
- 03 Runner
- A self-hosted runner picks the job up on a home server, isolated from the rest of the network, so agent-authored code never touches anything that matters.
- 04 Build
- A manager agent on Opus reads the code itself, then delegates implementation and adversarial review to a crew on Sonnet and Haiku. It is allowed to decide a subagent is not worth the handoff, and it regularly does. The models are named by alias rather than pinned version, so when Opus 5 shipped the factory picked it up on the next run with no config change at all: the ledger shows 76 runs on 4.8 and then 22 on 5, with nothing in between but a date.
- 05 Gates
- Lint, typecheck and build run before the push. In CI, a Playwright job drives every key route at desktop and mobile, screenshots them, and asserts the things a diff cannot show you.
- 06 Pull request
- The agent opens the PR as itself, through its own GitHub App, on a branch named after the issue. It is structurally incapable of merging its own work.
- 07 Review
- Me, in GitHub. I open the pull request, read the diff, check the gates went green and merge it if I am happy. Usually a couple of minutes. Sometimes I send it back. This is the only place a human can change the outcome, which is exactly why it is the last step rather than an earlier one.
- 08 Deploy
- Nobody. Merging to main builds the image, backs up the database, pulls the new digest, migrates on boot, gates on a health check, and rolls back automatically if that check fails.
Why Telegram, though
Strictly speaking I do not need it. Any Claude session with GitHub access can file and
tag an issue, and sometimes that is exactly what I do. But my ideas do not arrive at a
desk. They arrive on a walk, on the loo, or in the shower, which a waterproof phone
turns into a legitimate place of work. The bot is the difference between an idea that
becomes a pull request and one that evaporates on the way back to the office.