swarm · git:20260608.9514d23 · 2026-06-08 · sha256 bf46ed3b827cf1f8
swarm git:20260608.9514d23A
Immutable. This exact content is served forever at /api/v1/blob/bf46ed3b827cf1f8.
---
name: swarm
description: Autonomous multi-agent coordination protocol. Commander posts objectives; 3-5 nodes self-organize into tactical squads through natural language.
---
# Swarm
A commander posts an objective to a shared IOA space. Nodes in the space self-organize into a tactical squad — dividing work, sharing findings, and converging on results. No micromanagement.
## Roles
- **Commander** (aide): posts objectives, monitors, mediates human review. Does NOT assign specific work to specific nodes.
- **Node** (aiscan): receives objectives, self-organizes with peers, executes, reports.
## Message format
Send with `content_type: "swarm"` on the message envelope. The content body has **NO `type` field**.
```json
{"content": "Natural language message"}
```
Objective broadcast (commander → space):
```json
{"content": "Full vulnerability assessment of 10.0.0.0/24", "targets": ["10.0.0.0/24"], "task": true}
```
No `refs.nodes` — this is a broadcast to the entire space. All idle nodes pick it up.
| Field | Required | Description |
|-------|----------|-------------|
| `content` | **yes** | Natural language |
| `targets` | no | Operational targets for tools |
| `task` | no | `true` → all idle nodes start working |
---
## Squad formation (what happens when an objective arrives)
When a `task:true` broadcast arrives, every idle node in the space starts a task. The squad self-organizes in 3 steps:
### Step 1: Read + Introduce (one round)
Each node reads the space and sends one introduction:
```
"Node scanner-01. Skills: gogo, spray. Strongest at web surface analysis."
```
### Step 2: Claim (one round)
After reading peer introductions, each node claims a work scope based on its strengths:
```
"I'll take web surface (spray + neutron) for the full /24."
```
Rules:
- Pick scope matching your strongest skills
- If a peer already claimed your preferred scope, pick the next best
- Duplicate claims: earlier message wins, later agent adapts
- One message. Don't negotiate. Claim and start.
**Typical 3-5 node squad split:**
| Nodes | Split strategy |
|-------|---------------|
| 3 | recon / web scan / network services |
| 4 | recon / web scan / network services / credential testing |
| 5 | passive recon / active recon / web scan / network services / exploitation |
### Step 3: Execute + Share
```
claim → execute → share findings as you go → read space → claim next scope → …
```
Every phase boundary is a read-write cycle. Don't go silent.
---
## Commander role
The commander does NOT assign specific work to specific nodes. It:
1. **Posts objectives**: broadcast `task:true` to the space
2. **Monitors**: reads the space to track squad progress
3. **Mediates HITL**: when a node says "need human confirmation", creates a checkpoint and relays the decision
4. **Evaluates convergence**: all scopes reported + no blockers = done
### Posting an objective
```json
{"content": "Objective: penetration test of 10.0.0.0/24. Find all web vulnerabilities, weak credentials, and misconfigurations. Report findings with severity.", "targets": ["10.0.0.0/24"], "task": true}
```
No `refs.nodes`. The squad handles the rest.
### Multiple squads
For large targets, create multiple spaces — one per squad, one per objective:
```
aide.workspace.squad-web → 3 nodes → web vulnerability assessment
aide.workspace.squad-network → 3 nodes → network service enumeration
aide.workspace.squad-recon → 2 nodes → passive intelligence gathering
```
---
## Node role
### Receiving an objective
When a broadcast `task:true` arrives, you start a task. Read the space, introduce yourself, claim scope, execute.
### Sharing findings (share immediately, don't batch)
```
"Found SQL injection on 10.0.0.5:8080/api/search. Blind time-based, 5s delay. Severity: high."
```
### Requesting human input
Describe what you need in natural language. The commander handles the review process.
```
"Need human confirmation: found default admin credentials on 10.0.0.5. Logging in may trigger lockout. Waiting for approval."
```
### Peer coordination
- Read before each phase — a peer may have found something that changes your approach
- If a peer is blocked, help if you can
- If a peer goes silent past their ETA, announce you're taking over their scope
---
## Convergence
The squad is done when:
1. All claimed scopes have completion reports
2. No unclaimed targets
3. No unresolved blockers or pending human input
4. No new findings in the last round
Last active node writes a summary for the commander.
## Anti-patterns
- Commander micromanaging (assigning specific work to specific nodes)
- Over-negotiating (>2 messages before working)
- Silent work (peers can't coordinate with silence)
- Hoarding findings (share as you produce)
- Nodes trying to create checkpoints directly (describe the need, let commander handle it)