modiqo/wagglePublic

Attributed, resolvable artifact references for agent handoffs — a ~30-byte token instead of pasted context. MCP-native; the reference layer for the agent-harness world.

AI summary: An MCP-native reference layer that replaces raw context pasting with resolvable, 30-byte artifact tokens for AI agents.

Stars
754
Forks
97
Watchers
6
Open issues
0
Open PRs
0
Contributors
~1
Commits
186
Branches
1

RustApache-2.0Created Jul 8, 2026Last push 17d agoLatest release v0.5.3+-41 stars this week+-105 this month

Star history

since Jul 12, 2026
0250500750Jul 2026Jul 2026Jul 2026Aug 2026
754 stars as of Aug 7, 2026, tracked back to Jul 12, 2026. Historical curve reconstructed from public GitHub event archives, calibrated to the current total.

Contribution activity

commits per day, last 52 weeks
AugSepOctNovDecJanFebMarAprMayJunJulAugMonWedFri2025-08-10: 0 commits2025-08-11: 0 commits2025-08-12: 0 commits2025-08-13: 0 commits2025-08-14: 0 commits2025-08-15: 0 commits2025-08-16: 0 commits2025-08-17: 0 commits2025-08-18: 0 commits2025-08-19: 0 commits2025-08-20: 0 commits2025-08-21: 0 commits2025-08-22: 0 commits2025-08-23: 0 commits2025-08-24: 0 commits2025-08-25: 0 commits2025-08-26: 0 commits2025-08-27: 0 commits2025-08-28: 0 commits2025-08-29: 0 commits2025-08-30: 0 commits2025-08-31: 0 commits2025-09-01: 0 commits2025-09-02: 0 commits2025-09-03: 0 commits2025-09-04: 0 commits2025-09-05: 0 commits2025-09-06: 0 commits2025-09-07: 0 commits2025-09-08: 0 commits2025-09-09: 0 commits2025-09-10: 0 commits2025-09-11: 0 commits2025-09-12: 0 commits2025-09-13: 0 commits2025-09-14: 0 commits2025-09-15: 0 commits2025-09-16: 0 commits2025-09-17: 0 commits2025-09-18: 0 commits2025-09-19: 0 commits2025-09-20: 0 commits2025-09-21: 0 commits2025-09-22: 0 commits2025-09-23: 0 commits2025-09-24: 0 commits2025-09-25: 0 commits2025-09-26: 0 commits2025-09-27: 0 commits2025-09-28: 0 commits2025-09-29: 0 commits2025-09-30: 0 commits2025-10-01: 0 commits2025-10-02: 0 commits2025-10-03: 0 commits2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-08: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 0 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 0 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 0 commits2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 0 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 0 commits2026-02-11: 0 commits2026-02-12: 0 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 0 commits2026-02-20: 0 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 0 commits2026-02-26: 0 commits2026-02-27: 0 commits2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 0 commits2026-03-03: 0 commits2026-03-04: 0 commits2026-03-05: 0 commits2026-03-06: 0 commits2026-03-07: 0 commits2026-03-08: 0 commits2026-03-09: 0 commits2026-03-10: 0 commits2026-03-11: 0 commits2026-03-12: 0 commits2026-03-13: 0 commits2026-03-14: 0 commits2026-03-15: 0 commits2026-03-16: 0 commits2026-03-17: 0 commits2026-03-18: 0 commits2026-03-19: 0 commits2026-03-20: 0 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 0 commits2026-03-24: 0 commits2026-03-25: 0 commits2026-03-26: 0 commits2026-03-27: 0 commits2026-03-28: 0 commits2026-03-29: 0 commits2026-03-30: 0 commits2026-03-31: 0 commits2026-04-01: 0 commits2026-04-02: 0 commits2026-04-03: 0 commits2026-04-04: 0 commits2026-04-05: 0 commits2026-04-06: 0 commits2026-04-07: 0 commits2026-04-08: 0 commits2026-04-09: 0 commits2026-04-10: 0 commits2026-04-11: 0 commits2026-04-12: 0 commits2026-04-13: 0 commits2026-04-14: 0 commits2026-04-15: 0 commits2026-04-16: 0 commits2026-04-17: 0 commits2026-04-18: 0 commits2026-04-19: 0 commits2026-04-20: 0 commits2026-04-21: 0 commits2026-04-22: 0 commits2026-04-23: 0 commits2026-04-24: 0 commits2026-04-25: 0 commits2026-04-26: 0 commits2026-04-27: 0 commits2026-04-28: 0 commits2026-04-29: 0 commits2026-04-30: 0 commits2026-05-01: 0 commits2026-05-02: 0 commits2026-05-03: 0 commits2026-05-04: 0 commits2026-05-05: 0 commits2026-05-06: 0 commits2026-05-07: 0 commits2026-05-08: 0 commits2026-05-09: 0 commits2026-05-10: 0 commits2026-05-11: 0 commits2026-05-12: 0 commits2026-05-13: 0 commits2026-05-14: 0 commits2026-05-15: 0 commits2026-05-16: 0 commits2026-05-17: 0 commits2026-05-18: 0 commits2026-05-19: 0 commits2026-05-20: 0 commits2026-05-21: 0 commits2026-05-22: 0 commits2026-05-23: 0 commits2026-05-24: 0 commits2026-05-25: 0 commits2026-05-26: 0 commits2026-05-27: 0 commits2026-05-28: 0 commits2026-05-29: 0 commits2026-05-30: 0 commits2026-05-31: 0 commits2026-06-01: 0 commits2026-06-02: 0 commits2026-06-03: 0 commits2026-06-04: 0 commits2026-06-05: 0 commits2026-06-06: 0 commits2026-06-07: 0 commits2026-06-08: 0 commits2026-06-09: 0 commits2026-06-10: 0 commits2026-06-11: 0 commits2026-06-12: 0 commits2026-06-13: 0 commits2026-06-14: 0 commits2026-06-15: 0 commits2026-06-16: 0 commits2026-06-17: 0 commits2026-06-18: 0 commits2026-06-19: 0 commits2026-06-20: 0 commits2026-06-21: 0 commits2026-06-22: 0 commits2026-06-23: 0 commits2026-06-24: 0 commits2026-06-25: 0 commits2026-06-26: 0 commits2026-06-27: 0 commits2026-06-28: 0 commits2026-06-29: 0 commits2026-06-30: 0 commits2026-07-01: 0 commits2026-07-02: 0 commits2026-07-03: 0 commits2026-07-04: 0 commits2026-07-05: 0 commits2026-07-06: 0 commits2026-07-07: 18 commits2026-07-08: 56 commits2026-07-09: 11 commits2026-07-10: 2 commits2026-07-11: 34 commits2026-07-12: 20 commits2026-07-13: 29 commits2026-07-14: 1 commit2026-07-15: 0 commits2026-07-16: 0 commits2026-07-17: 0 commits2026-07-18: 0 commits2026-07-19: 0 commits2026-07-20: 1 commit2026-07-21: 0 commits2026-07-22: 0 commits2026-07-23: 0 commits2026-07-24: 0 commits2026-07-25: 0 commits2026-07-26: 0 commits2026-07-27: 0 commits2026-07-28: 0 commits2026-07-29: 0 commits2026-07-30: 0 commits2026-07-31: 0 commits2026-08-01: 0 commits2026-08-02: 0 commits2026-08-03: 0 commits2026-08-04: 0 commits2026-08-05: 0 commits2026-08-06: 0 commits2026-08-07: 0 commits2026-08-08: 0 commits
172 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Permissive license

    Apache-2.0

  • Continuous integration

    Automated checks passing

What waggle does

Waggle solves the problem of passing massive, static context paths between autonomous agents by introducing attributed, 30-byte resolvable tokens. Instead of pasting URLs or absolute file paths that lack access control and agent-specific formatting, Waggle tokens resolve dynamically into the specific view required by the receiving agent. The system actively tracks read counts and propagates data corrections to every agent holding a token, ensuring system-wide state consistency. Operating purely as a reference protocol, it requires no centralized server and plugs directly into Model Context Protocol environments.

Platform engineers and researchers building complex, multi-agent LLM harnesses. Requires an understanding of the Model Context Protocol and Rust for native implementation.

  • Dynamic token resolution: Converts a tiny 30-byte identifier into context-specific data tailored for the querying agent.
  • Universal state propagation: Instantly updates the underlying artifact for all agents if a correction is made by one.
  • Read tracking: Monitors exactly which agents have accessed a specific piece of context, enabling strict audit trails.
  • Serverless architecture: Operates entirely without a centralized database, relying on the protocol layer for resolution.
  • MCP-native integration: Built specifically to bridge handoffs in complex, multi-agent Model Context Protocol setups.

Where teams use it

Multi-agent workflows

A research agent can pass a tiny Waggle token to a writing agent instead of dumping a 100k token JSON blob.

Auditable AI chains

Security teams can trace exactly which agent accessed a sensitive piece of context by auditing token reads.

Context correction

If a validation agent spots an error in shared context, updating it via the token fixes it for all downstream agents.

Memory optimization

Agent orchestration harnesses can drastically reduce memory overhead by passing references instead of raw strings.

Getting started: Follow the harness setup instructions to integrate the Rust crate into your agent loop.

README

main branch

the waggle mark: a figure-eight dance with the waggle run as an arrow waggle

Not a path. Not a URL. A handoff that answers back.

Locations are dumb — no per-agent shaping, no receipts, no way to fix them once sent. waggle's 30-byte token resolves into each agent's own view, counts every read, and propagates a correction to every holder. A path can't do that; a URL needs a server; this needs neither.

modiqo%2Fwaggle | Trendshift

modiqo%2Fwaggle | Trendshift

The problem · How it works · Install · Harness setup · By file type · Reach · Switchboard · The essay · The paper

The handoff, before and after: pasting the whole artifact to every subagent, versus handing off a 30-byte token that each consumer resolves into its own projection

The problem

We are entering the world of agent harnesses: Claude Code orchestrators fanning out subagents, Codex sessions delegating in parallel, cross-vendor agents discovering each other over open protocols. And every one of these handoffs, today, works the same way: forward the context and hope.

The costs are measured, not hypothetical. Multi-agent systems consume ~15× the tokens of a chat session — the overhead attributed by the vendor itself to "duplicating context across agents… and summarizing results for handoffs," whose one-line summary is "each handoff loses context." Roughly 37% of multi-agent failures trace to exactly this seam.

Waggle's competitor is not another protocol. It is "Here's /tmp/analysis.md. Use it." — and that instinct is correct: a path is a 30-byte reference, which is exactly the right size for a handoff. But a raw path has no attribution (who made this, from what), no adaptation (the small-context model gets the same 9,000 tokens as the frontier model), no lifecycle (a stale path silently serves wrong data forever), no telemetry (which subagent actually read its input? which stalled?), and no reach (it dies at the machine boundary).

Three context windows compared: a full handoff fills the window with the artifact again; a raw path is cheap but blind; a waggle token stays small and pulls back only budgeted slices through resolve, search, and read

Only the string enters the consumer's context — the artifact behind it never travels unless something fetches it. Waggle standardizes that third pattern and enforces its one hard rule by type: the token travels; the artifact never auto-expands; resolve, read, and search return only the projection or slice the consumer asked for, under byte budgets. Cheap like a path — but the reference answers back.

"But my subagents share a filesystem — that's already share-by-reference"

It is, and that's the smartest thing you can do without waggle. A path isn't a copy; both agents point at the same bytes. Our benchmark's reference arm is exactly this — a local path plus ls, grep, open, pdftotext — and with a fair toolset it scores 90%, competitive with waggle's 96%. If your agents are local, the task is short, and you never need to audit anything, use the path — waggle is overhead.

The distinction isn't copy-vs-reference. It's that a path is a location, and a location can't answer three questions a handoff eventually has to:

  • Was it read — and which parts? cat and grep leave no trace you can query. The entire "did your subagent actually read it?" check is impossible with a bare path, not just inconvenient — reading a file records nothing. Our sharpest result (regions read → 99% correct; skipped → 20%) exists only because reads go through the token.
  • Which version? A path names mutable bytes. Correct the file mid-task and agent A read the old copy, B the new, with nothing to tell them apart — the divergent-copy failure, happening with a shared filesystem. Waggle snapshots at mint (content-addressed, immutable) and gives supersede/revoke with lineage.
  • Reachable from where? file:///… means nothing to an agent in another container or at the edge. The same token resolves unchanged across all three radii.

The case for waggle is accountability, versioning, and reach — never that the filesystem duplicates bytes. The moment you need to prove what an agent read, survive the file changing, or hand off to something not on this box, a path runs out and a name doesn't.

How it works

A token is a ~30-byte attributed name for an artifact, minted in one call. Behind it stands an attribution manifest: who minted it (Ed25519-signed when the host holds an identity), for which channel, from which parent (delegation forms a lineage tree), with variants — different projections for different consumers. When an agent resolves the token it presents its context, and a sealed, deterministic matcher returns its projection. Everything afterward is an event in an append-only log — payload-free by construction, so funnels count without ever seeing your data.

The author's loop: mint, hand off one 30-byte line, consumers resolve their own projections, work is recorded as payload-free counts, the funnel reports, and a revocation travels to every replica

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. Locally it is one binary and a SQLite file.

Walk the handoff, in first person

The value isn't abstract. Stand in each role and it's obvious.

You are the orchestrator. You just wrote a plan and spawned three subagents. Today you paste the plan into each prompt — three copies, re-billed every turn, and afterward you have no idea which one actually read it. With waggle you hand each the same 30-byte line. When they return, the funnel shows two resolved and read it, one never opened it — and you catch the bluff before you trust its answer. Found a bug in the plan? One revoke, and the correction reaches all three.

You are the subagent. You wake up with one line: resolve b2uQyZUC. You resolve it into a digest shaped for your model, an outline so you know what's inside before you read, and next steps pointing you where to look. You grep for the one fact you need and pull 200 bytes — not the 9,000-token plan. You never ingest what you didn't need.

Now the subagent moves to another machine. Nothing changes. The same line, the same resolve, the same grep — the bytes stay on the orchestrator's laptop, only the matches travel back. The loop you learned in one process is byte-for-byte the loop across the network.

And this can't live inside a harness. Claude Code could build clever handoffs — but that cleverness would die at its boundary; a Codex subagent couldn't see it, and the orchestrator's memory of who made what, and who read it, would be prose in one harness's context, gone at the next compaction. The reference layer has to sit outside any single harness — a neutral substrate every harness speaks in one line — so what Claude Code mints, Codex resolves, and the receipt survives them both. Handoffs are a distributed-systems problem; solving them inside one vendor's harness logic is solving them in the one place they can't be solved.

Install

Pick one — all install the same waggle binary:

cargo install waggle-cli                          # from crates.io

# ...or a prebuilt binary, no Rust toolchain needed:
curl --proto '=https' --tlsv1.2 -LsSf \
  https://github.com/modiqo/waggle/releases/latest/download/waggle-cli-installer.sh | sh

# ...or Homebrew:
brew install modiqo/homebrew-tap/waggle-cli

The store lives at ~/.waggle/waggle.db (SQLite, WAL); blobs sit beside it. waggle daemon status shows uptime, connections, and disk weight.

Wire it into your harness

Two things make a harness waggle-fluent: the MCP server (the tools) and the convention-file stub (the one standing instruction). Each is one command. All three land on the same daemon and the same tokens — what a Claude Code session mints, a Codex session resolves.

Claude Code

claude mcp add waggle -- waggle serve --stdio
waggle init        # in each repo where agents work

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 server. waggle serve --stdio is the MCP server — your harness launches it on demand, and its shim auto-starts a shared background daemon the first time any harness connects (connect_or_start). There is no manual daemon step: nothing to run, nothing to keep alive. Restart your harness so it picks up the new tools, then confirm:

waggle daemon status     # → running · uptime · connections · db size

Prefer to run it in the foreground (for logs / debugging) instead of letting it auto-start? waggle serve --daemon. Stop or restart the background one with waggle daemon stop / waggle daemon restart.

waggle init writes a short stub into CLAUDE.md, AGENTS.md, and .cursorrules (idempotent — it manages its own marked block). That stub is the entire standing instruction; everything else is taught in-band — every tool response carries up to three executable next steps, and map answers "where am I, what are my paths?" computed live from state. Instructions in convention files rot; envelopes can't.

The orchestrator pattern, in practice: when you delegate, the subagent's prompt contains the handoff line and nothing else about the artifact —

Your working context: resolve b2uQyZUC via waggle. Use search/read to pull only the slices you need; call record --stage run when you've used it.

The subagent finds the tools already mounted, pulls its own projection, and the funnel shows you it happened.

By file type

The lens engine is text-first, not markdown-first — structure is discovered from the content type, so the loop you learn on a report works on a lockfile.

One token, the right lens for each artifact: prose affords outline/section/lines/search; source code affords symbol/lines/search plus symbol contracts, its outline extracted at mint; binaries are made text by extraction or ride as media variants

Prose — mint with --snapshot to pin the bytes; consumers get the outline, sections, line windows, and grep:

waggle mint --target "file://$PWD/q3-report.md" --snapshot
waggle read   --token b2uQyZUC --section "Competitor Pricing"
waggle search --token b2uQyZUC --pattern "pricing"     # matches travel, the file stays

Source code--snapshot also runs tree-sitter at mint and stores a symbol outline beside the bytes. The consumer orients before it greps, reads a definition by name, and you can declare — and prove — what a reviewer had to reach:

waggle mint --target "file://$PWD/src/contract.rs" --snapshot \
    --require symbol:evaluate                 # a consumption contract, signed at mint
waggle read     --token 9u6KEr6F              # overview: the symbol table of contents
waggle read     --token 9u6KEr6F --symbol evaluate   # the exact definition, no window guessing
waggle coverage --token 9u6KEr6F              # { met: true }  ← the required region was reached

Symbols work for Rust, Python, TypeScript/JavaScript, and Go; other text keeps the full line/search loop. Extraction happens only at mint — no parser ever runs on a serving path, including the edge.

Binaries (PDF, image, voice) — extract the text with your own abilities and pass it via --content, or attach the media so vision/voice consumers receive it while everyone else falls through to the catch-all:

waggle mint --target "file://$PWD/deck.pdf"   --content ./deck.txt      # searchable text
waggle mint --target "file://$PWD/memo.m4a"   --attach  ./memo.m4a      # audio → listeners

Reach: local → machines → the edge

The reference doesn't stop at the process boundary. Every harness on a machine shares one daemon; daemons federate across machines; and the same tokens graduate to Cloudflare's edge by replaying the log — migration is a stream, because the log is the truth. Pinned snapshots replicate with the records, so search greps at the edge against content whose source file never left your laptop.

One token at three radii: every harness on one machine through waggled; across machines through federation; and on Cloudflare's edge where grep runs remotely while the source files never leave

When the handoff must outlive your laptop, deploy once (guide 09) and push:

npx wrangler deploy               # a Durable Object per tenant, same certified engine
waggle edge push                  # records + snapshots replicate; the FILES never leave
waggle edge status                # { "health": "ok", "tools": 9 }
waggle edge smoke                 # proof loop: mint → resolve → funnel, at the edge

The CLI is transparent through all three tiers — an agent's loop (mint, hand off, resolve, interrogate, report) is byte-for-byte the same whether the other end is in this process, on another machine, or on another continent.

The tmux switchboard

For the full multi-harness experience, waggle-tmux turns handoffs into the interface itself (guide 11):

cargo install --path crates/waggle-tmux         # ships with the repo
waggle-tmux up claude-code codex                # choose once — everything wires itself

One window per harness (the tmux bar is your harness switcher), a live lineage board under each, and when an agent finishes it mints its outcome to tmux/<destination> — your screen swaps to that harness with the resolve instruction typing itself. Receipts on the board, /exit handled gracefully, --seal when the review must be provable.

What makes it credible

This repository is design-first and unusually explicit about its own discipline — the design docs are the contract, and the specification with its conformance vectors is the portable half (generated FROM the implementation and drift-checked in CI — an independent implementation that matches them is a waggle implementation):

  • Sans-I/O core — no clock, no entropy, no storage in the domain crates; every effect is a parameter. The same code runs in the native daemon and in Workers wasm, deterministic under test.
  • Deterministic adaptivity — same context, same projection, always; the variant matcher is sealed so the trust claim survives.
  • Event-sourced with a reconstruct guarantee — counters are cache; the log is truth; replay-equivalence is a CI property, not a slogan.
  • One operations catalog — the MCP tools, the clap CLI, the map navigation, and COMMANDS.md are four projections of one table, with parity tests that fail the build on drift.
  • Verified against real infrastructure — a differential oracle holds the edge byte-identical to SQLite over the same operations, on a real Cloudflare account.

Status

v0.4.0 on crates.io — the full feature set, every claim a passing test in CI (three-OS matrix + wasm + the live Miniflare edge matrix):

  • the full loop — mint / resolve / record / mutate / funnel / read / search / query / map over MCP and CLI, one shared daemon per machine;
  • surgical content — snapshots pinned content-addressed at mint; grep and windowed reads through the token under byte budgets;
  • receipts — consumption contracts (--require), coverage with misses named, accepted/rejected outcomes, and an escalation choreography;
  • the symbol lens — mint-time tree-sitter outlines; read --symbol, --require symbol:, zero parsing on any serving path;
  • the resource projection — MCP resources/list+read, and subscriptions that push lifecycle corrections to holders;
  • federation & the edge — daemon-to-daemon; a Durable Object per tenant; resolve p50 1.2 ms through the full HTTP-worker-DO path;
  • trust — Ed25519 over the immutable core; capability-URL private tokens;
  • measured, not promised (benches/PERF.md) — 39 ns cache-hit resolves, 39 µs durable appends, a million-event funnel fold in 334 µs.

The documentation map holds the guides in reading order; the essay is why it's shaped this way, and the paper is the systems treatment.

License

MIT OR Apache-2.0, at your option.


She never carries the field home. She dances, and the hive knows.

View on GitHub

Recent activity

commits and pull requests

Releases and announcements

8 total
  1. v0.5.3v0.5.3Jul 14, 2026108 downloads

    # waggle-cli 0.5.3 ## Install waggle-cli 0.5.3 ### Install prebuilt binaries via shell script ```sh curl --proto '=https' --tlsv1.2 -LsSf https://github.com/modiqo/waggle/releases/download/v0.5.3/waggle-cli-installer.sh | sh ``` ### Install prebuilt binaries via Homebrew ```sh brew install modiqo/tap/waggle-cli ``` ## Download waggle-cli 0.5.3 | File | Platform | Checksum | |--------|----------|----------| | [waggle-cli-aarch64-apple-darwin.tar.xz](https://github.com/modiqo/waggle/releases/download/v0.5.3/waggle-cli-aarch64-apple-darwin.tar.xz) | Apple Silicon macOS | [checksum](https://github.com/modiqo/waggle/releases/download/v0.5.3/waggle-cli-aarch64-apple-darwin.tar.xz.sha256) | | [waggle-cli-x86_64-apple-darwin.tar.xz](https://github.com/modiqo/waggle/releases/download/v0.5.3/waggle-cli-x86_64-apple-darwin.tar.xz) | Intel macOS | [checksum](https://github.com/modiqo/waggle/releases/download/v0.5.3/waggle-cli-x86_64-apple-darwin.tar.xz.sha256) | | [waggle-cli-x86_64-pc-windows-msvc.zip](https://github.com/modiqo/waggle/releases/download/v0.5.3/waggle-cli-x86_64-pc-windows-msvc.zip) | x64 Windows | [checksum](https://github.com/modiqo/waggle/releases/download/v0.5.3/wa

  2. v0.5.2v0.5.2Jul 13, 20262 downloads

    ## Install waggle-cli 0.5.2 ### Install prebuilt binaries via shell script ```sh curl --proto '=https' --tlsv1.2 -LsSf https://github.com/modiqo/waggle/releases/download/v0.5.2/waggle-cli-installer.sh | sh ``` ### Install prebuilt binaries via Homebrew ```sh brew install modiqo/tap/waggle-cli ``` ## Download waggle-cli 0.5.2 | File | Platform | Checksum | |--------|----------|----------| | [waggle-cli-aarch64-apple-darwin.tar.xz](https://github.com/modiqo/waggle/releases/download/v0.5.2/waggle-cli-aarch64-apple-darwin.tar.xz) | Apple Silicon macOS | [checksum](https://github.com/modiqo/waggle/releases/download/v0.5.2/waggle-cli-aarch64-apple-darwin.tar.xz.sha256) | | [waggle-cli-x86_64-apple-darwin.tar.xz](https://github.com/modiqo/waggle/releases/download/v0.5.2/waggle-cli-x86_64-apple-darwin.tar.xz) | Intel macOS | [checksum](https://github.com/modiqo/waggle/releases/download/v0.5.2/waggle-cli-x86_64-apple-darwin.tar.xz.sha256) | | [waggle-cli-x86_64-pc-windows-msvc.zip](https://github.com/modiqo/waggle/releases/download/v0.5.2/waggle-cli-x86_64-pc-windows-msvc.zip) | x64 Windows | [checksum](https://github.com/modiqo/waggle/releases/download/v0.5.2/waggle-cli-x86_64-pc-w

  3. v0.5.1v0.5.1Jul 13, 2026

    ## Install waggle-cli 0.5.1 ### Install prebuilt binaries via shell script ```sh curl --proto '=https' --tlsv1.2 -LsSf https://github.com/modiqo/waggle/releases/download/v0.5.1/waggle-cli-installer.sh | sh ``` ### Install prebuilt binaries via Homebrew ```sh brew install modiqo/tap/waggle-cli ``` ## Download waggle-cli 0.5.1 | File | Platform | Checksum | |--------|----------|----------| | [waggle-cli-aarch64-apple-darwin.tar.xz](https://github.com/modiqo/waggle/releases/download/v0.5.1/waggle-cli-aarch64-apple-darwin.tar.xz) | Apple Silicon macOS | [checksum](https://github.com/modiqo/waggle/releases/download/v0.5.1/waggle-cli-aarch64-apple-darwin.tar.xz.sha256) | | [waggle-cli-x86_64-apple-darwin.tar.xz](https://github.com/modiqo/waggle/releases/download/v0.5.1/waggle-cli-x86_64-apple-darwin.tar.xz) | Intel macOS | [checksum](https://github.com/modiqo/waggle/releases/download/v0.5.1/waggle-cli-x86_64-apple-darwin.tar.xz.sha256) | | [waggle-cli-x86_64-pc-windows-msvc.zip](https://github.com/modiqo/waggle/releases/download/v0.5.1/waggle-cli-x86_64-pc-windows-msvc.zip) | x64 Windows | [checksum](https://github.com/modiqo/waggle/releases/download/v0.5.1/waggle-cli-x86_64-pc-w

  4. v0.5.0v0.5.0Jul 13, 20263 downloads

    ## Install waggle-cli 0.5.0 ### Install prebuilt binaries via shell script ```sh curl --proto '=https' --tlsv1.2 -LsSf https://github.com/modiqo/waggle/releases/download/v0.5.0/waggle-cli-installer.sh | sh ``` ### Install prebuilt binaries via Homebrew ```sh brew install modiqo/tap/waggle-cli ``` ## Download waggle-cli 0.5.0 | File | Platform | Checksum | |--------|----------|----------| | [waggle-cli-aarch64-apple-darwin.tar.xz](https://github.com/modiqo/waggle/releases/download/v0.5.0/waggle-cli-aarch64-apple-darwin.tar.xz) | Apple Silicon macOS | [checksum](https://github.com/modiqo/waggle/releases/download/v0.5.0/waggle-cli-aarch64-apple-darwin.tar.xz.sha256) | | [waggle-cli-x86_64-apple-darwin.tar.xz](https://github.com/modiqo/waggle/releases/download/v0.5.0/waggle-cli-x86_64-apple-darwin.tar.xz) | Intel macOS | [checksum](https://github.com/modiqo/waggle/releases/download/v0.5.0/waggle-cli-x86_64-apple-darwin.tar.xz.sha256) | | [waggle-cli-x86_64-pc-windows-msvc.zip](https://github.com/modiqo/waggle/releases/download/v0.5.0/waggle-cli-x86_64-pc-windows-msvc.zip) | x64 Windows | [checksum](https://github.com/modiqo/waggle/releases/download/v0.5.0/waggle-cli-x86_64-pc-w

  5. v0.4.0v0.4.0Jul 11, 20262 downloads

    ## Install waggle-cli 0.4.0 ### Install prebuilt binaries via shell script ```sh curl --proto '=https' --tlsv1.2 -LsSf https://github.com/modiqo/waggle/releases/download/v0.4.0/waggle-cli-installer.sh | sh ``` ### Install prebuilt binaries via Homebrew ```sh brew install modiqo/homebrew-tap/waggle-cli ``` ## Download waggle-cli 0.4.0 | File | Platform | Checksum | |--------|----------|----------| | [waggle-cli-aarch64-apple-darwin.tar.xz](https://github.com/modiqo/waggle/releases/download/v0.4.0/waggle-cli-aarch64-apple-darwin.tar.xz) | Apple Silicon macOS | [checksum](https://github.com/modiqo/waggle/releases/download/v0.4.0/waggle-cli-aarch64-apple-darwin.tar.xz.sha256) | | [waggle-cli-x86_64-apple-darwin.tar.xz](https://github.com/modiqo/waggle/releases/download/v0.4.0/waggle-cli-x86_64-apple-darwin.tar.xz) | Intel macOS | [checksum](https://github.com/modiqo/waggle/releases/download/v0.4.0/waggle-cli-x86_64-apple-darwin.tar.xz.sha256) | | [waggle-cli-x86_64-pc-windows-msvc.zip](https://github.com/modiqo/waggle/releases/download/v0.4.0/waggle-cli-x86_64-pc-windows-msvc.zip) | x64 Windows | [checksum](https://github.com/modiqo/waggle/releases/download/v0.4.0/waggle-cli-x8

Code frequency

additions and deletions
+108.9K-108.9KWeek of 2026-07-05: +103,853 linesWeek of 2026-07-05: -5,444 linesWeek of 2026-07-12: +108,929 linesWeek of 2026-07-12: -2,275 linesWeek of 2026-07-19: +6 linesWeek of 2026-07-19: -0 linesWeek of 2026-07-26: +0 linesWeek of 2026-07-26: -0 linesWeek of 2026-08-02: +0 linesWeek of 2026-08-02: -0 linesJul 5, 2026Aug 2, 2026
+212.8K lines added, -7.7K removed over the last year.

Commits per week

last 52 weeks
1210Week of 2025-08-10: 0 commitsWeek of 2025-08-17: 0 commitsWeek of 2025-08-24: 0 commitsWeek of 2025-08-31: 0 commitsWeek of 2025-09-07: 0 commitsWeek of 2025-09-14: 0 commitsWeek of 2025-09-21: 0 commitsWeek of 2025-09-28: 0 commitsWeek of 2025-10-05: 0 commitsWeek of 2025-10-12: 0 commitsWeek of 2025-10-19: 0 commitsWeek of 2025-10-26: 0 commitsWeek of 2025-11-02: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 0 commitsWeek of 2026-01-11: 0 commitsWeek of 2026-01-18: 0 commitsWeek of 2026-01-25: 0 commitsWeek of 2026-02-01: 0 commitsWeek of 2026-02-08: 0 commitsWeek of 2026-02-15: 0 commitsWeek of 2026-02-22: 0 commitsWeek of 2026-03-01: 0 commitsWeek of 2026-03-08: 0 commitsWeek of 2026-03-15: 0 commitsWeek of 2026-03-22: 0 commitsWeek of 2026-03-29: 0 commitsWeek of 2026-04-05: 0 commitsWeek of 2026-04-12: 0 commitsWeek of 2026-04-19: 0 commitsWeek of 2026-04-26: 0 commitsWeek of 2026-05-03: 0 commitsWeek of 2026-05-10: 0 commitsWeek of 2026-05-17: 0 commitsWeek of 2026-05-24: 0 commitsWeek of 2026-05-31: 0 commitsWeek of 2026-06-07: 0 commitsWeek of 2026-06-14: 0 commitsWeek of 2026-06-21: 0 commitsWeek of 2026-06-28: 0 commitsWeek of 2026-07-05: 121 commitsWeek of 2026-07-12: 50 commitsWeek of 2026-07-19: 1 commitsWeek of 2026-07-26: 0 commitsWeek of 2026-08-02: 0 commitsAug 10, 2025Aug 2, 2026
172 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 2 commitsSun 1:00 — 0 commitsSun 2:00 — 0 commitsSun 3:00 — 0 commitsSun 4:00 — 0 commitsSun 5:00 — 0 commitsSun 6:00 — 0 commitsSun 7:00 — 2 commitsSun 8:00 — 0 commitsSun 9:00 — 0 commitsSun 10:00 — 2 commitsSun 11:00 — 3 commitsSun 12:00 — 0 commitsSun 13:00 — 1 commitsSun 14:00 — 0 commitsSun 15:00 — 0 commitsSun 16:00 — 2 commitsSun 17:00 — 4 commitsSun 18:00 — 1 commitsSun 19:00 — 2 commitsSun 20:00 — 1 commitsSun 21:00 — 0 commitsSun 22:00 — 0 commitsSun 23:00 — 0 commitsMon 0:00 — 0 commitsMon 1:00 — 0 commitsMon 2:00 — 0 commitsMon 3:00 — 0 commitsMon 4:00 — 0 commitsMon 5:00 — 0 commitsMon 6:00 — 0 commitsMon 7:00 — 2 commitsMon 8:00 — 4 commitsMon 9:00 — 2 commitsMon 10:00 — 0 commitsMon 11:00 — 2 commitsMon 12:00 — 3 commitsMon 13:00 — 1 commitsMon 14:00 — 1 commitsMon 15:00 — 6 commitsMon 16:00 — 6 commitsMon 17:00 — 0 commitsMon 18:00 — 0 commitsMon 19:00 — 1 commitsMon 20:00 — 2 commitsMon 21:00 — 0 commitsMon 22:00 — 0 commitsMon 23:00 — 0 commitsTue 0:00 — 0 commitsTue 1:00 — 0 commitsTue 2:00 — 0 commitsTue 3:00 — 0 commitsTue 4:00 — 0 commitsTue 5:00 — 0 commitsTue 6:00 — 0 commitsTue 7:00 — 1 commitsTue 8:00 — 0 commitsTue 9:00 — 0 commitsTue 10:00 — 0 commitsTue 11:00 — 0 commitsTue 12:00 — 0 commitsTue 13:00 — 0 commitsTue 14:00 — 0 commitsTue 15:00 — 0 commitsTue 16:00 — 0 commitsTue 17:00 — 0 commitsTue 18:00 — 0 commitsTue 19:00 — 0 commitsTue 20:00 — 0 commitsTue 21:00 — 3 commitsTue 22:00 — 7 commitsTue 23:00 — 8 commitsWed 0:00 — 5 commitsWed 1:00 — 2 commitsWed 2:00 — 0 commitsWed 3:00 — 0 commitsWed 4:00 — 0 commitsWed 5:00 — 0 commitsWed 6:00 — 4 commitsWed 7:00 — 8 commitsWed 8:00 — 0 commitsWed 9:00 — 2 commitsWed 10:00 — 8 commitsWed 11:00 — 3 commitsWed 12:00 — 0 commitsWed 13:00 — 2 commitsWed 14:00 — 2 commitsWed 15:00 — 6 commitsWed 16:00 — 0 commitsWed 17:00 — 4 commitsWed 18:00 — 4 commitsWed 19:00 — 0 commitsWed 20:00 — 0 commitsWed 21:00 — 3 commitsWed 22:00 — 3 commitsWed 23:00 — 0 commitsThu 0:00 — 0 commitsThu 1:00 — 0 commitsThu 2:00 — 0 commitsThu 3:00 — 0 commitsThu 4:00 — 0 commitsThu 5:00 — 0 commitsThu 6:00 — 1 commitsThu 7:00 — 1 commitsThu 8:00 — 0 commitsThu 9:00 — 0 commitsThu 10:00 — 5 commitsThu 11:00 — 2 commitsThu 12:00 — 2 commitsThu 13:00 — 0 commitsThu 14:00 — 0 commitsThu 15:00 — 0 commitsThu 16:00 — 0 commitsThu 17:00 — 0 commitsThu 18:00 — 0 commitsThu 19:00 — 0 commitsThu 20:00 — 0 commitsThu 21:00 — 0 commitsThu 22:00 — 0 commitsThu 23:00 — 0 commitsFri 0:00 — 0 commitsFri 1:00 — 0 commitsFri 2:00 — 0 commitsFri 3:00 — 0 commitsFri 4:00 — 0 commitsFri 5:00 — 0 commitsFri 6:00 — 0 commitsFri 7:00 — 0 commitsFri 8:00 — 0 commitsFri 9:00 — 0 commitsFri 10:00 — 0 commitsFri 11:00 — 0 commitsFri 12:00 — 0 commitsFri 13:00 — 0 commitsFri 14:00 — 0 commitsFri 15:00 — 0 commitsFri 16:00 — 0 commitsFri 17:00 — 0 commitsFri 18:00 — 0 commitsFri 19:00 — 0 commitsFri 20:00 — 0 commitsFri 21:00 — 0 commitsFri 22:00 — 0 commitsFri 23:00 — 2 commitsSat 0:00 — 3 commitsSat 1:00 — 6 commitsSat 2:00 — 1 commitsSat 3:00 — 0 commitsSat 4:00 — 0 commitsSat 5:00 — 0 commitsSat 6:00 — 0 commitsSat 7:00 — 0 commitsSat 8:00 — 0 commitsSat 9:00 — 2 commitsSat 10:00 — 3 commitsSat 11:00 — 2 commitsSat 12:00 — 2 commitsSat 13:00 — 6 commitsSat 14:00 — 3 commitsSat 15:00 — 1 commitsSat 16:00 — 1 commitsSat 17:00 — 1 commitsSat 18:00 — 0 commitsSat 19:00 — 0 commitsSat 20:00 — 1 commitsSat 21:00 — 2 commitsSat 22:00 — 0 commitsSat 23:00 — 0 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
Jul 14, 2026daily#17+5
  • affaan-m/ECC

    The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

    238.5K stars · JavaScript

  • affaan-m/ECC

    The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

    234.7K stars · JavaScript

  • NousResearch/hermes-agent

    The agent that grows with you

    227K stars · Python

  • ultraworkers/claw-code

    An agent-managed museum exhibit, built in Rust with Gajae-Code / LazyCodex — developed and maintained with no human intervention.

    195K stars · Rust

  • ultraworkers/claw-code

    An agent-managed museum exhibit, built in Rust with Gajae-Code / LazyCodex — developed and maintained with no human intervention.

    194.9K stars · Rust

  • ultraworkers/claw-code

    An agent-managed museum exhibit, built in Rust with Gajae-Code / LazyCodex — developed and maintained with no human intervention.

    194.9K stars · Rust