🪟 Mosaic
The Mosaic page provides a live, at-a-glance grid of stream previews so you can monitor multiple feeds at once. Previews are low-FPS JPEG snapshots, optimized for quick scanning rather than full playback.
Double-clicking on any stream preview opens a dedicated playback window with full framerate video for that stream.

Open Mosaic
- Navigate to Mosaic from the left sidebar.
- Only streams marked as active appear in the grid.
Mosaic pages (tabs)
Mosaic is organized into pages (tabs) so you can group streams by mission, team, or geography.
- Add - creates a new Mosaic page.
- Edit - rename the current page and reassign streams using the Available/Assigned lists.
- Remove - deletes the current page (disabled when only one page exists).
To add streams to the mosaic page, use the transfer list in the edit dialog:

Mosaic pages, assignments, and ordering are stored in your browser's local storage. They are not shared with other users or devices.
Organize streams
- Reorder within a page: drag a stream card and drop it onto another stream card to reposition it.
- Move between pages: drag a stream card and drop it onto a different tab.
- Open a stream: double-click a card to jump to the Player view for that stream.
- Select a card: click once to highlight; click outside to clear the selection.
Preview behavior
- Previews refresh automatically.
- Refresh cadence is adaptive: faster when fewer than 10 streams are shown, slower for larger mosaics.
- No preview means the server has not produced a snapshot yet.
- Timeout indicates the stream is waiting for data.
Configuration parameters
Mosaic previews are configured in Server Configuration -> Preview. These values control how the backend captures preview frames for the Mosaic grid (and other preview consumers).

| Setting | Field | Default | Description |
|---|---|---|---|
| Preview workers | previewWorkers |
6 | Number of parallel preview capture workers. Increase for more concurrent streams, higher values use more CPU. |
| Preview framerate | previewFramerate |
1 | Target frames per second for preview snapshots. Higher values update more often but increase load. |
| Preview width | previewWidth |
320 | Output width of preview images in pixels. |
| Preview height | previewHeight |
180 | Output height of preview images in pixels. |
| Capture timeout (ms) | previewCaptureTimeoutMs |
12000 | Maximum time allowed for one preview capture attempt before it is treated as a miss and retried later. |
| Warm-up grace (ms) | previewTargetWarmupGraceMs |
15000 | Grace period after creating a preview target where misses are tolerated while the stream starts producing frames. |
| Backoff min (ms) | previewBackoffMinMs |
1000 | Initial delay before retrying after a capture miss. Retry delay increases exponentially on consecutive misses. |
| Backoff max (ms) | previewBackoffMaxMs |
30000 | Upper limit for retry delay between capture attempts after misses. Must be greater than or equal to Backoff min. |
Notes:
- Values must be zero or positive. Setting a value to
0uses the built-in default. - For best results, keep width/height close to a 16:9 ratio to match the Mosaic card aspect ratio.
- Changes apply at runtime; the next snapshot cycle will use the new settings.
- Actual preview cadence depends on CPU load, stream profile/encoding complexity, the number of active streams, and worker availability. Setting a framerate is a target, not a guarantee.
Windows
On Windows, the backend uses external frame-extraction helper processes for preview capture.
- The backend creates and keeps a helper child process per preview worker.
- Those worker processes are used to extract preview JPEG frames from stream samples for Mosaic updates.