Bring Channels From Any External Source, In Minutes

Building a channel lineup from scratch is slow, and repeating the work every time you add a new upstream is painful. Stream Providers let you plug an external M3U or Xtream Codes feed into your panel and pull its channels into your catalog automatically. The panel maps remote categories to your own, cleans up names, and keeps everything in sync in the background.

If you only want a one-time copy of a provider's channels, with no sync afterwards, use Import Channels instead.

What Is a Stream Provider?

A provider is a subscription to an external source: another Xtream Codes panel, an M3U portal, or any URL that exposes a channel list. You register it once with the connection details, and the panel treats it as a reusable data source.

To add one, open Providers > Add Provider. The editor has three tabs: Settings (the connection), Mirrors (what to bring in) and Imported Channels (what was brought in).

Key Characteristics:

  • Works with the Xtream Codes API and M3U playlists (get.php, m3u_plus and portal URLs are parsed automatically when you paste them).
  • Supports HTTP or HTTPS. Click the pill next to the host field to switch scheme.
  • Includes a Test button that checks the credentials and confirms the line is active before you save.
  • Reusable across multiple mirrors: one provider can feed several local categories at once.

By itself, a provider is just a connection. It does not import anything until you attach at least one mirror to it.

What Is a Mirror?

A mirror is the rule that tells the panel "copy category X of this provider into my local category Y". Providers hold the connection; mirrors decide what actually flows through.

Each mirror controls:

  • Which remote category to pull from (the panel fetches the list for you).
  • Which local category to write into.
  • A name prefix added to the start of every imported channel name (e.g. [HD]), so you can tell providers apart at a glance.
  • Ignore keywords: channels whose remote name contains any of these words are skipped entirely. Great for filtering out adult content, test channels or dead entries.
  • Strip keywords (Remove these words from imported channel names): words removed from the channel name at import time. The channel is still imported; only its title gets cleaner. Use it to hide markers like 4K, HD or BACKUP that the provider leaves in the title.
  • Playback mode: how the imported channels keep their connection alive (see below).
  • Override channel logo: force the same logo URL on every channel this mirror creates.
  • Stream proxy for these channels: which of your proxies the mirror's channels use to reach the provider (see below).

Ignore drops the whole channel. Strip keeps the channel but cleans the name. If you are troubleshooting a "missing channel", the culprit is almost always Ignore, not Strip.

Playback Modes

Every mirror has one of three playback modes, chosen when you create it and changeable at any time:

  • On-demand (default): the panel opens the connection to the provider only when a client tunes in, and closes it when the last viewer leaves. This frees provider slots when nobody is watching and is the right choice for most setups.
  • On-demand + Turbo: the same on-demand behavior, with a pre-buffered upstream that makes channel switching noticeably faster. It uses our Turbo processor instead of FFmpeg. Choose it when clients complain about slow zapping.
  • Live (always on): the connection stays open 24/7, whether or not anyone is watching. It uses one provider line per channel at all times. Only worth it if your contract with the provider gives you unlimited or very large slot counts.

For a deeper look at on-demand vs Turbo, see On Demand vs Turbo On Demand.

Choosing Live on a mirror with hundreds of channels can easily use up the concurrent-line quota of your provider. The wizard warns you when this is likely.

Proxy per Mirror

With engine 2.4.0 or newer on all the servers of the mirror, Stream proxy for these channels sets the proxy for every channel of the mirror, including the ones it creates later:

  • Don't manage (default): each channel keeps its own proxy.
  • Rotating (all proxies): the channels rotate across all your proxies.
  • No proxy: the channels connect directly.
  • A proxy from your list: every channel uses that proxy.

With any option other than Don't manage, the mirror is in charge: if you change the proxy of one of its channels by hand, it goes back to the mirror's value a few seconds later. The change applies the next time each channel starts. Account and channel-list requests to the provider still come from your main server's IP, so keep it allowed if the provider uses an IP whitelist. See Stream Proxies.

How the Sync Works

Once a mirror is configured, the panel keeps it in sync automatically. Every tick (roughly every 15 seconds) it checks the provider for new channels, updates the ones that changed, and removes the ones that disappeared upstream.

You can also trigger a sync yourself with the Force Sync button. When it finishes, a toast confirms what happened:

Sync OK: +12 created, ~4 updated, -1 removed

Inside each mirror you see per-category status chips:

  • Connected: every remote channel is mapped and healthy.
  • Not connected: local channels that no longer have an active mirror.
  • Gone: channels that used to be there but the provider stopped listing.

Connections and Alerts

In the Providers list, each provider card shows two connection counters:

  • FFmpeg Channels: how many of your channels are pulling from that provider right now.
  • Active Connections (Player API): what the provider itself reports, active connections over your plan's maximum. Refresh from upstream asks for the number now.

The card warns you in two cases:

  • "Player API reports more connections than this panel is using." Someone else may be using your credentials. Change the password with the provider and update it in the provider's Settings tab.
  • "Player API is unreachable from this server, but your channels are streaming." The provider probably blocked your main server's IP from its API. Your channels still work, but you stop seeing capacity and expiry. Ask the provider to whitelist that IP.

Managing Imported Channels

The Imported Channels tab of a provider shows everything it has pulled in: local name, local category, remote name and the Provider Stream ID (very handy when opening a support ticket with the upstream).

Imported channels behave like any other channel in your catalog: you can add them to bouquets, restream them, mark them as events, link them to a guide, or edit them individually. The sync only rewrites the fields the mirror owns, so manual edits to other fields stick between sync cycles.

When you delete a provider, you choose whether its imported channels stay (useful if you are moving to a different upstream) or get deleted with it.

Best Practices

  • Assign a local category from the start. A mirror that lands channels with no local category leaves them invisible to your clients.
  • Filter with Ignore keywords; clean up with Strip keywords. Do not rely on Strip to drop unwanted channels. It will not.
  • Check the Gone chips regularly. They show upstream removals fast, so you can react before a client notices a missing channel.
  • Keep Live mode for a handful of high-priority channels. At scale, On-demand (with Turbo when needed) is safer for both your provider quota and your bandwidth.
  • Test before saving. Run every credential change through the Test button first. It saves you from noticing a broken sync half an hour later.

Once a provider is running, all the standard Xtream AI tooling applies to what it brought in, from Stream Proxies to event channels, so you can add resilience and features without touching the upstream at all.