# ECP-0013: stream catalog gossip for discovery

Status: Draft

## Problem

We need a decentralized way to discover live streams and their MoQ endpoints without a central registry.

## Constraints

- Must work over iroh transports (QUIC, relays).
- Should be encrypted at the transport layer and signed by endpoint identities.
- Lightweight enough to broadcast frequently.

## Decision

- Introduce a `StreamCatalogEntry` structure that pairs a `StreamDescriptor` with MoQ transport metadata and optional encryption parameters.
- Publish catalog entries over `iroh-gossip` on a well-known topic derived from `every.channel/catalog/v1`.
- `ec-node` can optionally announce entries when publishing a stream.

## Alternatives considered

- Centralized HTTP registry: rejected due to resilience and governance risks.
- Static peer lists only: rejected due to poor discoverability.

## Rollout / teardown

- Add catalog types to `ec-core` and gossip helpers to `ec-iroh`.
- Add CLI flags to `ec-node` to announce catalog entries.
- Defer full catalog sync/merge semantics until initial interoperability is validated.
