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 let the maintenance, blackout, and transcode enforcers see a new stream within about half a second instead of up to 30 seconds.
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 its detail panel with full overview, stream, media, and transcode information.
- Tick the checkbox in a card’s corner to select sessions, then use Terminate Selected — or Select All / Terminate All for everything at once.
- 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.
Maintenance Mode
Section titled “Maintenance Mode”Temporarily pause all streaming activity for server maintenance.
Configuration
Section titled “Configuration”| Setting | Description |
|---|---|
| Custom Message | Message displayed to users explaining the maintenance |
| Delay | Seconds to wait before terminating active streams (default: 30) |
| Excluded Users | Users who can continue streaming during maintenance |
Behavior
Section titled “Behavior”When maintenance mode is enabled:
- A grace period countdown begins (configurable delay)
- Active streams receive a notification
- After the delay, sessions are terminated
- New connection attempts are rejected with the custom message
- Discord notification sent (if configured)
When maintenance mode is disabled:
- Normal streaming resumes immediately
- Discord notification sent (if configured)
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) |
| 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.
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:
- Active sessions are terminated after a configurable delay
- Custom message displayed to users
- User exclusions supported
- Discord notification sent (if configured)
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 |
| 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).