41 lines
1.6 KiB
Markdown
41 lines
1.6 KiB
Markdown
# ECP-0068: Iroh Control To Web Directory Bridge
|
|
|
|
Status: Draft
|
|
|
|
## Decision
|
|
|
|
Add a first-class bridge from iroh control gossip to the public website directory:
|
|
|
|
1. `ec-node control-bridge-web`:
|
|
- subscribes to control announcements on `every.channel/control/v1`,
|
|
- selects relay transports (`relay_url` + `broadcast_name` + `track_name`),
|
|
- upserts them into the website API (`/api/stream-upsert`).
|
|
|
|
2. Extend the Cloudflare Worker API with:
|
|
- `POST /api/stream-upsert` (optional bearer token auth),
|
|
- `GET /api/public-streams` (read-only list for browsers).
|
|
|
|
3. Extend the web watcher UI to render `Live Now` from `/api/public-streams`, with one-click watch.
|
|
|
|
## Motivation
|
|
|
|
The site currently requires manual broadcast names even when streams are already announced over iroh control gossip. This bridge makes `every.channel` discoverable from published control state and gives browser users a single “open site and click watch” flow.
|
|
|
|
## Scope
|
|
|
|
In scope:
|
|
- Control gossip -> web directory bridge command.
|
|
- Worker storage/API for public stream entries.
|
|
- Browser UI list and refresh loop.
|
|
- Control gossip join behavior updated to work without bootstrap peers (`subscribe` without blocking join).
|
|
|
|
Out of scope:
|
|
- Browser-native iroh direct playback.
|
|
- Signed/authenticated control announcements.
|
|
- Replacing relay playback with direct iroh in browsers.
|
|
|
|
## Rollout / Reversibility
|
|
|
|
- Additive change; existing `/api/directory` and watch-by-link behavior remain intact.
|
|
- Bridge can be disabled by stopping `control-bridge-web`.
|
|
- Public listing auth can be tightened by setting `EC_STREAM_UPSERT_TOKEN`.
|