Stream Manager
The Stream Manager provides real-time monitoring of active media streams and tools to manage server availability.
Active Sessions
Section titled “Active Sessions”The sessions view shows all currently active streams across your connected servers. It polls every 5 seconds as a baseline, and — when Real-Time Sync is enabled — pushes updates within ~2 seconds of a play, pause, or stop via the server’s WebSocket. Real-time events also run the maintenance, blackout and transcode enforcers as soon as a stream changes — immediately on the first change, then at most once every 2 seconds while a server keeps sending session updates — instead of on their 30-second poll. A change that arrives while a check is still running is checked again as soon as that check finishes.
Information Displayed
Section titled “Information Displayed”For each active stream:
| Field | Description |
|---|---|
| Server | Which media server is streaming |
| User | Username and avatar |
| Title | Media title (movie, episode, or track) |
| Type | Movie, Episode, or Track |
| Quality | Resolution, codec, container, bitrate |
| Player | App name, device, platform, playback state |
| Connection | Local or remote |
| Bandwidth | Network bandwidth consumed |
| Progress | Current position / total duration |
| Transcoding | Whether the stream is being converted, the encoder in use (VAAPI, NVENC, QSV, … or SW), and transcode speed |
Working with Sessions
Section titled “Working with Sessions”- Click a session card to open the item’s detail panel — the same one the library and lifecycle pages open — with the session’s stream, media and transcode information at the top. An item the library has not synced yet opens a panel with the session’s own overview and stream details instead.
- Tick the checkbox in a card’s corner to select sessions, then use Terminate Selected — or Select All / Terminate All for everything at once. You pick the message the viewer is shown from a list of presets or write your own (required, up to 500 characters).
- The strip along each card’s bottom edge shows playback progress, colored by state (accent while playing, amber while paused).
- Every termination is written to System Logs under the
Streamssource — manual ones and automatic ones (maintenance mode, transcode manager, blackout) alike, so one filter shows them all. Each line names the viewer, the media they were watching, what triggered the stop, and the message they were shown as the reason. An episode is named by its show and its season and episode number, for example Breaking Bad S01E01.
Maintenance Mode
Section titled “Maintenance Mode”Temporarily pause all streaming activity for server maintenance.
Configuration
Section titled “Configuration”| Setting | Description |
|---|---|
| Termination Message | Message shown to users when their stream is stopped — a preset or a custom message |
| Termination Delay | Seconds a stream may play, from when the enforcer first sees it, before it is terminated (default: 30; 0 = immediately; at most 3600, one hour) |
| Excluded Users | Users who can continue streaming during maintenance |
| Notify Discord | Send a Discord notification when maintenance mode is turned on or off (default: off; needs a webhook under Settings → Notifications) |
Behavior
Section titled “Behavior”When maintenance mode is enabled:
- Each stream from a non-excluded user gets its own grace period, starting when the enforcer first sees it
- Once the delay has passed, the stream is terminated with the termination message
- Streams started later are treated the same way — they play for the delay, then are stopped
- A Discord notification is sent if Notify Discord is on
When maintenance mode is disabled:
- No further streams are terminated; pending grace periods are dropped
- A Discord notification is sent if Notify Discord is on
Editing the message, delay or exclusions while maintenance is on does not send another notification — only turning it on or off does.
Transcode Manager
Section titled “Transcode Manager”Automatically terminate streams that match transcoding criteria.
Criteria
Section titled “Criteria”| Criterion | Description |
|---|---|
| Any Transcoding | Terminate sessions where video or audio is being transcoded |
| Video Transcoding | Terminate sessions where video is being transcoded |
| Audio Transcoding | Terminate sessions where audio is being transcoded |
| 4K Transcoding | Terminate sessions where the video of 4K content is being transcoded, including downscales to a lower resolution |
| Remote Transcoding | Terminate remote (non-local) sessions that are transcoding |
Settings
Section titled “Settings”| Setting | Description |
|---|---|
| Delay | Seconds to wait before terminating matching streams (default: 30; at most 3600) |
| Custom Message | Message displayed to users when their session is terminated |
| Excluded Users | Users who bypass transcode restrictions |
| Skip Hardware Transcodes | Never terminate a stream Plex is encoding on a GPU, regardless of criteria (Plex-only; default: off) |
Skip Hardware Transcodes
Section titled “Skip Hardware Transcodes”A hardware (GPU) encode costs the CPU very little, so this option exempts those streams from every transcode criterion. It applies to the transcode manager only — maintenance mode and blackout schedules still terminate the stream.
Only the encode counts. A hardware decode feeding a software encode is still doing the expensive work on the CPU, so it is not exempt.
Enforcement
Section titled “Enforcement”The enforcer checks active streams every 30 seconds. Sessions matching any enabled criterion are terminated after the configured delay. When a stream is caught by both maintenance mode and the transcode manager, the shorter of the two delays (and that feature’s message) applies.
Blackout Schedules
Section titled “Blackout Schedules”Schedule recurring or one-time maintenance windows when streaming is automatically paused.
Schedule Types
Section titled “Schedule Types”Recurring
Section titled “Recurring”Set repeating windows on specific days and times.
- Days of week: Select one or more days
- Start/End time: 24-hour format
- Example: Monday, Wednesday, Friday — 2:00 AM to 4:00 AM
One-Time
Section titled “One-Time”Set a single maintenance window with specific start and end dates/times.
- Example: December 25, 2024 12:00 AM to December 26, 2024 11:59 PM
Blackout Behavior
Section titled “Blackout Behavior”During a blackout window:
- Sessions are stopped according to the schedule’s action (below)
- The schedule’s termination message is shown to users
- Excluded users are never stopped
- No Discord notification is sent for blackouts
Actions
Section titled “Actions”| Action | Description |
|---|---|
| Terminate Immediately | Stop sessions as soon as the blackout starts |
| Warn Then Terminate | Send a warning, then terminate after a configurable delay (default: 30 seconds, at most 3600) |
| Block New Only | Allow existing sessions to continue but block new playbacks |
Limitations
Section titled “Limitations”- Stream data accuracy depends on the media server’s API reporting
- Maintenance mode and blackout enforcement have up to a 30-second delay between checks
- Some player apps may not immediately respond to a stop request
- Stream conversion detection relies on what your media server reports, which varies by player app
- Blackout and recurring schedule times are evaluated in the server’s local timezone (set
TZon the container to control it) - On Jellyfin and Emby, LAN vs WAN is inferred from the client’s IP address (private, loopback, link-local and CGNAT/tailnet ranges count as local) because those servers report no explicit “local” flag. Plex reports it directly.
- The 4K Transcoding criterion matches the source resolution of the version being played. For a Plex item with several versions at different resolutions, the exact version’s resolution is resolved from the server; other criteria and servers use the synced library value.
- The 4K criterion, and hardware detection, are richest on Plex. On Jellyfin/Emby the 4K source resolution comes from the item itself and hardware acceleration is not detected (see above).