Parallel specialist lanes let one Gateway route different chats or rooms to different agents while keeping the user experience fast. Treat parallelism as a scarce-resource design problem, not just "more agents".

First principles

A specialist lane only improves throughput when it reduces contention for the real bottlenecks:

Apus already serializes runs per session and caps global parallelism through the command queue. Specialist lanes add policy on top: which agent owns which work, what stays in chat, and what becomes background work.

Recommended rollout

For a ready-made starting point, apus agents team create ships these lane contracts as coordinator, researcher, writer, and reviewer roles. Each role puts its scope, artifact handoff, approval gates, and escalation rules in AGENTS.md. The preset wires the coordinator to the specialists and instructs specialists to return results without further delegation. See Team preset.

Phase 1: lane contracts + background heavy work

Give every lane a written contract in its agent workspace AGENTS.md, which is loaded into the system prompt at the start of every session:

This is the cheapest phase and fixes most clogging: one coding job no longer turns the research lane into molasses, and each chat keeps its own context clean.

Phase 2: priority and concurrency controls

Tune queue and model capacity around the business value of each lane:

{
  agents: {
    defaults: {
      maxConcurrent: 4,
      subagents: { maxConcurrent: 8, delegationMode: "prefer" },
    },
  },
  messages: {
    queue: {
      mode: "collect",
      cap: 20,
      drop: "summarize",
    },
  },
}

maxConcurrent caps the shared main lane; subagents.maxConcurrent gives each spawning session its own child execution budget.

Use direct/personal chats and production-ops agents for high-priority work. Let research, drafting, and batch coding move to background tasks when the system is busy. subagents.delegationMode is prompt guidance only; see sub-agent delegation for what each value does, and command queue for mode, cap, and drop.

Phase 3: coordinator / traffic controller

Add a small coordinator pattern once multiple lanes are active:

Do not start here. A coordinator without lane contracts just coordinates chaos.

Minimal lane contract template

Save this in the lane agent's workspace AGENTS.md:

# Lane contract

## Owns

- <job this lane is responsible for>

## Does not own

- <work to hand off>

## Chat budget

- Answer quick questions directly.
- For multi-step, slow, or tool-heavy work: acknowledge briefly, spawn/background
  the work, then return the result when complete.

## Handoff

If another lane owns the request, reply with:

- target lane
- objective
- relevant context
- exact next action

## Tool posture

Use the smallest tool surface that can complete the task. Avoid broad shell or
network work unless this lane explicitly owns it.

Related