Five Parallel AI Builders, One Contract, 25 Review Fixes A developer built Refmade, a desktop app that visualizes Claude Code and Codex sessions as an office with a team lead and subagents, by coordinating five parallel AI builder agents from a single markdown contract (office-v2/P0-CONTRACT.md) that assigned file ownership and froze 125 existing tests. The first running version, P0, served on 127.0.0.1 with 224 passing tests and no outbound requests, using a per-run key passed after the URL fragment and checked with timingSafeEqual to keep the local view private on shared machines. A review pass produced 25 fixes, which the developer says reveals more about parallel agent work than the test count. On September 26 I had five builder agents work from one markdown contract that said which files were theirs. When P0, the first local version, was done, it ran at 127.0.0.1 with 224 passing tests and no requests leaving the machine. Before that, a review pass ended in 25 fixes, and I think that number says more about parallel agent work than the test count does. This is part of a series about building Refmade, a desktop app that draws your Claude Code and Codex sessions as an office: one team per session, with the main agent as team lead and each subagent as a teammate. Refmade is an independent app, not affiliated with Anthropic or OpenAI. Claude Code and Codex agents wrote most of the code, at my direction. I planned the work, made the calls, and reviewed what came back. The UI is Korean right now; that changes later in this series. The previous posts covered why the office reads local logs instead of trusting agents to report. This one is about the first version that actually ran, the "P0". A build contract, in my usage, is a document that fixes the interfaces between parallel workers and says which worker may edit which file. Without one, five agents writing one app produce five slightly different ideas of what a "team" object looks like. The contract lives in the repo as office-v2/P0-CONTRACT.md . The file is dated September 25 and is about 40 KB today, because sections were added during the build; one of them, for the workflow view, comes up below. The part that mattered most was a table of who owns what: | Builder | Owns | Edits existing files | |---|---|---| | A | log classification, Claude log reader | none | | B | Codex log reader | none | | C | office model, collector | none | | D | HTTP server, the open command | the CLI entry file and its translation keys, only to add the command | | E | the browser page and its scene code | none | | Integrator | nothing new | everything, but only for defects found at integration | Every builder got its own tests next to its own code. The 125 existing tests were frozen. No new dependencies, Node 18 or later, ES modules only. The logs under ~/.claude and ~/.codex are read-only for the whole app. The rule I cared about most was the shortest one: "Other people's files are read-only." To change an interface, a builder had to edit the contract first and tell the integrator, not patch someone else's file. It is the same rule a team of humans uses, and it needed to be written down for agents for the same reason. The server binds to 127.0.0.1 only. That is the easy part. The less obvious part is that a loopback port is open to every other program and every other user account on the same computer, so "local" is not the same as "private". Builder D's contract section answers that with a per-run key. refmade open , a developer command that was never published, generates a random key and opens the page at http://127.0.0.1: