IMMERSIVE COMMONS/ FT10
Presentations · VCN 49 · August 12, 2026

The Swarm — Run Parallel Coding Agents in Git Worktrees

Vibe Coding Nights #49 — The Swarm, a Wednesday-evening build sprint at Frontier Tower's 10th Floor Annex, hosted by Rayyan Zahid, Michalis Vasileiadis, Eric Mockler and Devinder Sodhi. One agent is a queue: five independent tasks against one agent means four of them wait on nothing. The fix is not a faster agent, it is N agents, and the deck's organising claim is that the unit of parallelism is a git worktree — many branches in many trees rather than many branches taking turns in one. The room's first instinct, ten agents pointed at the same checkout, is killed on slide 3 before the lab can waste an hour on it: same files, same index, same HEAD, same lockfile, and it half-works, which is what makes it dangerous, because the failure arrives as erased work rather than as an error. The conductor pattern names the three moves — SPLIT, DISPATCH, MERGE — and is honest that only the first is a judgement call. The section that earns the session is slide 6, added after the lab was run end to end on a scratch repo the morning of delivery: a worktree is not a sandbox. What IS isolated is the working tree, the index, HEAD and the branch. What is NOT is .git/config, refs, hooks and the object store — so three agents that each set their identity the obvious way (git config user.email) race on the shared .git/config, two print a non-fatal lock error, all three commit anyway, and every commit comes out authored by the race winner. The messages stay correct, so the log looks fine at a glance and is wrong in the one field you would audit. The lab therefore hands out env-scoped GIT_AUTHOR_* / GIT_COMMITTER_* per process instead, which is correct per-agent authorship with zero lock contention. A second silent failure came out of the same dry run and is on its own slide: git worktree remove --force follows an NTFS junction out of the worktree, deletes the target's contents, and exits 0 with nothing printed — reproduced deliberately after that exact sequence cost a real .venv in the maestro fleet at 13:44 the same day. Linking a shared venv into each tree is precisely what makes N trees cheap, so the pattern and the hazard arrive together; unlink the reparse point first, then remove. Fan-out is parallel and fan-in is serial, deliberately: merge one tree at a time, and resolve conflicts by intent rather than by line. The closing slide is the counterweight — when NOT to fan out, since work that shares a file is not independent work and the split is the hard gate, not the commands. 18 slides, a five-step hands-on hour that stands up three trees and drives three agents through them, a measured three-agent replay with real git worktree list and git log --graph output, agent-readable /setup.txt and .well-known/ai-agent.json + agent-card.json, and an on-slide changelog recording the three edits the dry run forced, so the room sees the method rather than only the result.

Open the deckRayyan Zahid · Deck · Vibe Coding Nights #49 — The Swarm, a Wednesday-evening build sprint at Frontier Tower's 10th Floor Annex, hosted by Rayyan Zahid, Michalis Vasileiadis, Eric Mockler and Devinder Sodhi. One agent is a queue: five independent tasks against one agent means four of them wait on nothing. The fix is not a faster agent, it is N agents, and the deck's organising claim is that the unit of parallelism is a git worktree — many branches in many trees rather than many branches taking turns in one. The room's first instinct, ten agents pointed at the same checkout, is killed on slide 3 before the lab can waste an hour on it: same files, same index, same HEAD, same lockfile, and it half-works, which is what makes it dangerous, because the failure arrives as erased work rather than as an error. The conductor pattern names the three moves — SPLIT, DISPATCH, MERGE — and is honest that only the first is a judgement call. The section that earns the session is slide 6, added after the lab was run end to end on a scratch repo the morning of delivery: a worktree is not a sandbox. What IS isolated is the working tree, the index, HEAD and the branch. What is NOT is .git/config, refs, hooks and the object store — so three agents that each set their identity the obvious way (git config user.email) race on the shared .git/config, two print a non-fatal lock error, all three commit anyway, and every commit comes out authored by the race winner. The messages stay correct, so the log looks fine at a glance and is wrong in the one field you would audit. The lab therefore hands out env-scoped GIT_AUTHOR_* / GIT_COMMITTER_* per process instead, which is correct per-agent authorship with zero lock contention. A second silent failure came out of the same dry run and is on its own slide: git worktree remove --force follows an NTFS junction out of the worktree, deletes the target's contents, and exits 0 with nothing printed — reproduced deliberately after that exact sequence cost a real .venv in the maestro fleet at 13:44 the same day. Linking a shared venv into each tree is precisely what makes N trees cheap, so the pattern and the hazard arrive together; unlink the reparse point first, then remove. Fan-out is parallel and fan-in is serial, deliberately: merge one tree at a time, and resolve conflicts by intent rather than by line. The closing slide is the counterweight — when NOT to fan out, since work that shares a file is not independent work and the split is the hard gate, not the commands. 18 slides, a five-step hands-on hour that stands up three trees and drives three agents through them, a measured three-agent replay with real git worktree list and git log --graph output, agent-readable /setup.txt and .well-known/ai-agent.json + agent-card.json, and an on-slide changelog recording the three edits the dry run forced, so the room sees the method rather than only the result.

Semantic search across every published talk. Jumps you to the exact slide.

← All presentations