every.channel
Find a file
2026-02-18 01:41:42 -08:00
.forgejo/workflows worker: fix assets binding and SPA routes 2026-02-16 17:46:32 -05:00
apps ec-node: wt-publish via moq-transport (draft-07) 2026-02-17 02:00:38 -08:00
crates ec-node: wt-publish custom WebTransport connect with protocol overrides 2026-02-18 01:41:42 -08:00
deploy/cloudflare-worker worker: fix assets binding and SPA routes 2026-02-16 17:46:32 -05:00
docs runner: overlay-root appliance mode 2026-02-17 02:26:09 -08:00
evolution/proposals ec-node: wt-publish custom WebTransport connect with protocol overrides 2026-02-18 01:41:42 -08:00
nix nixos: disable moq-native websocket fallback for wt-publish 2026-02-18 00:55:24 -08:00
scripts ci: switch deploy secrets to age key workflow 2026-02-16 00:59:52 -05:00
secrets ci: switch deploy secrets to age key workflow 2026-02-16 00:59:52 -05:00
third_party wt: patch web-transport-proto header interop for Cloudflare relay 2026-02-18 01:28:57 -08:00
.envrc ec-node: WebTransport publish + web hang-watch 2026-02-16 12:54:42 -05:00
.gitignore wt: patch web-transport-proto header interop for Cloudflare relay 2026-02-18 01:28:57 -08:00
AGENTS.md every.channel: sanitized baseline 2026-02-15 16:17:27 -05:00
Cargo.lock ec-node: wt-publish custom WebTransport connect with protocol overrides 2026-02-18 01:41:42 -08:00
Cargo.toml wt: patch web-transport-proto header interop for Cloudflare relay 2026-02-18 01:28:57 -08:00
CONSTITUTION.md every.channel: sanitized baseline 2026-02-15 16:17:27 -05:00
CONTRIBUTORS.md every.channel: sanitized baseline 2026-02-15 16:17:27 -05:00
flake.lock nix: add agenix as flake input 2026-02-15 17:29:20 -05:00
flake.nix runner: overlay-root appliance mode 2026-02-17 02:26:09 -08:00
justfile every.channel: sanitized baseline 2026-02-15 16:17:27 -05:00
LICENSE every.channel: sanitized baseline 2026-02-15 16:17:27 -05:00
README.md ec-node: WebTransport publish + web hang-watch 2026-02-16 12:54:42 -05:00
secrets.nix ci: switch deploy secrets to age key workflow 2026-02-16 00:59:52 -05:00

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:

nix develop

Rust:

cargo build

Runbook:

cat docs/USAGE.md

WebTransport Watch (MoQ)

Publish (node -> Cloudflare relay):

cargo run -p ec-node -- wt-publish \
  --url https://relay.cloudflare.mediaoverquic.com/ \
  --name la-nbc \
  --input http://<hdhr-host>/auto/v4.1

Watch (web):

https://every.channel/watch?url=https%3A%2F%2Frelay.cloudflare.mediaoverquic.com%2F&name=la-nbc

Coverage:

./scripts/coverage.sh

Build static web:

./scripts/build-web.sh

Deploy to Cloudflare Workers (static site):

./scripts/deploy-workers.sh

Remote website E2E (local publisher -> deployed every.channel web):

./scripts/e2e-remote-website-direct.sh

Remote website E2E (public list/signaling -> website selects stream automatically):

./scripts/e2e-remote-website-directory.sh

Tauri viewer (Dioxus + Trunk):

cd apps/tauri/ui
trunk serve --port 1420 --public-url /
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.