ChannelHelm DocsDocs indexChannel endpointsChannelsApp
Distribution

RTMP push and CTV app targets.

ChannelHelm treats connected-TV delivery as a channel target, not as a social dispatch. CTV targets point at the compiled channel state used by the embed player and playlist route.

Player: /embed/{brand_slug}

Playlist: /api/embed/{brand_slug}/playlist.m3u8

RTMP targets

The /channels page stores endpoint URL and encrypted stream key in restream_targets, then enqueues restream_push:{target_id}:{requested_at_ms}. The worker builds a concat playlist from rendered programming rows and runs ffmpeg through workers/integrations/restream.ts.

For smoke tests, set a finite duration in the UI seconds field or RESTREAM_PUSH_SECONDS. Without a finite duration, the worker is expected to run as a long-lived push until stopped.

CTV targets

  1. Compile channel programming through channel_compile.
  2. Expose the playlist through /api/embed/{brand_slug}/playlist.m3u8.
  3. Wrap the playlist in Roku Direct Publisher, a custom Roku SceneGraph app, or a tvOS app.
  4. Host the local ChannelHelm route through the existing tunnel/media host.

Isolation rule

RTMP failures update only restream_targets.status, last_error, and the restream_push job. They must not mutate package approval, asset dispatch, or published social state.