Skip to content

Migrate agent-comms onto wire-mesh (transport, identity, discovery substrate) #45

Description

@Mearman

Migrate agent-comms onto wire-mesh as its transport/identity/discovery substrate, replacing its own bespoke TCP mesh — part of ExaDev/wire-mesh#28's wider initiative.

Full design: write-the-cddl-spec-calm-pascal-agent-aagent-comms-migration-e255b45eb2e45172.md.

Scale, stated honestly: 18-24 weeks total for the whole initiative, roughly 2/3 of it here in agent-comms. Tracked as one Epic per phase (P0, P2-P8 below) — P1 is wire-mesh-side work, tracked as ExaDev/wire-mesh#45.

Key decisions

  • Identity: adopt wire-mesh's device-id (SHA-256 of raw public key), delete the ~300-line hand-rolled X.509/ASN.1 certificate builder. Certificate-fingerprint identity is provably unstable (renews near expiry, silently minting a new agent id within a year). Every agent id changes — cutover cannot be in-place.
  • federation.ts (638 lines) retired. wire-mesh's own federation.cddl is a tombstone recording this exact design (reachability conflated with authorisation) was tried and discarded in favour of scoped capability tokens.
  • Discovery kept, not retired — discovery.cddl's DNS-anchored handle resolution and agent-comms' own mDNS/Tailscale beacons solve genuinely different problems, confirmed by reading both.
  • Bridges almost entirely unaffected — all five agent-side bridges couple through an identical four-line block; one shared factory function is the whole bridge migration. Web bridge is the real exception (delete the drifted, untested mesh-worker.ts reducer and the unfinished relay-worker.ts prototype).
  • Rollout: run v2 as a genuinely separate MCP server (distinct port, distinct identity dir) alongside v1 throughout; real work stays on v1 until a deliberate, single-commit flag-day cutover.

Phases (this Epic's sub-issues)

P0 clear the ground → (P1, wire-mesh#45) → P2 substrate swap, opaque payload, first shippable checkpoint → P3 real core/room semantics → P4 presence → P5 history via core/data → P6 federation retirement + discovery retarget + token-minting UX → P7 web bridge → P8 cutover.


All nine sub-issues closed (P0 through P8, plus the identity-store renewal bug found along the way). The full migration of agent-comms onto wire-mesh's transport, identity, and room/capability model is complete: substrate swap, real core/room membership semantics with genuine token revocation across the full lifecycle, presence, history, federation retired in favour of wire-mesh's own connectToRemote, the web bridge's mesh-worker fixed to stop reimplementing a broken client-side merge, and the flag-day cutover itself (already shipped as v2, currently 2.28.0).

Closing this epic.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions