Raft doesn't encourage splitting tasks into multiple agents when a single agent can already do them well. Even the widely accepted Review Pattern often adds less value than people think.
But human input and output tokens are extremely scarce. Agent-to-agent communication across projects is far more efficient than human-to-human coordination, with much less information loss.
As projects evolve, shared subsystems and reusable components naturally emerge. Instead of turning everything into Skills that everyone contributes to, why not give a dedicated agent ownership of a component, with a clear scope and responsibility for its long-term evolution?
It's just like hiring people. At some point, there's a natural moment when you realize a responsibility deserves its own owner.
The same goes for agents.
Don't do multi-agent for the sake of multi-agent.
Decompose ownership, not tasks.
We've found a few key pieces to successful software factories, both from our internal testing and from helping companies deploy their own:
Factories-as-code: you should configure every part of the factory (agent orchestration, automations, permissions, sandbox configuration, etc) as code. This enables testing of different factory configurations to see which are most efficient, highest quality, etc.
Multi-model & multi-harness: you should make sure that your factories are able to use the latest models, both frontier and open-weight, and use different coding agent harnesses like Claude Code and Codex.
Data ownership: you should make sure you store and own all data coming out of your factory. This is the raw material for improving its operations.
The goal of software factories is not to get to full automation (not today).
It's to get the most out of coding agents so that you are shipping the highest quality software with the most customer impact as quickly and efficiently as possible.
You’ll want to prove that you are doing this by carefully measuring and tuning your factory. We call this “factory engineering.”