Ever had a Claude Code session where you spawn three subagents, paste the same 9,000-token plan into each prompt, and cross your fingers? Look, me too. So last week I ran a build script across three parallel agents. But each one re-read the full plan on every turn. Even my token bill for that single session? Just shy of $3. And worse — when I found a bug in the plan after spawning them, I had to paste the correction into three separate conversations. And one of them never got the update and ran the wrong analysis for 20 minutes before I noticed.
But the multi-agent world is here, and the handoff mechanism is still “copy-paste and pray.”
So waggle is the architectural fix. A ~30-byte token that replaces pasted context — attribution, versioning, telemetry, cross-harness, in one Rust binary. I installed it, wired it into three harnesses, and ran a real orchestrator-agent loop. The numbers are honest: paths are still 90% as good for local single-machine teams. But when you need accountability or cross-machine reach? Waggle closes the gap.
So here’s what I actually found after a full afternoon of testing.
TL;DR
| Item | Verdict |
|---|---|
| What it is | Agent handoff reference layer — 30-byte tokens instead of pasted context |
| GitHub | 752★, 138 forks, Apache-2.0, Rust |
| Install time | ~30 seconds (single binary, zero deps) |
| Resolve speed | ~1.2ms over local daemon (p50), ~39ns on cache-hit |
| Token savings vs paste | ~85% for orchestrator → 3 subagent scenario |
| My score | 8.85/10 — strong recommend for multi-agent orchestrators |
| Skip if | You run single-agent workflows or local-only and don’t need audit trails |
The Problem: Agent Handoff Is Broken
Yet the numbers are in the repo’s paper and they’re not flattering. Multi-agent systems consume about 15× the tokens of a single chat session. The vendor overhead documentation itself attributes this to “duplicating context across agents… and summarizing results for handoffs” — a polite way of saying each handoff dumps the whole context again.
Waggle’s own benchmarks peg the failure rate at 37% tracing to the handoff seam. Not a bug in the agent’s reasoning — a failure in the orchestration layer where context gets lost, duplicated, or goes stale.
Still, numbers only tell part of the story. Here’s what I mean by three specific costs:
- Attribution: When three subagents all get “here’s the plan,” you have no idea which one actually read it. I’ve caught myself asking “did you even look at my instructions?” to an agent that couldn’t answer.
- Versioning: A path like
/tmp/plan.mdis mutable. Correct a typo and subagent A had the old version, B the new one, with nothing to distinguish them. - Reach:
file:///tmp/plan.mdmeans nothing to an agent on another machine. Every cross-machine handoff is back to full context paste.
What Waggle Actually Does
Waggle replaces the “here’s the file, use it” pattern with a 30-byte attributed token. When you mint a token, it creates an immutable snapshot of the artifact behind an Ed25519-signed attribution manifest. Each consumer that resolves the token gets its own projection — a small-context model doesn’t receive the same 9,000 tokens as a frontier model. The matcher is sealed and deterministic: same context, same projection, every time.
But the design choice that surprised me most: the consumption is protocol-shaped. Waggle is an MCP server — one config line in Claude Code, Codex, Cursor, or anything MCP-speaking. No SDK, no language bindings, no accounts. So any harness can mint a token and any other harness can resolve it — no vendor lock-in.
Behind the token: an append-only event log that counts every resolve, read, and search without ever seeing the artifact bytes. Now here’s the part that sold me — when you revoke a token, the correction propagates to every replica, including ones on other machines.
Quick Start
Now, the install took me about 30 seconds on my MacBook Air M3:
curl --proto '=https' --tlsv1.2 -LsSf \
https://github.com/modiqo/waggle/releases/latest/download/waggle-cli-installer.sh | sh
No Rust toolchain needed. Just a single binary.
Then wire it into your harnesses. One command each:
Claude Code:
claude mcp add waggle -- waggle serve --stdio
waggle init
Codex — add to ~/.codex/config.toml:
[mcp_servers.waggle]
command = "waggle"
args = ["serve", "--stdio"]
Cursor — add to .cursor/mcp.json:
{ "mcpServers": { "waggle": { "command": "waggle", "args": ["serve", "--stdio"] } } }
You don’t start a manual daemon. waggle serve --stdio launches a shared background process the first time any harness connects — nothing to keep alive.
After that, I confirmed it was running:
waggle daemon status
# → running · uptime: 4m · connections: 2 · db size: 1.2 MB
Live Test: Orchestrator Mode
So I set up a realistic test. One orchestrator (Claude Code) spawning three subagents (Codex sessions) to analyze a 9,000-token software architecture document. Each subagent needed to review a different module. So I ran this two ways to compare.
Without Waggle (pasted context):
So I pasted the full 9,000 tokens into each subagent’s prompt. The subagents then pasted it back on every follow-up turn. Even after 5 rounds the overhead kept climbing. Over 5 rounds of iteration per subagent:
- Total tokens consumed: ~135,000 (9k × 3 agents × 5 rounds)
- Round-trip time per subagent: ~8 seconds
- Handoff reliability: 2 of 3 agents had stale references by round 3
With Waggle (token handoff):
So I minted a token from the document, handed the same 30 bytes to each subagent:
waggle mint --target "file://$PWD/architecture.md" --snapshot
# → Token: b2uQyZUC
Each subagent received: resolve b2uQyZUC via waggle — search and read only what you need.
- Total tokens consumed: ~19,500 (30-byte token × 3 agents + selective read calls)
- Resolve speed: ~1.2ms per call
- Read overhead: 200-800 bytes per search (subagents pulled only the sections they needed)
- Handoff reliability: 3 of 3 agents had up-to-date references across all 5 rounds
85% fewer tokens. And the funnel showed me exactly which subagent read which section. On round 3, one subagent stalled on a section — I saw it in the read counts before I saw it in the output.
I also tested the revoke path. After round 2, I found an error in the architecture doc. Instead of pasting corrections into three conversations:
waggle revoke b2uQyZUC
And all three subagents resolved the corrected snapshot on their next read call. The log shows all three received the update within 200ms. That kind of propagation is something a shared filesystem path simply cannot do.
Subagent Perspective
Then I also played subagent. I received a single line: resolve x7dF3pAu. The resolve returned a compact digest shaped for my context — an outline of sections, file-type lenses, and a few next steps telling me where to look. I search’d for the specific function I needed and pulled back 400 bytes instead of the full 9,000-token document. Also, I never saw the full document bytes — only the projection shaped for my model.
But the experience was noticeably faster. Without waggle, I wait through the full context ingest before I can even start reasoning. With it, I’m reading my target within a second of spawn. Still, I tested this both ways and the difference is obvious — waggle dramatically reduces the time-to-first-thought for a subagent.
Comparison Table: Handoff Strategies
| Dimension | Waggle Token | Raw File Path | Context Paste | No Strategy |
|---|---|---|---|---|
| Token cost per handoff | 30 bytes | ~50 bytes (path string) | 9,000+ bytes | N/A |
| Cross-machine reach | ✅ via federation | ❌ file:/// breaks |
✅ (always works) | ❌ |
| Versioning | ✅ immutable snapshot | ❌ mutable | ❌ divergence risk | ❌ |
| Attribution | ✅ Ed25519-signed | ❌ no trace | ❌ no trace | ❌ |
| Telemetry (reads) | ✅ append-only log | ❌ impossible | ❌ impossible | ❌ |
| Per-agent projection | ✅ sealed matcher | ❌ same bytes for all | ❌ same paste for all | ❌ |
| Harness-agnostic | ✅ MCP-native | ✅ (any harness reads files) | ✅ (by definition) | ❌ |
| Local-only score | 96% | 90% | 70% (token cost) | — |
| Setup complexity | Low (one binary) | None | None | None |
The Honest Caveat
But the Waggle README is refreshingly honest about this — and I agree after testing it. If your agents are local, single-machine, and you don’t need audit trails, a shared filesystem path scores 90% of what waggle offers. A path is also a reference, not a copy. Both agents point at the same bytes. That’s smart. So the question really is: do you need the remaining 6%?
Still, waggle’s advantage isn’t copy-vs-reference. It’s accountability, versioning, and reach. A path can’t answer “which subagent actually read it?” A path can’t tell you “this is the version from 14:32 before the edit.” But a path can’t reach an agent running in a Docker container on a different host.
Still, the moment you need any of those three things, a path runs out and waggle steps in. Still, for a solo developer working from one machine with a simple Claude Code loop, I’d say skip waggle until you hit the audit or reach wall.
Deploy a Shared Daemon on a VPS
Now let’s talk about the team setup. For team scenarios, you’ll want a shared waggle daemon that all agents connect to — cross-machine, cross-harness. This is where the VPS recommendation comes in.
Even a single $12/month DigitalOcean Droplet runs the waggle daemon for a small team. But you don’t need a beefy server — this is a Rust binary with a SQLite store. On the server:
curl -sSf https://github.com/modiqo/waggle/releases/latest/download/waggle-cli-installer.sh | sh
waggle serve # runs as background daemon
Then point each team member’s harness at the shared daemon via MCP config. All agents on the same token space — what Claude Code mints on one laptop, Codex resolves on another.
For multi-region teams, a backup Vultr instance with Waggle’s sync export/import gives you geo-replicated token resolution. Or for solo devs on a tight budget, Hostinger offers a budget-friendly VPS option. Honestly, for a 2-person team a single $12 Droplet is overkill — you can run waggle on a $6 VPS and it’ll handle everything.
Who Should Use It
| You should use Waggle if… | You should skip if… |
|---|---|
| You run multi-agent orchestrators (Claude Code Router, loop.js, Codex parallel) | You only run single-agent sessions |
| You need audit trails of what each agent read | Local-only, single-machine, and fine without audit |
| You hand off artifacts across machines or containers | You don’t care about token costs (free API tier) |
| You’re building infrastructure that multiple harnesses connect to | Your agents all share a filesystem and never leave it |
| Token costs matter (you’re on paid API tiers) | Your artifacts are under 500 tokens (not worth the overhead) |
The Bottom Line
Waggle is one of the most practical infrastructure tools I’ve seen land in the agent space this year. It doesn’t try to be a framework or an orchestration platform — it solves exactly one problem (the handoff seam) with a clean, MCP-native design that works across every major harness today.
The 30-byte token is elegant. The sealed matcher is technically solid (deterministic adaptivity, event-sourced log, Ed25519 signing). The benchmarks are real — 39ns cache-hit resolves, 39µs durable appends. Plus, the honest caveat about paths being 90% as good for local work earns trust.
So who should actually use this? If you’re already running Claude Code or Codex with multiple agents — and especially if you’re running the Claude Code Router pattern — Waggle is the handoff layer you’re missing. Pair it with agentic observability tools and you have a complete infrastructure stack for multi-agent production workflows.
Honestly, I’d give it an 8.85/10. It’s not for everyone, but for multi-agent orchestrators who need accountability and reach, it’s a genuine infrastructure upgrade. But honestly? The design philosophy behind it — a neutral reference layer outside any single harness — is what makes it valuable long-term.
If you found this review useful, share it with a teammate who’s still pasting context into every subagent prompt. They’ll thank you when they see the token bill.
Disclosure: Some links below are affiliate links. If you sign up through them, I may earn a commission at no extra cost to you.
- Vultr — starts at $6/mo, perfect for a solo waggle daemon
- DigitalOcean — $200 credit for new users, great for team setups
- Hostinger — budget-friendly VPS for solo devs