LockerGnomeFor serious tech professionals with a silly side.
Subscribe

Search

Developer Talesaiagentsclaudegithubautomation

Denis Zontak's One-Mac Software Factory Turned a GitHub Ticket Into a Merged Pull Request Overnight on a $200-a-Month AI Subscription

Unable to sleep, a Florida developer watched Claude-driven agents plan, build, test and review a ticket for his time-tracking app, and he merged their first pull request at 2:36 a.m.

1990s cel-shaded cartoon of Chris at a desk at night watching a tiny conveyor belt carry a ticket through little robot stations into a finished parcel.
Illustration: LockerGnome

“I wasn’t feeling great and I couldn’t sleep,” Zontak writes on his company site. “My brain was working though, so at 2 a.m. I was at my desk watching a ticket from my GitHub queue turn into a reviewed plan. Two minutes. Nobody touched it, not me, not anybody.”

The ticket was small on purpose: add a browser test for importing time from Toggl into UseHourly, his time-tracking app. One agent read it, a second checked the plan, and it waited for his OK. Then the builder wrote the test in its sandbox, the project’s 1,100 tests ran, and another agent reviewed the diff. Pull request 321 went up at 2 a.m. Eastern and he merged it seven minutes later. Its description says it was “Written by Day Shift (request R-6) from issue #319 during its first practice night, then reviewed by Denis, who judged it good.” One file, 77 lines in, 15 out.

The setup is almost aggressively small. “I’m not a startup. I don’t have servers or a team or funding. I have one Mac, a $200 a month AI subscription, and a day job I’d like to spend a little less time on,” he writes. The model runs on Anthropic’s machines, and the apps it ships sit on Cloudflare’s free tier.

The same night produced a sandbox, and he tested it the mean way. “We actually planted a nasty ticket telling it to steal my passwords, and it got ‘Operation not permitted’ thirteen times out of thirteen.” It also produced a release button that rolls itself back if the smoke test fails, a queue mode that decides per ticket whether to “do it alone, ask me, or skip it,” and a 7 a.m. scorecard of what shipped, what broke and what it cost.

Two things broke, and he says those are the useful part. His repo auto-deletes merged branches, so when a release merged next into main, GitHub deleted next and the following build failed. Claude restored it, added a rule, and said “this one was my mistake.” The second was a deploy job that waited for monitoring to confirm a fix on the test server, “Except the monitoring only watches the live site.” It looped for thirteen steps with everything else stuck behind it, and it’s now a ticket for the factory to fix. Another ticket it skipped on its own, because the ticket said to measure speed first. “That decision cost two cents.” By Monday the UseHourly repo showed 53 more merged pull requests since number 321. What the next three versions of the factory look like, he hasn’t said yet.

He already runs something similar at his day job, working Jira tickets across four repos, which says this isn’t one hobbyist’s stunt. A solo developer with a test suite can now run a small night shift, and the shops that get the most out of it will be the ones whose tests are good enough to say no. A factory like this ships exactly as far as its checks reach and no further, so the next fight is over test coverage, not model choice.

His working rules for both of them are telling, too. He and Claude wrote ten commandments around 4 a.m.; number nine is “Denis decides, Claude recommends.”

More Developer Tales

Every Developer Tales story →