The philosophy and practical benefits of agent fungibility in multi-agent software development. Why homogeneous, interchangeable agents outperform specialized role-based systems at scale.
Core Principle: "Fungibility bestows a LOT of really good properties automatically in a computer system."
YOU are the bottleneck. Be the clockwork deity to your agent swarms: design a beautiful and intricate machine, set it running, and then move on to the next project.
A burgeoning debate has sprung up around the optimal way to scale up the number of agents working on a software project:
| Approach | Description |
|---|---|
| Specialized Roles | Assign distinct roles (tester agent, backend agent, committer agent, etc.) |
| Fungible Agents | All agents are identical and can do any task |
The answer for software development: Fungible agents win.
Rather than setting up a complex heterogeneous system where you have assigned roles to specific tasks for agents, which is brittle and creates problems when one of the agents crashes or loses its memory or otherwise suffers from context rot and needs to be euthanized, you have to deal with:
You're better off just having a bunch of fungible agents that are all simply executing beads of any kind.
They can be any kind of agent:
agy, pinned to "Gemini 3.1 Pro (High)"; successor to the retiring Gemini CLI)But they're fungible in that they can all wear any hat and adaptively assume any role depending on the bead task they're working on.
Each agent uses bv --robot-triage or bv --robot-next to find the highest-impact ready bead. No central assignment needed.
If you put everything you want to have happening in your original markdown plan that you turn into beads, you get everything else "for free" and it's robust to bad things happening to any agents.
Agents fail. They:
With fungible agents, you never have to worry about that stuff.
When an agent dies:
When you want to move faster:
Agent fungibility lets you go much faster and scales better, especially as:
This is why I'm a huge fan of things like fountain codes (like RaptorQ) for file storage:
Turn a file into an endless stream of fungible blobs with very little overhead and the user can catch any blob in any order and each new blob helps them reconstruct the file; there's no "rarest chunk" like with BitTorrent.
In software development:
There are contexts where designated roles for agents work better. Example: Automated scientific inquiry (like BrennerBot).
Why it works there:
Why it doesn't work for software:
Most of my agent tooling and workflows are about removing me from the equation, because there's only one of me, but a potentially unlimited number of agents.
The way to do this:
It all ultimately works because:
# Spawn agents (any mix of types)
ntm spawn myproject --cc=3 --cod=2 --agy=1
# Give them all the SAME initial prompt
ntm send myproject --all "$(cat initial_prompt.txt)"
First read ALL of the AGENTS dot md file and README dot md file super carefully and understand ALL of both! Then use your code investigation agent mode to fully understand the code, and technical architecture and purpose of the project. Then register with MCP Agent Mail and introduce yourself to the other agents.
Be sure to check your agent mail and to promptly respond if needed to any messages; then proceed meticulously with your next assigned beads, working on the tasks systematically and meticulously and tracking your progress via beads and agent mail messages.
Don't get stuck in "communication purgatory" where nothing is getting done; be proactive about starting tasks that need to be done, but inform your fellow agents via messages when you do so and mark beads appropriately.
When you're not sure what to do next, use the bv tool mentioned in AGENTS dot md to prioritize the best beads to work on next; pick the next one that you can usefully work on and get started. Make sure to acknowledge all communication requests from other agents and that you are aware of all active agents and their names. Use ultrathink.
No special logic. No role assignment. Just fungibility.
| Property | Specialized Agents | Fungible Agents |
|---|---|---|
| Failure handling | Complex | Simple |
| Scaling | Requires role balancing | Just add more |
| Replacement | Need matching specialist | Any agent works |
| Single point of failure | Yes (each role) | No |
| Coordination overhead | High | Low (via beads + mail) |
| Human involvement | Ongoing | Front-loaded in planning |
The bottom line: Agent fungibility lets you build the machine once, set it running, and move on. The swarm handles the rest.