13 KiB
Swarm2 Agent IDE Spec
Status: Draft v1
Date: 2026-04-27
Owner: Aurora / Eric
Surface: /swarm2, plus shared agent surfaces in main workspace chat
1. Product Thesis
Swarm2 is not a dashboard. Swarm2 is the control plane and IDE for sub-Claude agents.
A user should be able to clone their main Claude agent as many times as needed. Each clone has the same core access, context shape, skills, memory conventions, workspace tools, and project capabilities as the parent agent, but can run independently on a lane of work.
This is materially different from spawning disposable subagents:
- Subagents are ephemeral workers.
- Sub-Claude agents are persistent cloned operators.
- Subagents perform a task.
- Sub-Claude agents own a lane/project and can run on autopilot.
- Subagents lose continuity unless wrapped carefully.
- Sub-Claude agents carry persistent profile state, runtime metadata, tasks, logs, sessions, skills, and project awareness.
The swarm product promise:
Clone your agent into a team, give each clone a lane, watch the work happen live, intervene when needed, and inspect/edit/ship outputs without leaving the swarm IDE.
2. Core Concepts
2.1 Main Agent / Hub
The main agent is the orchestrator.
In /swarm2, the main agent should appear as a compact hub node/card, not as a giant chat panel. Its job is to:
- route work
- monitor agents
- coordinate collaboration
- surface decisions/blockers
- maintain the swarm topology
The hub card should show:
- avatar / identity
- active swarm count
- room / collaboration count
- blockers / auth errors
- active project lanes
- routing controls
It should not consume the main content area with a full chat UI.
2.2 Sub-Hermes Agent
A swarm agent is a cloned Hermes profile with:
- model/provider config
- skills/tool access
- memory/profile files
- runtime metadata
- sessions/history
- tasks/cron/autopilot state
- project cwd
- logs/output
- terminal/TUI session
- optional dev server / preview URL
Each worker card should be a compact IDE tile for that clone.
2.3 Agent Lane
Each cloned agent can own a lane:
- project lane, e.g. BenchLoop
- PR lane
- research lane
- review lane
- issue queue lane
- docs lane
- ops lane
A lane has:
- current objective
- task queue
- project context
- live chat
- terminal/TUI
- preview/editor surfaces
- handoff/checkpoint state
2.4 Autopilot
Autopilot is orchestration over persistent cloned agents.
Autopilot should:
- assign tasks to the right cloned agent
- keep agents moving with proof-based checkpoints
- detect drift/staleness/blockers
- re-prompt or reroute when needed
- summarize meaningful results
- avoid interrupting the user unless a decision, blocker, or landed result matters
3. Required Surfaces
3.1 Swarm Hub
A compact top-center hub card.
Required:
- Main agent identity/avatar
- Swarm status metrics
- Routing / dispatch button
- Active room/collaboration count
- Blocker/auth health
- Wire anchor to worker cards
Not required:
- Full embedded main chat panel
3.2 Worker Cards
Each worker card is the primary control unit.
Required fields:
- worker name/id
- role/lane
- status: idle, working, thinking, reviewing, blocked, waiting, offline
- model/provider
- current task
- task queue preview
- latest chat messages
- latest runtime/log signal
- project/cwd/branch
- preview URL if available
- terminal/TUI attach state
- quick actions: chat, route, tasks, terminal, preview, editor
3.3 Live Worker Chat
Worker chat must be real, not local-only card history.
Required:
- Pull latest messages from the worker's actual session history/state.db/API
- Poll or subscribe for updates
- Show user/assistant/tool-ish messages compactly
- Sending from the card dispatches to that worker's real profile/session
- LocalStorage is allowed only as fallback/draft cache
Acceptance:
- If a worker was prompted by autopilot, the card reflects that conversation.
- If the user sends a message to a worker, the reply appears in the same live feed.
3.4 Task Queue
Each worker card should show its task state.
Required:
- current task
- next 2-3 queued tasks
- blocked/waiting indicators
- done/recently completed count
- click to open full task drawer or
/tasks?assignee=workerId
Task sources:
- Hermes tasks API
- worker runtime.json currentTask/state
- optional project issue/PR metadata
3.5 Live Terminal / TUI
Swarm2 should host the actual live worker terminal/TUI when available.
Required:
- auto-detect active worker terminals
- mount active terminals by default in runtime view
- allow add/remove terminal panes
- attach to real tmux/session when available
- fallback to live log tail or shell when no attachable terminal exists
- preserve exact TUI interaction where possible
Acceptance:
- User can use the agent's TUI directly from Swarm2.
- Runtime view should not require manually knowing a tmux session name.
3.6 Project Preview
If an agent is working on a local project/site, Swarm2 should expose it.
Required:
- detect project cwd
- detect package/dev server config where possible
- surface known local URL(s), e.g. localhost ports
- show embedded preview panel
- show project label, branch, changed files
Acceptance:
- If swarm4 is working on BenchLoop and a local preview is running, the user can view it inside Swarm2 without leaving the page.
3.7 Editor / Diff Surface
Swarm2 should evolve into a Bolt-like agent IDE.
Phase 1:
- file browser for the worker's project cwd
- open/read files
- edit/save files
- diff view
- changed files list
Phase 2:
- visual element picker from preview
- selected element -> create fix task
- agent-assisted edits
- accept/reject patch workflow
Acceptance:
- User can inspect and modify agent output from the swarm surface.
3.8 Collaboration / Office View
Cards should communicate collaboration visually.
Concept:
- each worker has a small 2x2 office space in its card
- tools/status light up areas of the office
- when workers collaborate, their cards/offices connect into a larger shared office
- wires show collaboration lanes and routing
Required first pass:
- visual grouping by project/lane
- stronger connected state for workers in same room/project
- collaboration wire emphasis
Later:
- mini office avatars/scenes
- shared workspace expansion
- tool/state animations
3.9 Main Chat Agent Sidebar
Main workspace chat should get an agent sidebar inspired by Clawsuite.
Required:
- active cloned agents
- CLI/ACP/sub-Claude sessions
- status/current task
- latest output
- issues/PRs solved
- quick open into Swarm2 card/session/terminal/preview
- Claude-inspired avatars
Acceptance:
- User can monitor all agent work from the main chat surface without opening Swarm2.
4. Data Contracts
4.1 runtime.json
Each worker should write/maintain:
{
"workerId": "swarm4",
"state": "working",
"currentTask": "Implement BenchLoop leaderboard API",
"activeTool": "terminal",
"cwd": "/path/to/project",
"projectName": "bench-loop",
"branch": "feature/leaderboard-api",
"pid": 12345,
"tmuxSession": "swarm4",
"terminalKind": "tmux|pty|log-tail|none",
"previewUrls": ["http://localhost:3002"],
"lastOutputAt": 1777269485753,
"lastEvent": "Build passed",
"blockedReason": null
}
4.2 Worker Metadata
Each worker should have swarm.yaml or equivalent:
id: swarm4
displayName: BenchLoop Worker
role: Benchmark / Experiment Lane
specialties:
- BenchLoop
- local model benchmarks
- experiment reporting
preferredTasks:
- benchmark runs
- quality gates
- result synthesis
avoidTasks:
- UI-heavy work
projectHints:
- bench-loop
- bench-loop-app
4.3 Chat History API
Add/standardize:
GET /api/swarm-chat?workerId=swarm4&limit=30
Returns:
{
"workerId": "swarm4",
"sessionKey": "...",
"messages": [
{ "role": "user", "content": "...", "timestamp": 1777269485753 },
{ "role": "assistant", "content": "...", "timestamp": 1777269490000 }
]
}
4.4 Task API
Worker cards should consume:
GET /api/claude-tasks?assignee=swarm4&include_done=false- or existing task endpoint equivalent
4.5 Project Preview API
Add:
GET /api/swarm-project?workerId=swarm4
Returns:
{
"workerId": "swarm4",
"cwd": "/path/to/project",
"projectName": "bench-loop",
"branch": "feature/x",
"changedFiles": ["api/main.py", "ui/src/App.tsx"],
"previewUrls": ["http://localhost:5173"],
"packageScripts": ["dev", "test", "build"]
}
5. UX Layout
Default /swarm2 Layout
- Header/stat strip
- Compact hub node
- Worker card grid
- Recent activity feed
- Floating router/dispatch drawer
Worker Card Expanded Drawer
Tabs:
- Chat
- Tasks
- Terminal
- Preview
- Files/Diff
- Logs
Runtime View
- auto-populated terminal grid for active workers
- add/remove terminal pane controls
- fallback panes for logs if no terminal attach exists
Project View
- preview iframe
- file tree/editor
- changed files/diff
- worker chat sidecar
6. Implementation Phases
Phase 1 — Make Swarm2 operationally useful
- Remove giant main-agent chat from hub
- Make hub compact
- Replace fake worker chat with real session history
- Add task queue panel to cards
- Add runtime terminal auto-population
- Add project/cwd/preview metadata badges
Phase 2 — Agent IDE foundation
- Worker drawer with tabs
- File browser/read/edit
- changed files + diff
- project preview iframe
- terminal/log fallback polish
Phase 3 — Autopilot orchestration
- profile metadata (
swarm.yaml) - routing uses worker specialties
- autopilot check-in reads real runtime/task/chat states
- proof-based checkpoint prompts
- drift/blocker detection
Phase 4 — Collaboration visuals
- 2x2 office card visuals
- shared office expansion for collaborating workers
- project/lane clustering
- stronger topology and collaboration wires
Phase 5 — Main workspace integration
- Agent sidebar in main chat
- Active cloned agents/sub-Claude list
- latest output/status
- issues/PR solved summaries
- jump into Swarm2 views
7. Acceptance Criteria
Swarm2 is solid when:
- User can clone multiple full Claude agents and see them as persistent workers.
- User can understand what every worker is doing without leaving
/swarm2. - User can chat with any worker and see real recent messages.
- User can see each worker's tasks and blockers.
- User can attach to live terminals/TUIs or live log fallback.
- User can view the local project/site each worker is modifying.
- User can inspect/edit files or diffs from the same surface.
- Autopilot can monitor workers and re-prompt based on real evidence.
- Main chat can show the same agent state in a sidebar.
7.1 Promotion & Deprecation Path
/swarm is v0 and got cluttered. /swarm2 is the keeper. Lock-in:
- Promote
/swarm2to/swarm. Keep/swarm2as a redirect for one release. - Delete legacy components and screen:
screens/swarm/swarm-screen.tsxcomponents/swarm/topology-band.tsxcomponents/swarm/widget-rail.tsxcomponents/swarm/agent-card.tsxcomponents/swarm/swarm-hub.tsxcomponents/swarm/swarm-orchestration.tsxcomponents/swarm/swarm-runtime-strip.tsxcomponents/swarm/swarm-health-strip.tsxcomponents/swarm/swarm-compose.tsx
- Keep only what the new surface uses:
swarm-terminal.tsx,router-chat.tsx, andswarm-node-chat.tsxuntil real-chat replaces it. - Move
screens/swarm2/*intoscreens/swarm/*after promotion. - Sidebar nav label: "Swarm". Drop Swarm2 branding everywhere.
- Remove
SWARM2_SURFACE_CONTRACT.keepsLegacySwarmRoute = true. - Rename
swarm2-screen.test.tstoswarm-screen.test.tsand audit stale imports.
Acceptance: one Swarm route, no duplicates, all swarm tests green, docs/README/nav updated, /swarm2 redirects for one release then 404s.
8. Non-goals for immediate pass
- Full visual editor parity with Bolt in Phase 1
- Perfect cross-machine terminal streaming before local attach works
- Full PR/issue automation UI before worker/task runtime is reliable
- Replacing
/swarm;/swarm2remains the new product surface until stable
9. Immediate Next Build Pass
Execution contract for this mission:
- Context, memory, and handoffs come from
/Users/aurora/.openclaw/workspace - Swarm2 code, git, build, and tests run in
/Users/aurora/hermes-workspace - Do not use legacy workspace aliases
- Before any build/test/git loop, run:
cd /Users/aurora/hermes-workspace &&
pwd &&
test -f package.json &&
jq -r .name package.json
Start here:
- Shrink
Swarm2OrchestratorCardto hub-only, no embedded main chat. - Add
/api/swarm-chatand wire worker cards to real history. - Add per-card task queue preview.
- Add active project/cwd/preview badges from runtime/project API.
- Make runtime view auto-populate active workers and attach/fallback cleanly.
- After new route-module changes, prefer a full dev-server restart over trusting hot reload.
This turns /swarm2 from a beautiful control surface into the first version of the actual sub-Claude IDE.