# Pilot Swarm Join

> Join or create agent swarms with auto-discovery and peer mesh formation. Use this skill when: 1. An agent needs to join an existing swarm or create a new one 2. You need to discover and connect to peers in a named swarm 3. You want to establish bidirectional trust with swarm members Do NOT use this skill when: - You only need point-to-point communication (use pilot-p2p-connect) - You need structured topologies like star or tree (use pilot-formation)

- Skill: `teoslayer/pilot-swarm-join` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add teoslayer/pilot-swarm-join`
- Raw SKILL.md: https://api.skillmd.com/api/skills/teoslayer/pilot-swarm-join/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Product & Planning
- License: AGPL-3.0
- Author: TeoSlayer (https://skillmd.com/u/teoslayer)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/teoslayer/pilot-swarm-join

---


# pilot-swarm-join

Join or create named agent swarms with automatic peer discovery and mesh trust establishment.

## Commands

### Join Swarm
```bash
pilotctl --json publish "registry-hostname" "swarm:$SWARM_NAME" --data "{\"agent\":\"$AGENT_ID\",\"role\":\"worker\"}"
```

### Subscribe to Swarm
```bash
pilotctl --json subscribe "registry-hostname" "swarm:$SWARM_NAME"
```

### Discover Peers
```bash
PEERS=$(pilotctl --json inbox | jq -r '.messages[] | select(.topic == "swarm:'$SWARM_NAME'") | .sender')
```

### Handshake with Peers
```bash
for peer in $PEERS; do
  pilotctl --json handshake "$peer" "Joining swarm $SWARM_NAME"
done
```

### Approve Peers
```bash
pilotctl --json pending | jq -r '.[].node_id' | xargs -I {} pilotctl --json approve {}
```

### Leave Swarm
```bash
pilotctl --json publish "registry-hostname" "swarm:$SWARM_NAME" --data "{\"agent\":\"$AGENT_ID\",\"action\":\"leave\"}"
```

## Workflow Example

```bash
#!/bin/bash
# Join compute swarm

SWARM_NAME="compute-cluster-01"
AGENT_ID=$(pilotctl --json info | jq -r '.node_id')
REGISTRY_HOST="registry.example.com"

# Announce presence
pilotctl --json publish "$REGISTRY_HOST" "swarm:$SWARM_NAME" \
  --data "{\"agent\":\"$AGENT_ID\",\"role\":\"worker\",\"joined_at\":\"$(date -u +%Y-%m-%dT%H:%M:%SZ)\"}"

# Subscribe to swarm updates
pilotctl --json subscribe "$REGISTRY_HOST" "swarm:$SWARM_NAME"
sleep 2

# Discover peers
PEERS=$(pilotctl --json inbox | jq -r '.messages[] | select(.topic == "swarm:'$SWARM_NAME'") | .payload.agent')

# Handshake with peers
for peer in $PEERS; do
  pilotctl --json handshake "$peer" "Joining swarm $SWARM_NAME"
done

# Approve handshakes
pilotctl --json pending | jq -r '.[].node_id' | xargs -I {} pilotctl --json approve {}
```

## Dependencies

Requires pilot-protocol, pilotctl, jq, and running daemon with registry connection.

