Skip to content

11 — Multi-Agent Orchestration ​

TLDR: the day your task is too big for one agent, and you want a few of them working in parallel without stepping on each other. ACC doesn't force this — it just makes it safe when it happens.

ACC is single-agent by default, on purpose — one agent, one repository, one clear job. This page is about what changes when that's not enough anymore.

Overview ​

ACC MAY support a multi-agent mode. When enabled, the active coding agent MAY create and coordinate additional agents to complete a task.

Core Principle: ACC manages the coordination substrate; the coding agent decides when parallel agents are useful.

This keeps it agent-agnostic. Cursor, Claude, Codex, OpenCode, or another agent can use the same project structure and ACC primitives. The coordination is a property of the project, not of any one agent.


1. Agent Hierarchy ​

A multi-agent session consists of:

coordinator
    │
    ├── worker
    ├── worker
    ├── worker
    └── ...

Coordinator Responsibilities ​

The coordinator is responsible for:

  • Task decomposition — breaking work into independent scopes
  • Assigning work — mapping scopes to workers
  • Maintaining global context — shared architecture, constraints, progress
  • Resolving conflicts — detecting and handling concurrent modifications
  • Integrating results — combining worker outputs into a coherent whole
  • Final validation — running tests, rebuilding the graph, verifying architecture

Think of the coordinator as the lead dev and the workers as the people who own individual subsystems: the lead keeps the big picture, everyone else stays in their lane.

Worker Responsibilities ​

Workers are responsible for their assigned scopes.

  • Workers MUST receive the relevant ACC context for their assigned functionality.
  • Workers operate against the same project architecture but receive context appropriate to their task.
  • Workers MUST return structured results (see §10).

2. Agent-Agnostic Design ​

Multi-agent support MUST NOT require a specific coding agent.

  • ACC SHOULD expose a generic orchestration model that compatible agents can use.
  • ACC MUST NOT assume that every coding agent supports native sub-agent spawning.
  • If the connected agent supports sub-agents, ACC MAY provide the project context and coordination facilities needed by those agents.
  • If the agent does not support sub-agents, the project remains fully functional as a single-agent project.

3. Activation ​

Multi-agent functionality MUST be explicitly configurable. Nobody gets surprised by a swarm of agents — you have to turn it on.

Configuration (.acc/config/config.yaml) ​

yaml
multi_agent:
  enabled: true
  max_concurrency: 8
  max_depth: 2
  task_timeout: 300
  resource_limits:
    cpu_percent: 80
    memory_mb: 4096
    token_budget: 1000000
  isolation_mode: "git_worktree"
  conflict_policy: "sequentialize"
Key Type Default Description
enabled boolean false Master switch; when false, no multi-agent orchestration occurs.
max_concurrency integer 4 Maximum number of concurrent workers.
max_depth integer 1 Maximum recursive spawning depth (0 = no recursion).
task_timeout integer (seconds) 300 Per-worker task timeout.
resource_limits object {} CPU, memory, token/budget limits.
isolation_mode string "git_worktree" "git_worktree", "branch", "directory", "snapshot", "process".
conflict_policy string "sequentialize" "sequentialize", "reassign", "merge", "discard", "ask_user".

When disabled: multi-agent orchestration MUST NOT occur. When enabled: the coordinator MAY spawn additional agents when useful. Sensible defaults MUST be provided for all keys.


4. Dynamic Agent Count ​

The coordinator SHOULD be able to dynamically determine the required number of workers.

Example ​

User: "Refactor the networking subsystem."

Coordinator determination:

Agent 1 → connection management
Agent 2 → protocol
Agent 3 → peer discovery
Agent 4 → tests
Agent 5 → documentation

Or it may determine that a single agent is sufficient.

ACC MUST NOT force parallelism when the task is inherently sequential. A "refactor the networking subsystem" that's really "change this one function" should stay one agent.


5. Functionality-Based Partitioning ​

ACC SHOULD use the functionality graph to help partition work.

Preferred Partitioning ​

functionality A → Agent 1
functionality B → Agent 2
functionality C → Agent 3

Rather than arbitrarily splitting files. You split responsibilities, not files.

Agents SHOULD receive ownership of coherent functionality scopes.

This reduces:

  • Conflicting edits
  • Duplicated reasoning
  • Inconsistent architecture
  • Unnecessary context
  • Merge conflicts

6. Dependency-Aware Scheduling ​

The coordinator SHOULD use the ACC graph to determine whether tasks can execute concurrently.

Example: Sequential Dependency ​

A ──→ B ──→ C

Tasks affecting A and C may not safely execute simultaneously if C depends on A's result.

Example: Independent Branches ​

A ──→ B
C ──→ D

May be executed concurrently when no relevant dependency exists.

The graph SHOULD therefore act as a scheduling aid. It's the same map you'd use by hand — just applied automatically.


7. Functionality Ownership ​

During a multi-agent task, an agent MAY temporarily own a functionality.

Example ​

auth/transport
    owner = worker-2

Other agents SHOULD avoid modifying the same functionality unless explicitly coordinated.

  • Ownership MUST be visible to the coordinator.
  • Ownership MAY be represented as session state rather than persisted into the repository.
  • Temporary agent state MUST NOT pollute project source files.

8. Shared Context ​

All agents operate against the same project architecture but MUST receive context appropriate to their task.

Shared Information (MAY include) ​

  • Project instructions
  • Project configuration
  • Architecture graph
  • Relevant functionality descriptions
  • Relevant memory
  • Relevant constraints
  • Task specification

Agents SHOULD NOT receive the entire context of unrelated agents unless required. A worker on auth/transport doesn't need to know about the recommendation engine.


9. Agent Memory ​

Workers MAY discover new information. Important discoveries SHOULD be returned to the coordinator.

Example ​

Worker 2 discovered:
    transport cannot decode frames because listeners use
    different output configurations.

The coordinator may then decide whether this becomes:

  • Functionality memory (.acc-memory.md)
  • Project documentation
  • An architectural decision

Workers MUST NOT silently write conflicting architectural knowledge into shared memory.


10. Result Handoff ​

Every worker SHOULD return a structured result.

Example ​

yaml
status: completed
scope: auth/transport
changes:
  - transport.rs
  - peer.rs
tests:
  - transport_tests
discoveries:
  - "Non-reentrant decode path blocks gapless playback"
risks:
  - "Reconnect path still depends on legacy queue"
validation: passed

The coordinator uses these results to continue the task. Structured handoff is what lets the coordinator make decisions without re-reading every worker's work.


11. Conflict Management ​

ACC SHOULD detect concurrent modifications to overlapping scopes.

If two agents attempt to modify the same functionality:

  • ACC SHOULD notify the coordinator.
  • The coordinator MUST resolve the conflict before finalizing the task.
  • ACC MUST NOT silently choose one agent's changes over another's.

Possible Strategies ​

Strategy Description
sequentialize Run conflicting tasks sequentially.
reassign Move one task to a different agent.
merge Attempt automatic merge of changes.
discard Discard one agent's changes.
ask_user Prompt user for resolution.

The selected strategy SHOULD depend on project configuration and agent capabilities. Whichever strategy wins, the choice is explicit — never silent.


12. Isolation ​

Multi-agent execution SHOULD support isolated working states.

Possible Implementations ​

  • Git worktrees
  • Temporary branches
  • Isolated directories
  • Filesystem snapshots
  • Process-level isolation

The implementation MUST NOT assume that all agents can safely modify the same working tree simultaneously.

For high-risk parallel work, isolated workspaces SHOULD be preferred.


13. Integration ​

After workers finish:

coordinator
    ↓
collect results
    ↓
integrate changes
    ↓
rebuild graph
    ↓
validate architecture
    ↓
run relevant tests
    ↓
inspect memory/documentation
    ↓
final result

The coordinator MUST perform final validation.

A worker passing its individual tests does NOT imply that the overall project is valid. This is the whole point of the integration step: the whole can break even when every part is fine on its own.


14. Failure Handling ​

A worker failure MUST NOT automatically fail the entire task.

The coordinator SHOULD determine whether to:

  • Retry
  • Reassign
  • Continue without the worker
  • Reduce parallelism
  • Ask the user

Example ​

Agent 1 → success
Agent 2 → success
Agent 3 → failure
Agent 4 → success

The coordinator may retry Agent 3 or continue if its task is non-critical.


15. Recursive Agents ​

The coordinator MAY allow workers to spawn additional workers if configured.

Example ​

coordinator
    ├── worker A
    │     ├── worker A1
    │     └── worker A2
    │
    └── worker B

However, recursive spawning MUST be bounded.

Configuration SHOULD support:

  • max_depth — default should prevent uncontrolled recursive spawning.

16. Resource Control ​

ACC SHOULD support resource limits for multi-agent sessions.

Possible Limits ​

  • max_concurrency
  • max_depth
  • Maximum total agents
  • CPU limits
  • Memory limits
  • Token/budget limits
  • Execution timeout
  • Task timeout

The coordinator MUST respect these limits.

"Spawn as many agents as needed" means: as many as are useful within configured resource boundaries — not unlimited uncontrolled process creation.


17. User Visibility ​

Multi-agent operation SHOULD remain understandable without overwhelming the user.

High-Level Progress ​

The user SHOULD see high-level progress such as:

Working on networking refactor...

4 agents active

✓ Peer discovery
✓ Protocol
→ Connection manager
→ Integration tests

The user SHOULD be able to inspect details when desired.

Inspection Commands (implementation-defined) ​

acc agents
acc agents status
acc agents inspect 3
acc agents stop 3

Exact commands are implementation-defined.


18. Natural Development ​

The user SHOULD NOT need to manually orchestrate agents.

Example ​

User: "Refactor the networking subsystem and make sure all tests continue passing."

Coordinator naturally determines:

this is a multi-functionality task
    ↓
inspect graph
    ↓
identify independent work
    ↓
spawn appropriate workers
    ↓
coordinate results
    ↓
integrate
    ↓
validate

The user should experience this as one development task. The swarm is an implementation detail; the request was one sentence.


19. Determinism ​

Multi-agent reasoning MAY be nondeterministic.

ACC's underlying operations MUST remain deterministic.

The following MUST remain deterministic:

  • Project discovery
  • Instruction resolution
  • Graph construction
  • Memory parsing
  • Validation
  • Conflict detection
  • Context assembly
  • Structured tool output

The choice to spawn agents is an agent-level decision. The substrate stays predictable even when the swarm isn't.


20. Agent-Agnostic Fallback ​

If the active agent cannot spawn sub-agents:

  • ACC MUST continue to operate normally.
  • The same task MAY be executed sequentially by one agent.
  • The framework MUST NOT require native multi-agent support from the underlying coding agent.

21. Core Principle ​

Multi-agent ACC is:

ONE PROJECT
    +
ONE SHARED ARCHITECTURE
    +
MANY SPECIALIZED WORKERS
    +
ONE COORDINATOR
    +
DETERMINISTIC VALIDATION
  • Agents may think and work independently.
  • The project architecture remains shared.
  • The coordinator integrates the work.
  • ACC verifies the final result.

22. Configuration Reference ​

Full .acc/config/config.yaml with Multi-Agent Section ​

yaml
schema_version: 1

language_analyzers:
  rust: true
  typescript: true
  go: true
  python: true

ignore:
  - "target/"
  - "node_modules/"
  - "*.lock"
  - ".git/"

diagnostics:
  warn_only: []

forbidden_deps: []

ownership:
  strict: false

multi_agent:
  enabled: true
  max_concurrency: 8
  max_depth: 2
  task_timeout: 300
  resource_limits:
    cpu_percent: 80
    memory_mb: 4096
    token_budget: 1000000
  isolation_mode: "git_worktree"
  conflict_policy: "sequentialize"

Defaults (when multi_agent section is absent) ​

yaml
multi_agent:
  enabled: false
  max_concurrency: 4
  max_depth: 1
  task_timeout: 300
  resource_limits: {}
  isolation_mode: "git_worktree"
  conflict_policy: "sequentialize"

23. Integration with ACC Commands ​

acc check ​

When multi-agent is enabled, acc check MAY validate:

  • Resource limits are reasonable
  • Isolation mode is supported
  • Conflict policy is valid

acc graph ​

The graph derivation is unchanged — it remains deterministic and offline. The graph is used by the coordinator for scheduling and partitioning decisions.

acc context ​

Workers receive context via acc context --depth N --path <scope> with appropriate filtering.

acc impact ​

The coordinator uses acc impact to understand blast radius before assigning work. Know the blast radius before you hand someone the controls.

Reserved Commands (Future) ​

These commands are reserved for future multi-agent CLI support:

Command Purpose
acc agents List active agents in current session.
acc agents status Show progress of all agents.
acc agents inspect <id> Show details for a specific agent.
acc agents stop <id> Stop a specific agent.
acc agents logs <id> View agent logs.

Note: These commands are not part of V1. They are documented here for forward compatibility.


24. Diagnostic Codes ​

The following diagnostic codes relate to multi-agent orchestration:

Code Severity Description
ACC100 error Multi-agent enabled but isolation mode not supported.
ACC101 error max_concurrency exceeds resource limits.
ACC102 warn Worker modified functionality owned by another worker.
ACC103 error Recursive spawning exceeds max_depth.
ACC104 warn Worker task timeout exceeded.
ACC105 info Multi-agent mode disabled; running sequentially.

These codes are reserved. See 07 — Diagnostic Codes for the full registry.


25. Summary ​

Principle Implication
Agent-agnostic Works with any coding agent; no ACC-specific runtime.
Graph-driven partitioning Functionality graph determines safe parallelism.
Dynamic concurrency Coordinator decides worker count; ceiling is configurable.
Ownership model Prevents conflicting edits; visible to coordinator.
Structured handoff Workers return structured results; coordinator integrates.
Isolation support Git worktrees, branches, snapshots for safe parallel work.
Failure resilience Single worker failure doesn't fail the task.
Bounded recursion max_depth prevents uncontrolled spawning.
Resource limits CPU, memory, token budgets enforced.
Deterministic substrate ACC operations remain deterministic; agent decisions may not.
Graceful fallback Single-agent mode fully functional when multi-agent unavailable.

The golden thread through all of it: parallelism is powerful, and it's only safe when the substrate underneath is deterministic and the humans stay in control.

ACC v0.6.9 · MIT Licensed · Open source · Agent-agnostic · made with ❤️ from 🇩🇴