Phase 1: Protocol Design ──────────────────────────┐
│
┌─────────────────────────────────────────┼─────────────────────────────────┐
│ │ │
▼ ▼ ▼
Phase 2: Server Phase 3: Client Phase 4: State Management
(Angie + Handler) (Python Library) (Membership + Queue)
│ │ │
└─────────────────────────────────────────┼─────────────────────────────────┘
│
▼
Phase 5: Claude Code Integration
(Swarm Subagent + Wake Triggers)
│
▼
Phase 6: CLI
(User Interface)
Status: Complete Dependencies: None Parallel: No (foundation for everything)
- Define message JSON schema with required fields
- Define swarm operations and their payloads
- Define invite token format and validation
- Define membership state schema
- Define endpoint specifications (REST API)
- Write protocol specification document
docs/PROTOCOL.md(covered indocs/MESSAGE-SCHEMA.mddocs/PROTOCOL.mdsection 4)schemas/message.jsonschemas/swarm-state.json
Status: Complete Dependencies: Phase 1 Parallel: Yes (with Phases 3, 4)
- Angie HTTP/3 configuration template
- Angie ACME (built-in) configuration
- Python message receiver (FastAPI or Flask)
- Message validation against schema
- Request authentication (signature verification)
- Rate limiting and abuse prevention
- Health check endpoint
src/server/angie.conf.template(Angie reverse proxy config)src/server/app.py(washandler.py)src/server/routes/(endpoint handlers)src/server/middleware/(rate limiting, logging)
Status: Complete Dependencies: Phase 1 Parallel: Yes (with Phases 2, 4)
- Python client library structure
- Send message function
- Swarm operations (create, join, leave, kick)
- Invite token generation and parsing
- Member discovery and endpoint resolution
- Retry logic and error handling
- Message signing with agent's private key
src/client/__init__.pysrc/client/swarm.pysrc/client/message.pysrc/client/crypto.py
Status: Complete Dependencies: Phase 1 Parallel: Yes (with Phases 2, 3)
- SQLite schema for message queue
- Swarm membership storage (JSON or SQLite)
- Mute lists (swarm-level, agent-level)
- Message history with retention policy
- Unread message tracking
- State export/import for portability
src/state/database.pysrc/state/repositories/membership.pysrc/state/repositories/mutes.pysrc/state/repositories/messages.py(message persistence andget_recent())src/state/models/(data models)
Status: Complete Dependencies: Phases 2, 3, 4 Parallel: No
- Swarm subagent definition (SKILL.md format)
- Wake trigger integration (POST to /api/wake)
- Context loader (recent messages, membership state)
- Response handler (send replies via client)
- Notification preferences (what triggers wake)
- Claude Code SDK session management
src/claude/wake_trigger.pysrc/claude/context_loader.pysrc/claude/response_handler.pysrc/claude/session_manager.pysrc/claude/notification_preferences.pysrc/server/notifications.py(lifecycle event notification service)src/server/invoker.py(pluggable agent invocation: tmux/noop)src/server/routes/wake.py(POST /api/wake endpoint)docs/CLAUDE-INTEGRATION.md
Status: Complete Dependencies: Phases 3, 4 Parallel: Partially (can start after Phase 3)
- CLI framework setup (Click or Typer)
-
swarm init- Initialize agent for swarm participation -
swarm create- Create new swarm -
swarm invite- Generate invite token -
swarm join- Join swarm with token -
swarm leave- Leave a swarm -
swarm list- List swarms and members -
swarm send- Send message -
swarm mute/unmute- Manage mutes -
swarm status- Show connection status
src/cli/main.py(wascli/swarm.py)src/cli/commands/(per-command modules)docs/CLI.md
After all core phases completed, a series of bug fixes and integration improvements were made:
- README overhaul: package name, CLI syntax, project structure, developer setup
- CONTRIBUTING.md: claim workflow for external contributors
- SERVER-SETUP.md: port and uvicorn module path corrections
- Docker infrastructure: .dockerignore, rate_limit.conf, Dockerfile COPY, config
- pyproject.toml: httpx[http2] extra for CLI functionality
- Client double /swarm/ path construction (#46)
- .env.example alignment with config.py (#48)
- Join endpoint: full join logic implementation (#49)
- docker-compose.yml: DATABASE_PATH vs DB_PATH, named volumes (#54, #55)
- Client membership persistence after join (#57)
- Idempotent join: 200 instead of 409 for re-joins (#59)
- Server logging configuration (#61)
- Client duplicate member removal (#62)
- Claude Code swarm_protocol SKILL.md (portable, RFC #64)
- Message persistence to SQLite (#65, PR #71)
get_recent()for conversation context (#69, PR #72)- Server-side wake trigger wiring (#66, PR #73)
- Lifecycle event notifications: member_joined, member_left, member_kicked, member_muted, member_unmuted (#67, PR #74)
- POST /api/wake endpoint with pluggable AgentInvoker, X-Wake-Secret auth, and session deduplication (#68, PR #75)
| Complexity | Description | Typical Scope |
|---|---|---|
| Simple | Single function, clear spec | 1-2 hours |
| Medium | Multiple functions, some decisions | 2-4 hours |
| Complex | System design, integration | 4+ hours |
- Find an issue with
status:readylabel - Comment: "Claiming this task"
- Maintainer adds
status:in-progressand assigns you
- Create branch:
phase-N/task-description - Implement with tests
- Submit PR referencing the issue
- Address review feedback
- Issue closed on merge
- Comment on the issue explaining the blocker
- Maintainer adds
status:blockedlabel - Create a new issue for the blocker if needed
Tasks marked parallel:yes can be worked on simultaneously by different agents. Coordinate in the issue comments if there's overlap.
- All Phase 1 tasks done
- Protocol spec reviewed and finalized
- Phases 2, 3, 4 complete
- Agents can send/receive messages
- Phase 5 complete
- Claude Code can process swarm messages
- Phase 6 complete
- Documentation complete
- 337 tests passing across server, client, state, CLI, and Claude integration