# every.channel A global, disaggregated mesh of relays that turns local ATSC antennas into a coherent, worldwide stream. The stack is Rust-first, MoQ-native, and designed for deterministic chunking so identical broadcasts yield identical data. ## Goals - Free, global access to broadcast TV through user-run relays. - Deterministic encoding and chunking to make availability a coordination problem. - Clean layering: capture -> transcode -> MoQ publish -> relay -> client playback. - Cross-platform clients: Tauri app, CLI, and a static web UI. ## Repository layout - `crates/ec-core`: shared types and determinism profiles. - `crates/ec-hdhomerun`: HDHomeRun discovery and lineup scaffolding. - `crates/ec-linux-iptv`: Linux DVB ingest scaffolding. - `crates/ec-iroh`: iroh transport scaffolding. - `crates/ec-crypto`: stream key derivation helpers. - `crates/ec-ts`: MPEG-TS timing and table parsing. - `crates/ec-chopper`: deterministic ffmpeg chunking scaffolding. - `crates/ec-moq`: MoQ data model and relay scaffolding. - `crates/ec-node`: node runner (ingest + publish). - `crates/ec-cli`: CLI for discovery and node control. - `apps/tauri`: desktop client shell. - `apps/tauri/ui`: Dioxus web frontend embedded in the Tauri app. - `docs/USAGE.md`: runbook for viewer and ingest pipelines. - `docs/IROH_EXAMPLES.md`: summary of iroh repos/examples used for design. - `docs/`: architecture, roadmap, and MoQ notes. ## Development Nix: ```sh nix develop ``` Rust: ```sh cargo build ``` Runbook: ```sh cat docs/USAGE.md ``` ## WebTransport Watch (MoQ) Publish (node -> Cloudflare relay): ```sh cargo run -p ec-node -- wt-publish \ --url https://cdn.moq.dev/anon \ --name la-nbc \ --input http:///auto/v4.1 ``` Watch (web): ```txt https://every.channel/watch?url=https%3A%2F%2Fcdn.moq.dev%2Fanon&name=la-nbc ``` Control protocol (iroh gossip, relay + direct transport discovery): ```sh # Listener (on node A) cargo run -p ec-node -- control-listen --gossip-peer # Announcer (on node B) cargo run -p ec-node -- control-announce \ --stream-id la-nbc \ --relay-url https://cdn.moq.dev/anon \ --relay-broadcast la-nbc \ --gossip-peer # Resolver (consumer picks best announced path) cargo run -p ec-node -- control-resolve \ --stream-id la-nbc \ --prefer direct-first \ --gossip-peer ``` Coverage: ```sh ./scripts/coverage.sh ``` Build static web: ```sh ./scripts/build-web.sh ``` Deploy to Cloudflare Workers (static site): ```sh ./scripts/deploy-workers.sh ``` Remote website E2E (local publisher -> deployed every.channel web): ```sh ./scripts/e2e-remote-website-direct.sh ``` Remote website E2E (public list/signaling -> website selects stream automatically): ```sh ./scripts/e2e-remote-website-directory.sh ``` Tauri viewer (Dioxus + Trunk): ```sh cd apps/tauri/ui trunk serve --port 1420 --public-url / ``` ```sh cd ../ cargo run ``` ## Status This repository is intentionally minimal. It captures the initial architecture and scaffold for a MoQ-first network and will expand as proposals are accepted.