Four Collaboration Patterns
Most crews fall into one of these shapes. Pick the simplest one that fits.
1. Pipeline (A → B → C)
Each agent owns a stage. Output flows downstream.
Linear pipeline
tasks = [
Task(description="Research", agent=researcher, expected_output="..."),
Task(description="Outline", agent=outliner, expected_output="..."),
Task(description="Draft", agent=writer, expected_output="..."),
Task(description="Edit", agent=editor, expected_output="..."),
]
crew = Crew(agents=[researcher, outliner, writer, editor], tasks=tasks, process=Process.sequential)
2. Parallel Fan-Out / Fan-In
Multiple agents work on independent sub-problems concurrently, then a synthesizer merges results.
Parallel research
sub_a = Task(description="Research market size", agent=r1, async_execution=True, expected_output="...")
sub_b = Task(description="Research competitors", agent=r2, async_execution=True, expected_output="...")
sub_c = Task(description="Research regulation", agent=r3, async_execution=True, expected_output="...")
merge = Task(
description="Combine into a single market brief",
agent=writer,
context=[sub_a, sub_b, sub_c],
expected_output="A 1-page market brief.",
)
3. Delegation (Manager + Workers)
One agent has allow_delegation=True and can hand sub-tasks to peers when stuck. Hierarchical process is delegation taken to its logical end.
Delegation in sequential
senior_engineer = Agent(
role="Tech Lead",
goal="Solve the bug end-to-end",
backstory="...",
allow_delegation=True, # can ask the QA agent for help
)
qa_engineer = Agent(
role="QA Engineer",
goal="Reproduce and verify bug fixes",
backstory="...",
allow_delegation=False,
)
# In sequential mode, the tech_lead can call out to qa_engineer
# during its task if it needs verification.
crew = Crew(agents=[senior_engineer, qa_engineer], tasks=[fix_task], process=Process.sequential)
4. Reviewer / Critic Loops
One agent produces, another critiques. Loop until quality is acceptable. Cleanest way: explicit reviewer task.
Producer + critic
draft_task = Task(
description="Draft the article",
agent=writer,
expected_output="A 600-word article.",
)
review_task = Task(
description=(
"Critique the draft. List up to 5 specific improvements. "
"If the draft already meets the spec, say 'Approved.'"
),
agent=critic,
context=[draft_task],
expected_output="Either a list of issues or 'Approved.'",
)
# For real iteration, wrap kickoff() in a loop and re-run draft_task
# with the critique injected via inputs.
Coordination Rules of Thumb
- Fewer agents = better. Three focused agents beat seven mediocre ones.
- One owner per task. Two agents on the same task = thrash.
- Explicit context beats implicit memory. Pass
context=[...]when in doubt. - Disable delegation in dev. Turn it on after you've measured the failure modes.
Notes
Parallel fan-out still needs a merge contract
When tasks run concurrently, downstream work may see partial or unordered context. Add an explicit consolidation task or deterministic merge rules so the next agent never guesses which branch won.
Managers concentrate latency and tokens
Hierarchical patterns route many decisions through one LLM. Watch tail latency, rate limits, and cost spikes when the manager re-reads long transcripts on every delegation cycle.
Reviewer loops double spend by design
Two-pass QA is powerful but expensive. Gate second passes on risk tier, confidence scores, or structured checks so you do not pay full multi-agent review on every low-risk run.
Serialization beats clever coordination for audits
When compliance needs immutable ordering, prefer a sequential pipeline with signed handoffs over dynamic parallel routing that is harder to explain after the fact.
CrewAI collaboration FAQ
How do CrewAI agents collaborate by default?
Sequential processes run tasks in order with handoffs, while hierarchical processes introduce a manager-style agent that can delegate. Pick the simplest process that still matches your coordination needs.
When should I parallelize CrewAI tasks?
Parallelize only when tasks are independent and you can merge results deterministically. Dependent research-to-writing pipelines usually stay sequential to preserve context quality.
What is a reviewer loop in CrewAI?
A reviewer loop adds a critique or QA agent that inspects another agent's output before release. It trades extra tokens for higher quality on high-risk deliverables.
How does delegation work in CrewAI?
Delegation lets an agent ask another agent for help when allow_delegation is enabled and the process supports it. Disable delegation unless you have clear guardrails because it can increase cost and latency.
How is CrewAI collaboration different from Flows?
Crews coordinate agents and tasks with a fixed process, while Flows orchestrate arbitrary method graphs with decorators. Use crews for classic handoffs and Flows when you need branching, persistence, or mixed automation.
See also: DevShelfHub's CrewAI tool review for a product-level comparison, pricing notes, and links back into this tutorial series.