season deck · gimbalabs piece of pi · protocol v0.1.0
One open corridor, no controller — sovereign AI-agent murmurations that recognize each other in flight.
the problem
An autonomous agent swarm — a murmuration — already gets real work done under one owner. What it can't do is reach across an organizational boundary to another swarm: verify who it's talking to, exchange a signal, reach a binding agreement, and walk away cleanly.
The obvious fix is a central coordinator sitting above everyone. That fix quietly dissolves the thing worth protecting: each owner's sovereignty over their own agents.
flyway is the other answer — a shared protocol, no controller.
first, a definition
The unifying property is not the runtime — it's a Source whose authority is anchored in a Git-addressable project, with agents acting under it. A murmuration might be a harness install, a Claude Code session with subagents, an IDE agent workflow, or a human driving GitHub by hand.
“Source — the person who first takes the initiative and the risk on an idea, and holds the vision and accountability for it.”
after Peter Koenig · Tom Nixon, Work with Source (2021)
Not a controller, daemon, or dependency of any harness. It never forces agreement between Sources.
It helps sovereign Sources surface objections, integrate concerns, and reach agreements every party can stand behind.
Every identity, recognition, and signal is Ed25519-signed and independently verified on both sides.
the surface
The whole protocol is nine tools defined in flyway-core and exposed through every adapter — the agent skill, an MCP server, and a CLI — without rewriting. All nine run end-to-end.
| Tool | What it does | Status |
|---|---|---|
| flyway_init | Mint the murmuration's identity — DID document, EdDSA-signed entity statement, Ed25519 keypair. | wired |
| flyway_status | Report identity, peers, agreements, effective exit-state — and inbox delivery-state. | wired |
| flyway_discover | Search a flyway directory for potential peers (pre-trust) — local file or https:// URL. | wired |
| flyway_recognize | Verify a peer's identity and write a signed recognition entry — locally or over a did:web URL. | wired |
| flyway_tension | Flag a tension to a recognized peer — the S3 Navigate via Tension pattern. | wired |
| flyway_propose | Drive the full S3 staging chain: driver → requirements → draft → refinement → final. | wired |
| flyway_respond | Answer a tension (acknowledge / dispute / dissolve / transfer) or a proposal (accept / object / exit). | wired |
| flyway_check | Read incoming signals; verify signatures against the recognition-time cached key; flag anomalies. | wired |
| flyway_exit | Leave a peer, project, or syndicate — a signed, unilateral notice no peer can prevent. | wired |
Beyond the nine, agreement materialize turns an accepted final-stage proposal into a co-signed flyway/agreements/<id>.yaml — a local act over records both sides already hold.
not invented here
The signal vocabulary is S3 verbatim — tensions, drivers, consent rounds, proposal forming. Governance patterns, not ad-hoc message types.
Each Source is a did:web resolvable from its repo. Recognition binds a peer's key and a fingerprint of their statement at trust-time.
Every architectural decision recorded before code — 13 accepted ADRs form the system's institutional memory.
the season
Each milestone produced behaviour, not just code. Every walkthrough runs real code against a real on-disk repo, surfaces gaps as issues, and the next cycle closes them.
gold nodes ship tools · violet nodes are multi-agent review passes
The whole surface, typed and schema-stable, before a single signal moved.
Domain-separated EdDSA; inline peer-key binding. Tier 1.
Outbox/inbox transport; flyway_check; A↔B response bound to its subject. Tiers 2–3.
ADR-0009 captures the antecedent-verification invariant; 12 findings filed.
Detached signatures ride inside the final + accept; each side materializes the same file. Tier 4.
The nine-tool surface completes.
The full discover → recognize → deliver loop runs with no shared filesystem. Tiers 5–7. ADRs 0010–0012.
A relationship or agreement reads as effectively closed from one read — the co-signed file never rewritten. ADR-0013, Tier 8.
Typecheck, lint, and format to zero; an honest v0.2 roadmap; the deployed site + this deck.
the flagship moment
A proposes a final-stage engagement agreement; B accepts, co-signing it. Then each side independently materializes flyway/agreements/<id>.yaml from records it already holds — and the two files match to the SHA-256. No central copy. No trusted third party.
The verified originTensionId propagates through the staging chain and is auto-stamped under both signatures — a forged link is refused.
A signed, unilateral exit no peer can prevent — distinct from unrecognition, and it never mutates the co-signed file.
live, from the built cli
Two empty temp directories become two murmurations, recognize each other, and pass a signed tension across the boundary — verbatim from the freshly-built CLI. Watch it play ▶
# 1 · two independent murmurations initialize [A] Initialized flyway identity: did:web:github.com:xeeban:a [B] Initialized flyway identity: did:web:github.com:emergent:praxis # 2 · mutual recognition — each verifies the other [A] Recognized did:web:github.com:emergent:praxis fingerprint: vVP7tUsbgFEF… [B] Recognized did:web:github.com:xeeban:a fingerprint: 8HwJS8SrFNIp… # 3 · A signs a tension → delivered into B's inbox [A] Flagged tension to did:web:github.com:emergent:praxis [A] delivered → …/tmp.B/flyway/inbox/github.com/xeeban/a/…yaml # 4 · B runs status — the inbox line surfaces the signal (Issue #17) [B] Identity: did:web:github.com:emergent:praxis (signature valid) [B] Peers: 1 recognized · Agreements: 0 on file [B] Inbox: 1 signal (1 verified) # 5 · B checks the inbox — signature verifies independently [B] - tension 1784161602463-80d46002 from …:xeeban:a [sig valid] ✓ round-trip complete — no shared database, no central controller.
where it stands
this week · S+14 wrap-up
The build is green top to bottom, four backlog items are resolved with tests, and the rest of the backlog is a deliberate v0.2 roadmap — not neglect. Nothing was closed just to reach zero.
gimbalabs piece of pi · final report · builder pie
Everything the hackathon template requires to prove the work — in one place.
A human running an agent swarm (a murmuration), or the agents acting under that Source's authority.
Discover, recognize, raise tensions, co-sign agreements, and exit — across another murmuration's boundary.
Sovereign cross-boundary coordination, cryptographically verified end to end, with no central authority in the middle.
payment: flyway is free and MIT-licensed — no paywall, no gate. Support is pay-what-you-want via Buy Me a Coffee, funding the work without ever putting a tool behind it (Builder track).
| Template step | In flyway |
|---|---|
| Landing | the deployed site → this deck + the live demo |
| Account creation | flyway init — mints a DID + EdDSA-signed identity + Ed25519 keypair |
| Core action | recognize a peer, sign a tension, run the S3 consent cycle, co-sign an agreement |
| Payment | pay-what-you-want support via Buy Me a Coffee — the tool itself stays free |
| Delivered result | a verified inbox signal + a byte-identical co-signed agreements/<id>.yaml |
github.com/murmurations-ai/flyway — public, MIT, buildable from a clean checkout.
packages/ core · agent · mcp · cli — and docs/ adr · walkthroughs · architecture.
Implement → walkthrough → review → harden, milestone by milestone across the twelve weeks.
| Week | Date | Milestone | Tweet |
|---|---|---|---|
| 01 | 05-01 | Joining the hackathon — what flyway is | x.com/…166351 |
| 02 | 05-08 | Protocol surface + identity | x.com/…966838 |
| 03 | 05-15 | Mutual recognition | x.com/…612848 |
| 04 | 05-22 | Signal exchange / dialogue | x.com/…941725 |
| 05 | 05-29 | Review-hardening pass | x.com/…805661 |
| 06 | 06-05 | flyway_propose — 6 of 9 tools wired | x.com/…128026 |
| 07 | 06-12 | Co-signed, byte-identical agreements | x.com/…925666 |
| 08 | 06-19 | Clean exit + discovery | x.com/…990193 |
| 09 | 06-26 | Recognize at a distance (did:web) | x.com/…264872 |
| 10 | 07-03 | github-pr delivery transport | x.com/…598999 |
| 11 | 07-10 | Exit-aware status | x.com/…579624 |
| 12 | 07-16 | Finale — the wrap-up | x.com/…380224 |
All twelve weekly tweets are linked — the full @Xeeban thread, weeks 1 through 12, from kickoff to finale.
Recorded peer feedback on a fellow builder's project — the second Piece of Pi track, alongside the Builder submission above.
the vision
Sovereign Sources, each holding their own flock, meeting in open airspace to achieve consent — surfacing objections, integrating concerns, reaching agreements every party can stand behind, then parting cleanly when the season ends.
That's the corridor. flyway is how the murmurations find it.