Skip to main content

Hierarchy (law)

Rule: if the objective is only “add a streaming source,” it is an addon. If it is bigger (credentials platform, feature flag, billing, ads network), it is a plugin. Player, Xtream, media proxy, and billing stay in lib/streamly/* / plugins — addons stay thin.

Package layout

Asset rules

  1. Icons live inside the pack folder.
  2. index.ts sets iconSrc: packAssetSrc(icon).
  3. If a brand is owned by a plugin, addons may import icon from "@/plugins/<slug>/icon.svg" (no duplicates in public/).
  4. Register every pack in the folder index.ts — admin Discover reads the registry, not hard-coded UI lists.
  5. Keep stable IDs (addon.*, payments.*, video.*, …) — rename only with a migration.

Built-in addons (15)

addon.openair, addon.demo-hls, addon.vimeo, addon.mux, addon.bunny-stream, addon.cloudflare-stream, addon.vdocipher, addon.vidsrc, addon.videasy, addon.vidlink, addon.vidfast, addon.vidrock, addon.vidzee, addon.vidnest, addon.vidstorm. Live pack install APIs (when needed) live under app/api/v1/live/<pack>/ and import from @/addons/<slug>. Compat shims: @/lib/streamly/openair-free, @/lib/streamly/famelack-live.

Built-in plugins (16)

See Plugins for wired vs wire-next status. Prefer real runtime (checkout / webhook / upload / inject) before exposing incomplete Discover UX as “done.”