Treat an already-started HLS edge media session as a successful stream.start response so the edge reconciler can race safely with explicit cluster starts.
Add Sender.LocalStreams for IEx and no-Legion local stream operation. The helper composes existing management handlers and can optionally launch a MuonTrap-supervised ffmpeg test-video publisher. Document the public API surface in docs/API.md and cover the helper with tests.
Declare control lanes on Sender topology/state-machine resources now that AshNostrSync defaults new resources to bulk.
Keep endpoint history and snapshots on bulk and add coverage for the Sender lane split.
Keep Sender's default as ffmpeg on PATH, while allowing Guix deployments to inject an exact store ffmpeg path via SENDER_FFMPEG_EXECUTABLE. Remove per-stream executable selection so the runtime has one simple executable resolution model.
Use the current node_info node_pubkey field in the Docker e2e runner and refresh the Nix Mix dependency hash after the muontrap dependency update. Keep edge session reconciliation alive when it runs before the host repo is ready during startup.
Share HLS timing and retention config across origin and edge sessions, pass live-window settings through to ffmpeg, prune edge pull-through segments, and schedule stopped generation spool cleanup. Include the dependency lock refresh present in this worktree.
Persist edge start options that affect source fetching and add a periodic reconciler that restarts missing local HLS edge sessions from synced endpoint and generation state. This lets an edge node resume pull-through service after a reboot without Legion re-pushing the stream setup.
Pass the source TLS verification option from stream lifecycle into the HLS pull-through worker so Legion can disable origin certificate verification during self-signed supertest runs. Cover the default and explicit disabled paths in sender tests.
Use Tribes.RequestInfo for HLS and player event attribution so trusted proxy traffic is served without feeding Sender's internal viewer metric.
Append a stable vsid query parameter to browser HLS playlist URLs, count playlist reloads as viewer sessions in standalone mode, keep IP fallback for plain HLS clients, and update docs plus e2e coverage.
Track active Sender viewers from browser heartbeats and HLS IP fallback, filtering localhost access and exporting a low-cardinality plugin metric for Tribes rollups.
Extend the Docker origin/edge E2E harness with VictoriaMetrics/vmagent scraping and assertions for live /metrics export plus compact rollup storage. Update docs for the host metrics path.
Add the edge-side pull-through startup path and make stream startup tolerant of sources that are not live yet. Keep ffmpeg managed through MuonTrap while adding the options needed by the multi-node flow.
Add a docker-oriented origin/edge E2E scenario that starts both nodes before RTMP ingest and verifies HLS playback from the edge node.
Expose standalone /sender/hls file serving for local spool playback and add the hls_edge media-session mode for tribes_edge endpoints.\n\nThe edge backend mirrors an upstream generation playlist and referenced segments into the local spool, while management lifecycle methods can start, stop, and report hls_edge sessions separately from origin ingest.\n\nVerified with scripts/plugin test, scripts/plugin validate, scripts/plugin precommit, and scripts/plugin smoke.
Collapse endpoint routing around endpoint types and source links, remove the StreamRoute resource and HLS fallback plug, and move generated HLS paths to /sender/hls for Vinyl-backed serving.\n\nUpdate the initial schema, management payloads, docs, and tests to match generation-level renditions and stream generation delivery modes.
Register Sender supervision children through the Tribes plugin spec so the host PluginManager starts the media session, backend, readiness, stats, and snapshot processes in packaged deployments.
Reuse the same child list from Sender.Application and cover the plugin spec with a management test.
Add local streaming counters, telemetry emissions, snapshot publishing into EndpointSnapshot rows, and an optional periodic snapshot worker with tests.
Expose plugin API routes for playback metadata, HLS file serving, and player events. Add a typed Video.js v10 HTML player bootstrap and host-backed API tests.
Add a media backend behaviour, supervised ffmpeg worker, RTMP-to-HLS command builder, stream key helpers, and tests for command construction and worker lifecycle.
Enable the plugin supervision tree, update manifest metadata, switch the planned web player to Video.js v10 beta, and document the streaming architecture/progress plan.