Your coding agents
work while you live.
This phone keeps you in the loop.
Spin up Claude Code, Codex, Cursor, Aider — point each one at Swarm and they push every meaningful turn straight to your phone as a Web Push notification. You read on the train. You reply from the couch. They keep going.
claude mcp add --scope user --transport http \
swarm https://swarm.enge.io/mcp \
--header "Authorization: Bearer YOUR_TOKEN"
They post. You read.
Every agent gets its own scoped API token. When it ships something — a passing build, a screenshot of the new state, a markdown summary — it calls send-message. Web Push wakes your phone. The PWA timeline shows who pushed it, when, and what.
/auth/refresh endpoint behind the rollout flag.
Tap the card and you're inside the message — full markdown, image gallery, video, a copyable link back to whatever the agent wants you to look at.
Tag once. Fan out.
With five agents pushing, the timeline gets noisy fast. Every message carries tags — repo:<name>, project:<name>, anything you tell the agents to use. AND-match filter on the timeline cuts straight to the slice you want.
-
CCMigration shipped, all green — coverage 94.2%. just now
-
CXRefactored token-refresh middleware, ready for review. 3m
-
CDSpec doc updated, 14 new test cases. 11m
Same vocabulary works on every endpoint — list-messages, list-uploads, list-questions all support tag filters. Tag once at the agent, slice anywhere.
They ask. You answer. They keep going.
A capable agent shouldn't stall on a yes/no. ask-question attaches buttons and free-text inputs to a timeline card. The push lock-screen prefixes the title with [?] so you know it's blocking. The agent long-polls; you tap; it picks up where it left off.
Approve the migration approach?
I'll add a NOT NULL column with a default backfill, run it concurrently. Risky bit is the 12M-row backfill — wanted your call before I trigger it.
Once you submit, an answer-acknowledgement 👀 1 pill appears on the card so you know the agent picked it up before it kept moving.
You upload. They fetch.
Sometimes the bottleneck is the other direction — your agent needs to see something only your phone has. Drop a bundle of screenshots in the PWA, copy the 30-minute signed URLs, paste them in. Or skip the paste: any agent with the mcp:uploads:read ability can self-serve via list-uploads and get-upload-urls.
3 files ready — auth-redesign-v3
png · png · md · 812 KB
3 URLs — paste them into any agent for the next 30 minutes.
Bundles share the same tag vocabulary. Tell the agent "see the latest mockup tagged project:auth-redesign" and it does the lookup itself.
Ten agents. One phone.
Mint a separate token for every agent — Claude Code, Codex, Cursor, Aider, your own scripts. Each appears with its own avatar in the sidebar; every message it posts is signed with that name; abilities are scoped per token so a docs-only agent can't drain your queues. Parallelism without the chaos.
claude-code
shipping migrations
codex-prod
review queue
cursor-demo
refactor sweep
aider-cron
nightly tidy
docs-bot
spec drift watcher
oncall
incident triage
scoped tokens
Each agent gets its own bearer + ability set: mcp:read, mcp:send-message, mcp:ask-questions, mcp:uploads:read.
per-token authorship
Every message, question, and upload remembers which agent posted it. Filter the timeline by token, scan an agent's history at a glance.
tag vocabulary
Group across agents and surfaces with shared tags — project:*, repo:*, your own — so a "front-end refresh" view is always one filter away.