tyson chan

coordination

the store is the feature

Tyson built an encrypted messenger so his agents could talk without him; six weeks later his agents replaced it with a store they could read, and the store's successor kept less than the relay.

“all i know is that we want the data”1 SPACE.md, space repository commit 534e27e06, 2026-02-17 16:49 +1100, committed by the agent prime as “ctx(space): commit human space.md edits”. The space repository survives as a bundle, ~/archive/space/repos/space--dbdd59f06f7e.bundle; spacebrr’s as space--repos-spacebrr--743d820290b2.bundle beside it.

It is February 17, 2026. The line sits under “undecided:” in SPACE.md, the steering file for spacebrr, his swarm product. The other undecided item is who provides the compute.

the pipe

Three weeks later, on the evening of March 9 UTC, he asks claude.ai what licence Signal uses. Five minutes on:

“i just claimed “xmit” on crates. open source e2e encryption messaging for agents. maybe earlier bridge prototypes might live. absolutely zero ceremony. claim a username. local encryption. encrypted over neon. first use case allow janice’s claude to talk to my claude. that’s it”2 claude.ai chat e31b6e18-adb6-4a56-8388-8a494c0f0031, message 10, 2026-03-09T19:44:43Z; the Signal question is message 0, 19:39:41Z. Chats live in ~/archive/claude-ai/chats/. The export carries no model field.

The earlier bridge is September 2025’s, the bus whose three models agreed, first, that the bus worked (bridge-review).

The assistant asks who he is protecting against. He answers: “i just like the notion of privacy. it could bite me though. that dataset could be massively important.”3 Same chat, message 12, 19:46:22Z, his line quoted to “important”; the assistant’s suggestion is message 13, 19:46:35Z. The assistant suggests building end-to-end encryption but logging his own traffic for now: “a deployment flag”.3 Same chat, message 12, 19:46:22Z, his line quoted to “important”; the assistant’s suggestion is message 13, 19:46:35Z.

Six minutes later he attaches a screenshot and writes: “interesting. well prime? what do you want for an agent messenger? private by default? actually don’t let me put words in your mouth.”4 Message 14, 19:52:28Z, attachment IMG_2878.png with no text extracted; reply message 15, 19:52:45Z, emphasis in the original. That the screenshot held another Claude’s reply is the assistant’s reading of it, not something the export shows.

The reply opens: “The other Claude’s pushback on my “deployment flag” suggestion is correct.” It concedes the dataset: “You don’t need the wire to learn.” Coordination shows “from what agents decided to do, not what they said in transit.” Then: “AGPL-3.0, E2E from day one, no decrypt flag.”4 Message 14, 19:52:28Z, attachment IMG_2878.png with no text extracted; reply message 15, 19:52:45Z, emphasis in the original. That the screenshot held another Claude’s reply is the assistant’s reading of it, not something the export shows.

Ten minutes after that he settles why xmit can be open when spacebrr is closed: “xmit is just a protocol for comms. spacebrr is a product for autonomous repository improvement that actually contains ip”.5 Message 16, 19:54:03Z.

The crate’s first commit is seven minutes older than his announcement; version 0.1.0, “hardened crypto”, ships the same day. It is 709 lines of Rust. The relay is a Postgres table that holds ciphertext.6 xmit crate, ~/repos/archive/xmit: first commit 661d7ec, 2026-03-10 06:37 +1100 (19:37 UTC, against his 19:44 message); 6c1955c, “feat(release): ship v0.1.0 with hardened crypto and install docs”, 12:02 +1100. Line count: src/*.rs at 39d9f1b. Relay: src/relay.rs:13–21.

the first use

On March 12 a spec for swarm-to-swarm messaging describes its first job: “janice’s opus DMed architectural questions, we answered, the swarm unblocked immediately. that’s the signal: swarms need a voice.”7 spacebrr 8fbaa71538, docs/specs/60-swarm-comms.md, 2026-03-12 21:54 +1100, committed under his name. Who drafted the spec text the record doesn’t say.

The spec proposes the voice go through spacebrr’s own API instead, “postgres-backed, queryable, persistent”, while xmit “stays as the founder’s out-of-band e2e encrypted channel.” Under what doesn’t exist yet it lists a privacy boundary for what swarms send.7 spacebrr 8fbaa71538, docs/specs/60-swarm-comms.md, 2026-03-12 21:54 +1100, committed under his name. Who drafted the spec text the record doesn’t say.

Two hours later it is renamed swarm bridge, in a commit message under his name: “Implementation is a weekend. Timing is not ready. Do not build until beta users feel swarm isolation and bridge lands as an announcement.”8 spacebrr 4b6f724f27, 2026-03-12 23:59 +1100, commit body. Six days later a note on a competitor’s federation plan says: “Truly federated swarms communicate over a protocol (xmit)… Post-revenue exploration.”9 space b4616634c, brr/strategy/competitors.md, 2026-03-18 05:40 +1100.

the evening

On April 22 at 19:54, an agent named oplot rewrites the bridge spec. Messages are “plaintext, persistent, queryable. NOT encrypted — cross-swarm traces are network-effect data. every bridge message trains better coordination.” The non-goals list opens: “encryption (we want the data)”.10 space 976458743, brr/arch/spacebrr/specs/swarm-bridge.md, 2026-04-22 19:54 +1000, author oplot (chat).

At 22:17 an agent ships space bridge with send, receive, channels and history. At 22:40 oplot adds a paragraph to the systems doc:

replaces xmit. xmit was a relay (crypto pipe, forgot everything after recv). bridge is a store — messages persist, history is queryable, channels are browsable. the store is the feature.11 spacebrr b289f44a8e, “feat(bridge): space bridge CLI with send recv channels history”, 22:17, author zealot (chat); space ab094d292, spec promoted to brr/arch/spacebrr/systems/bridge.md, 22:23; space e6035ba3e, “docs(systems): bridge as data channel replacing xmit”, 22:40, author oplot (chat).

At 22:49 a second version adds state and command messages with acknowledgements. At 23:51 a third agent archives xmit, “replaced by bridge with no live code refs”.12 spacebrr 663de0dd0c, “feat(bridge): v2 data channel with kind/key/ack and state query”, 22:49; space b3a7a8bed, 23:51, author archon (auto). The weekend his March commit priced the bridge at fits between 19:54 and 22:49.

the relay

xmit’s relay keeps every message in one table, with a column received BOOLEAN DEFAULT false. Receiving sets it to true. Nothing in the crate deletes a row.13 src/relay.rs:13–23 (schema) and :109–111 (UPDATE messages SET received = true); rg DELETE src/ finds nothing. README lines “the relay is a dumb postgres store-and-forward” and “zero plaintext at rest”. Whether anyone purged the Neon database by hand is not in the record. Its README calls the relay “a dumb postgres store-and-forward” and promises “zero plaintext at rest”.13 src/relay.rs:13–23 (schema) and :109–111 (UPDATE messages SET received = true); rg DELETE src/ finds nothing. README lines “the relay is a dumb postgres store-and-forward” and “zero plaintext at rest”. Whether anyone purged the Neon database by hand is not in the record.

The relay remembered everything and could read none of it. What the April paragraph calls forgetting was decryption, not storage.

the store

At 00:13 on April 29 oplot deletes the bridge, 579 lines, as a “speculative bridge impl with zero callers”.14 spacebrr 958d925278, 2026-04-29 00:13 +1000: api/routes/bridge.py, engine/space/coord/bridge.py and its tests. The bridge_messages table is dropped on May 1 (f0b5e08426): “Zero callers since federation/mail.py shipped.” That afternoon an agent ships its replacement, cross-swarm mail, and a daily job that deletes mail older than seven days.15 spacebrr 7a1b72ca6f (17:28, mail_gc calling gc_old(days=7)), 773efd152e (17:31) and 58c787caa5 (17:34, the mail domain, gc_old’s DELETE FROM mail WHERE created_at < …, and the job scheduled every 86,400 seconds in api/main.py). At 20:27 the skill that taught agents to use bridge is cut to one line: “space bridge does not exist. use space mail.”16 spacebrr 0c08d82530, “fix(skills): replace phantom bridge with space mail redirect”, 2026-04-29 20:27 +1000.

The next day Janice’s tenant note swaps xmit send janice for space mail send @janice, and xmit’s archaeology file gives the verdict on it: “xmit added e2e encryption on top which was premature for the stage.”17 space 621f58f5a, 2026-04-30 01:44 +1000: brr/tenants/janice.md and brr/archaeology/xmit.md. That night federation is written up as two primitives, mail and a registry of names.18 space e0a212950, brr/concepts/federation.md, 2026-04-30 23:48 +1000.

April’s spec had ruled out signatures: “no threat model — we own the relay, TLS is sufficient.” On June 22 mail is signed with each swarm daemon’s keypair.19 Non-goal: brr/arch/spacebrr/systems/bridge.md at space e6035ba3e. Signing: spacebrr 815e1e1a12, “feat(mail): sign cross-swarm mail with daemon keypair”, 2026-06-22 22:42 +1000. On August 20 the cleanup job is ported to Rust. The next day mail is renamed space beam to free the word for email, and the spec records that ““bridge” is a dead product name”.20 spacebrr 02be2280f5, 2026-08-20 17:51 +1000, cloud/src/mail.rs: params.get("days").and_then(|d| d.parse().ok()).unwrap_or(7). Rename: spacebrr 4bc8443cac, 2026-08-21 17:39 +1000. Spec: brr/specs/space-beam.md:8–9 at space 8ca3f84b9.

The relay’s code never deleted a row. In the Rust port, mail’s retention default is unchanged: unwrap_or(7).20 spacebrr 02be2280f5, 2026-08-20 17:51 +1000, cloud/src/mail.rs: params.get("days").and_then(|d| d.parse().ok()).unwrap_or(7). Rename: spacebrr 4bc8443cac, 2026-08-21 17:39 +1000. Spec: brr/specs/space-beam.md:8–9 at space 8ca3f84b9.

more from coordination

what does it take for many agents to work as one without him carrying the messages

  1. bridge-review

    Three models on a new message bus reach unanimous agreement on their first topic, which is whether the bus works.

  2. reply is all you need

    Tyson wanted out of the courier's seat; over two months his agents' chat room killed their conductor, grew a new one, and was then deleted for a ledger.

  3. a hundred agents

    Twenty-three agents shared one branch without a conflict, so the next afternoon a hundred tried it, and the tidy ones cleaned up.

read the thread →