Each worker agent runs a ReAct loop (Reason + Act): given a task from the orchestrator it alternates between an internal Thought and an external Action — a tool call routed over an MCP-style protocol to Search, Code or a DB tool (or a lookup against shared Memory) — then folds the Observation back into its context before deciding whether to continue or answer:
Thought(t) → Action(t) → Observation(t) → Thought(t+1) → … → Answer
loop repeats until step k reaches the task's target step count C
(Task complexity control), then the agent returns its answer to
the orchestrator and goes idle.
- Agents — how many workers the orchestrator can dispatch tasks to in parallel; more agents raise total message throughput.
- Task complexity — target ReAct steps per task (like Toolformer/AutoGen agents needing more tool calls for harder tasks); expected steps to completion ≈ complexity.
- Message speed — how fast requests/responses travel the MCP links between agent, tool and memory nodes.
- Shared memory (RAG) — when on, agents sometimes consult a shared memory store instead of a tool, mirroring how OpenAI Assistants / AutoGen agents retrieve prior context before acting.
This is the coordination pattern behind LLM agent frameworks — LangGraph/AutoGen-style orchestrators, the Model Context Protocol (MCP) for tool access, and OpenAI's Assistants API for stateful, memory-backed runs.