Skip to main content

Hierarchy

Buyer-facing docs with keys + vendor URLs:

Discover filter

listDiscoverableAddonPackages() excludes any addon linked by videoPluginIdForAddon(): Sync implementation: lib/streamly/video-plugin-addon-sync.ts (called from plugin enable/update API routes). Enabling a video plugin idempotently creates/re-enables the stream_providers row and seeds public config (pull zone / customer subdomain, etc.).

Video ingest & webhooks

  • Upload UIs stay on the vendor (Mux / Bunny / CF Stream / VdoCipher).
  • Catalog attach is manual (Playback ID / GUID / UID / video id).
  • Webhooks acknowledge (and verify secrets when configured); they do not auto-create catalog sources.

Ship catalogs

  • Plugins (16): payments (3), R2, video (4) + Live TV, ads (AdSense + Adsterra), analytics (3), email (2).
  • Addons (15 registered): 4 plugin-owned + Discover (Demo HLS, Vimeo, OpenAir, 8 TMDB embeds).
Removed from ship set: video.drm (EZDRM), ads.google_ad_manager.

Theme ad slots

Defined in lib/streamly/ad-slots.ts, resolved via lib/streamly/plugin-ads.ts, mounted by theme AdSlot components. Master enable + provider in Settings → Ads (ads_enabled, ads_provider).