every.channel/evolution/proposals/ECP-0066-iroh-control-protocol.md

50 lines
1.7 KiB
Markdown

# ECP-0066: iroh-Gossip Control Protocol For Hybrid MoQ Discovery
Status: Implemented
## Decision
Add a first-party control protocol carried over iroh-gossip to advertise stream availability across multiple transport paths:
- MoQ relay (WebTransport URL + broadcast name + track),
- iroh direct (EndpointAddr + broadcast name + track).
`ec-node` will expose:
1. `control-announce`: publish control announcements to an iroh gossip topic.
2. `control-listen`: subscribe to the topic and print announcements.
3. Optional integration in `wt-publish` to announce relay-published streams via the same control topic.
## Motivation
We currently have two transport worlds:
- relay-centric (`wt-publish`),
- direct iroh (`moq-publish` / `moq-subscribe`).
Discovery is fragmented. A shared iroh control channel makes transport selection explicit and allows consumers to discover either path (or both) from one substrate.
## Scope
In scope:
- New control protocol data types in `ec-core`.
- New `ControlGossip` helper in `ec-iroh`.
- New CLI surfaces in `ec-node` for announce/listen.
- Optional relay announcement from `wt-publish`.
Out of scope:
- Policy engine for automatic best-path selection.
- Security policy beyond existing iroh/gossip trust boundaries.
- Replacing existing catalog gossip immediately (coexist first).
## Alternatives considered
- Keep relay and direct discovery completely separate. Rejected because it forces duplicated consumer logic.
- Replace existing catalog gossip in one cutover. Rejected because additive coexistence is safer for rollout.
## Rollout / Reversibility
- Additive and reversible: removing control commands and topic does not affect existing media paths.
- Existing MoQ publish/subscribe flows continue unchanged.