Fork one golden VM into parallel coding agents. Build a full-stack app (server + client + landing) in ~60 seconds by running three agents simultaneously.
Use this file to discover all available pages before exploring further.
Fork one golden VM into N parallel coding agents. Each agent gets an isolated environment in seconds; together they build something that would take you half an hour alone.
Coding agents are serial — one agent writes one file at a time. A full-stack app with server, client, and landing page takes 10–15 minutes to one agent. But the components are independent. If three agents build them simultaneously, it takes ~60 seconds.The bottleneck isn’t the LLM — it’s the environment. Each agent needs an isolated filesystem, and provisioning a fresh VM from scratch takes minutes. Vers solves that with branching: snapshot a fully provisioned VM once, fork it per agent in 258µs. Every branch is a copy-on-write environment that looks identical at branch time and diverges only on write.
Before tasking agents, write a spec that defines the contract between components. This is the only information workers share — they can’t read each other’s filesystems.Create a SPEC.md locally:
# Multiplayer Snake Game Spec## Server (server.js)- WebSocket server on port 3000- 20x20 grid, 100ms tick rate- Message types: - Server → Client: `{ type: "state", snakes: [{ id, segments: [[x,y]], direction, score }], food: { x, y } }` - Client → Server: `{ type: "direction", direction: "up"|"down"|"left"|"right" }`- Collision detection: walls, self, other snakes- Serve static files from ./public/## Client (public/game.html + public/game.js)- HTML5 Canvas rendering- Arrow key controls- Scoreboard showing all players- Death screen with reason, click to respawn## Landing Page (public/index.html)- Game title and instructions- Play button linking to /game.html- Responsive design
# Copy spec to each workervers copy SPEC.md worker-server:/root/workspace/SPEC.mdvers copy SPEC.md worker-client:/root/workspace/SPEC.mdvers copy SPEC.md worker-landing:/root/workspace/SPEC.md
Start agents on each VM. Open three terminals:Terminal 1 — Server worker:
vers checkout worker-serververs connectcd /root/workspaceexport ANTHROPIC_API_KEY=<your_key># Start your agent with the task:# pi: pi -p "Read SPEC.md. Build server.js and package.json per the Server section."# aider: aider --message "Read SPEC.md. Build server.js and package.json per the Server section."# Or any agent that takes a prompt
Terminal 2 — Client worker:
vers checkout worker-clientvers connectcd /root/workspaceexport ANTHROPIC_API_KEY=<your_key># "Read SPEC.md. Build public/game.html, public/game.js, public/style.css per the Client section."
Terminal 3 — Landing worker:
vers checkout worker-landingvers connectcd /root/workspaceexport ANTHROPIC_API_KEY=<your_key># "Read SPEC.md. Build public/index.html per the Landing Page section."
All three agents build simultaneously in isolated environments.
For programmatic control, use the Vers API directly:
# Execute a command on a VM without interactive SSHvers execute worker-server "cd /root/workspace && ANTHROPIC_API_KEY=<key> pi -p 'Read SPEC.md. Build server.js and package.json per the Server section.'"vers execute worker-client "cd /root/workspace && ANTHROPIC_API_KEY=<key> pi -p 'Read SPEC.md. Build public/game.html, game.js, style.css per the Client section.'"vers execute worker-landing "cd /root/workspace && ANTHROPIC_API_KEY=<key> pi -p 'Read SPEC.md. Build public/index.html per the Landing Page section.'"
TLS is handled by the Vers proxy — your VM serves plain HTTP and browsers see HTTPS. Any port in the routed range (1024–10000) works. The one gotcha: bind dual-stack, not IPv4-only:
Provision once, branch per task. The cost you pay to install tooling and reach a useful state is fixed — you pay it during vers commit. Every agent after that starts from the same golden snapshot in microseconds. This pattern generalizes beyond coding agents to any workload where:
Setup is expensive (installing a runtime, seeding a database, booting an application)
Tasks are independent (each agent/worker doesn’t need to read the others’ state)
You want many of them (N simultaneous workers instead of N sequential ones)
Keep the golden commit ID in your toolchain. Every future swarm branches from it.