Parallel Execution
Try this to launch concurrent work streams:
Have three agents work on this in parallel: UI mockups, API spec, and database schema
Try this to work multiple issues simultaneously:
Work on issues #12, #15, and #18 at the same time
Try this to control concurrency for cost savings:
Run at most 2 agents at once to save costs
Squad launches independent work in parallel by default — multiple agents work simultaneously, no waiting. You control concurrency limits and can force sequential execution when needed.
How Parallel Execution Works
Squad runs agents in parallel whenever possible. The fan-out pattern launches all independent agents simultaneously, waits for results, then proceeds — no sequential bottlenecks unless data dependencies or reviewer gates require them.
How Parallel Execution Works
When the coordinator receives work:
- Dependency Analysis — Check if tasks have data dependencies (A needs output from B).
- Fan-Out — Launch all independent agents in parallel using
mode: "background". - Wait — Coordinator polls agent status until all complete.
- Collect — Aggregate results, check for errors, route to next step.
Example: Feature Implementation
“Implement user authentication: API endpoints, frontend form, tests, and documentation”
Coordinator spawns 4 agents in parallel:
- Backend → API endpoints
- Frontend → Login/signup form
- Tester → Integration tests
- DevRel → Auth documentation
All work simultaneously. No agent waits for another unless there’s a code dependency.
Background vs Sync Mode
| Mode | When to Use | Behavior |
|---|---|---|
background |
Independent work, no data dependencies | Agent runs in parallel, coordinator polls for completion |
sync |
Data dependency (one agent needs output from another) | Agent runs sequentially, coordinator waits |
sync |
Reviewer gate (Lead must approve before continuing) | Agent runs, coordinator waits for review decision |
Background Mode
Used for fan-out parallelism:
Coordinator → [Agent1, Agent2, Agent3] (background)
↓ ↓ ↓
Result1 Result2 Result3
↓ ↓ ↓
Coordinator collects all
Agents don’t see each other’s output until the coordinator collects and synthesizes.
Sync Mode
Used for dependencies and gates:
Coordinator → Agent1 (sync) → Result1
↓
Coordinator → Agent2 (sync, uses Result1) → Result2
↓
Coordinator → Reviewer (sync, gates next step)
Each step blocks until the previous completes.
Eager Execution Philosophy
Squad’s default is eager parallelism — launch everything that can run, let the coordinator handle synchronization. Benefits:
- Faster throughput — No artificial sequencing.
- Better resource utilization — Multiple agents saturate available compute.
- Resilient to blocking — If one agent stalls, others keep working.
Trade-off: Increased API cost (multiple agents running simultaneously). If cost is a concern, tell the coordinator:
“Work sequentially to save costs”
Coordinator switches to sync mode for all agents.
Deadlock Avoidance
When agents have circular dependencies:
- Agent A needs output from Agent B
- Agent B needs output from Agent A
The coordinator detects the cycle during dependency analysis and prompts:
⚠️ Circular dependency detected: A ↔ B
Choose resolution:
1. Run A first, then B
2. Run B first, then A
3. Redesign to remove dependency
Reviewer Gates
Some tasks require sequential review:
- Agent writes code → Draft PR
- Lead reviews → Approves or rejects
- If approved → Merge and close
- If rejected → Reassign or escalate (agent is locked out)
This is a sync gate — the next step cannot proceed until the reviewer completes.
Parallel Execution Logs
The coordinator logs parallel execution in .ai-team/orchestration-log/:
[2024-01-15 14:30:00] FAN-OUT: Spawning 4 agents (Backend, Frontend, Tester, DevRel)
[2024-01-15 14:30:15] AGENT: Backend started (background)
[2024-01-15 14:30:16] AGENT: Frontend started (background)
[2024-01-15 14:30:17] AGENT: Tester started (background)
[2024-01-15 14:30:18] AGENT: DevRel started (background)
[2024-01-15 14:35:42] COLLECT: Backend completed (success)
[2024-01-15 14:36:10] COLLECT: Frontend completed (success)
[2024-01-15 14:36:55] COLLECT: DevRel completed (success)
[2024-01-15 14:38:20] COLLECT: Tester completed (success)
[2024-01-15 14:38:21] FAN-IN: All agents complete
Parallel Limits
The coordinator respects concurrency limits to avoid rate limits or resource exhaustion:
- Default: 5 agents in parallel
- Adjustable:
"Run at most 3 agents at once"→ Coordinator batches work in groups of 3
Sample Prompts
Build the new dashboard feature — everyone work in parallel
Coordinator spawns all relevant agents (Frontend, Backend, Tester, DevRel) simultaneously.
Implement the API first, then write tests — do it sequentially
Forces sync mode: Backend runs, completes, then Tester starts.
Work on issues #12, #15, and #18 at the same time
Spawns 3 agents in parallel, one per issue. Assumes no dependencies between issues.
Run at most 2 agents at once to save costs
Sets concurrency limit. Coordinator batches work: runs 2, waits for completion, runs next 2.
Why is Tester waiting? Show me the dependency graph.
Coordinator explains why Tester is blocked (e.g., waiting for Backend to finish implementation).