Factory
My self-improving software factory. Agents work 24/7 and test and verify their own changes.
- Platform
- Mac
- Stack
- Claude Code, GitHub Actions
- Status
- Personal
01Problem
I was the bottleneck on my own projects.
I have a game, Draper, Marktrita and this site going at the same time. Claude Code did most of the building already, but I still wrote every ticket and checked every change, so nothing moved when I wasn't sitting there.
- 1InboxI wrote every ticket myself.
- 2PlannerI picked what came next.
- 3CellClaude Code built it while I watched.
- 4ReviewI checked every change by hand.
- 5MergeI merged it, so nothing shipped without me.
02Idea
So I write down where a project should go, and the factory gets it there.
Each project has a vision, basically what it should do when it's done. Every three hours a pass checks how far the project is from that, writes small orders for the gap and builds them. I only hear about it when something needs me.
- Projects it works on
- 4
- Between passes
- 3 h
- Builds at once
- 4
03Features
A separate agent checks the app against the vision.
It clones the project fresh, runs the tests, drives the app and marks every goal in the vision as met or not, with a screenshot or a number as proof. It never grades work it built itself.
XP and levelsAdventures of Ari
Met
Tests pass, and the screenshot shows the XP bar and the level-up.
DialogueAdventures of Ari
Not met
The box works in a test, but nothing in the game opens it yet, so the goal stays open.
03Features
Every order gets its own builder.
A cell takes one order into a fresh copy of the repo and keeps the change under 200 lines. It runs the project's checks and opens a pull request with before and after screenshots.

03Features
A reviewer looks at the screenshots itself.
The reviewer only sees the diff, the order's acceptance line and the images. On its first run it caught a crosshair drawn over the game's pause menu, which no test would have noticed.

03Features
It merges on its own, and the risky stuff waits for me.
Once the checks are green and the reviewer passes it, the change merges. Anything touching save data, keys or signing still waits for me. Same for how the game feels - that goes into a playtest I do by hand.
Everything it has shipped so far is in the factory changelog, and every entry is at the bottom of this page too.
Most changesGreen checks and a pass
Merges
Goes in on its own, usually while I'm not around.
Risky onesSave data, keys, signing
Waits
Sits there until I've looked at it. Game feel too, which I playtest by hand.
04How it works
Every pass runs the same loop.
A planner starts on my Mac every three hours. It reads my inbox issues and each project's vision, then hands the work along.
- 1VisionI write down what the project should do when it's done.
- 2AssessorChecks main against the vision and marks each goal met or not.
- 3PlannerWrites small orders for the gaps and ranks them by what they cost.
- 4CellBuilds one order on its own branch and opens a pull request.
- 5ReviewerChecks the diff and the screenshots against the order.
- 6MergeGreen checks plus a pass merge it. Risky changes wait for me.
What keeps it from running off
Every pass has a token budget, and the planner measures what each order really cost, so the next estimate is based on that. Orders that aren't worth their tokens get killed with a reason. If I want it to stop, one line in a file halts every pass, and a switch per project turns off merging.
It also learns from itself. The first real order showed that my risk rules called a test-only change risky, and a pass once sat for almost four hours on a permission prompt nobody was there to answer. Both are fixed, and both are in the changelog.
00Track record
Every change it has merged, counted weekly.
Every pull request the factory has merged, across the four projects it works on. A weekly job counts them again, so this page doesn't need me to update it.
- Merged through the factory
- 64
- Merged in the week of 2 Nov
- 64
- Week of 2 Nov64
Counted 3 Nov from the four factory repos.
Changelog
The factory now judges its own look and feel
I gave the factory two new senses. It now measures how responsive the hero feels, in milliseconds, and it scores screenshots of the world against my questions, like whether the light and the sky are beautiful. The weak spots become ideas it builds and tests on its own.
Draper builds every page from scratch
I changed what the factory aims for with Draper. Instead of filling a template, it should write each page's components itself from what the founder says and the vibe they want, with real animation and free libraries like React Bits. Copy still has to be right.
Passage I before the look
I moved the game's look behind the first playable passage, so there is something to play and judge before the art. Draper is benched on scripted meetings for now, since voice waits for credits.
The factory now asks if it's building the right thing
Each project gets a PM pass that plays the current build, picks the next slice someone can actually try end to end, and cuts work that slice doesn't need. The first plan makes Passage I of Adventures of Ari playable before more systems pile up. Small changes now get a quick review instead of a full one, and a pass checks that its tools really run before spending anything.
The factory reads my comments now
I'd been commenting on issues and PRs and honestly nothing was reading them - one where I said 'you can decide this yourself' just sat there for hours. Now every pass reads what I write on open issues and on factory PRs, acts on it and replies with what it did. Since the factory posts from my account too, its own comments carry a hidden marker so it can tell us apart.
The factory stops waiting on me to merge
Looked at the numbers today and basically I was merging almost everything by hand - 49 of 52 factory PRs. A big reason was a path rule that flagged mechanics work as 'needs a playtest' just for touching a file with the wrong name. That's gone now, only the reviewer marks real feel work, so the merge bot can actually do its job. Also added the site to the inbox form.
I can file site asks to the factory
The factory's inbox form now lists my personal site as a project, so I can send it requests from the same form as everything else.
The factory fixes its own merge conflicts and merges more itself
I was merging too many factory PRs by hand. Now each pass resolves conflicts on open PRs itself and squash-merges anything with green checks and met acceptance, including feel and red-lane changes. I test the result afterwards and send feedback.
The factory can see what it builds
My factory can now record the game and Draper the same way every time: fixed camera spots, a punch frame by frame, a whole Draper meeting at phone and desktop width. Builds attach before and after images to their pull requests, and reviews look at those images instead of trusting a description. On its first run it already caught a crosshair drawn over the pause menu and a green flash in Draper's orb.
The factory builds in parallel now
A factory pass used to start one build and spend the rest of its budget re-checking where things stood. Now it measures real token use, runs up to four builds at once, and keeps its check-ins cheap. Game work that only needs a playtest for feel is split off, so the rest can merge on its own.
The factory no longer stops on permission prompts
The 3pm factory pass sat for almost four hours waiting on a permission prompt nobody was there to answer. Scheduled passes now run with full permissions by default, so they can't get stuck that way. I wrote the setup down in the factory README.
An art plan for Adventures of Ari
The factory now builds the look before the first passage's content, so Ari's world gets made with real models from the start. It begins with free stylised kits and lighting built in code, aiming at Horizon and Kena. A later milestone swaps in models made just for this game, generated with AI and finished in Blender.
The factory now builds toward the whole game
The game vision used to stop at one vertical slice, and that's built now. So I wrote down the full thing - Adventures of Ari, five passages, about five hours of play - and the factory plans its work against that instead. The look is still my call, it picks nothing there on its own.
Draper has a real vision now
I wrote down what Draper should actually feel like - a conversation that's super snappy, a page that takes shape while you talk, and hosting it without leaving the meeting. The factory now builds toward that, and it measures speed and judges the page from a screenshot instead of guessing. First up is a speed test, so we know how fast it really is.
The factory writes its own tickets now
I was supplying every ticket to the factory myself, which kind of defeated the point. Now each project has a vision, a separate agent checks how far the app actually is from it, and the factory plans the work to close the gap. When it hits something only I can decide, it opens an issue and moves on.
The factory can work on my website now
I onboarded my own website into the factory, so it can pick up orders for the site the same way it does for my apps. The planner also ran today and lined up the next batch of orders - one of them turned my game pitch into a proper design doc.
The factory merged its first orders on its own
Two orders went all the way through today - a cell built each one, a fresh reviewer checked it against the acceptance line, and the repo merged it once the label was on. One adds a copy rule that catches invented numbers in generated pages, the other documents every scoreboard threshold so I can set real values. Honestly the cells used way more tokens than I estimated, so that's next to tune.
Factory PRs merge themselves, but only after a review
All three projects now auto-merge what the factory builds - but only once a fresh reviewer has signed off and the checks are green. Anything risky, like save data, API keys or signing, still waits for me. For Marktrita there's no CI, so my Mac runs the tests and the level bots and reports back to GitHub.
The factory runs all the time now
I didn't want to babysit the factory, I just want to dump ideas into it. So now there's an inbox - I open an issue from wherever, and every three hours a pass picks it up, plans it, builds it and has a fresh reviewer check it before anything merges. If it can't tell what done means, it just asks me in the issue.
The factory actually builds now
Until today the factory only planned - it wrote orders every night and then did nothing with them. Now dry run is off, so the planner hands orders to cells that open real PRs on the game and Draper. Marktrita joined too, but just for upkeep - new levels and products, no new mechanics. The weekly budget is honestly a guess for now, so I'll tune it after the first week.
The factory takes on a second project
Draper joined the factory next to the game, so the nightly planner now writes orders for two projects. I also made the cell prompt project-agnostic - each project names its own docs and scoreboard, so adding the next one is basically just a portfolio entry.
Risk rules now apply to changes already waiting
When I changed the factory's risk rules, changes that were already waiting kept getting judged by the old ones. Now every check reads the current rules, so a fix to the rules takes effect right away.
Test-only changes no longer count as risky
The factory sorts every change into a risk lane, and it was putting changes that only add tests into the careful one. I fixed the rule, so test and doc changes now go through the fast lane once the checks pass.
The factory's first real order found two of its own bugs
I let the factory work on its first real order today, a check for the game's fight data. The work itself was fine, but it showed my risk rules called a test-only change risky, and that agents had no clean place to write down how an order went. Now the nightly planner keeps that record itself, and agents just leave notes in their pull request.
I set up a software factory for my projects
I set up my software factory today, with Mage, my Godot game, as the first project. Every night a planner agent looks at what the project needs, writes small orders and ranks them by whether they're worth the tokens. Before an agent's change can land in the game it has to pass the tests and a few hundred simulated fights. For now it only plans, so I can watch a few nights before it builds anything.