> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/deployment/self-hosted/enterprise/deployment-manager/monitoring/view-a-stream.md).

# View a Stream

Learn how to view a Stream configured with Deployment Manager.

A Stream is a video feed on which a Workflow is running. You can view a Stream from the Streams list from the Deployment Manager dashboard.

Click "Deployments" in the left sidebar, then "Edge Devices", then choose the Device where your stream is running. Then, select the Stream you want to view from your list of Streams:

<figure><img src="https://1583372177-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-25e38f03d984c9f54fbae3d409b7f60b6ad7097e%2Fenterprise-streams.png?alt=media" alt="Streams tab showing running Streams and their Workflows"><figcaption></figcaption></figure>

Once you select a Stream, you will be able to see:

* The status of your Stream.
* A recent frame from your Stream, with a live readout of camera FPS (capture rate) and inference FPS (Workflow throughput) shown with the preview. You can alert on either metric from [Device Alerts](/deployment/self-hosted/enterprise/deployment-manager/setting-up/set-up-device-alerts.md).
* "Sharpness", a focus score for the camera. See [Sharpness](#sharpness).
* For Basler and Lucid cameras, a "Camera" card with the camera's status. Click "Show Diagnostics" to check the camera connection and network.
* Information about the Workflow running on the Stream.
* A "Workflow Performance" chart. It shows how long each Workflow block takes, from runs the device sampled over the last hour. Use it to find the slowest blocks.

Here is an example showing a frame from a Stream:

<figure><img src="https://1583372177-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-fe19468ea4be9870c5ddd9199744a8d6c56dd113%2Fenterprise-stream-preview.png?alt=media" alt="Stream snapshot preview with inference FPS, camera FPS, and sharpness"><figcaption></figcaption></figure>

Supported devices provide live video with a play control; AI1 devices start playback automatically. Otherwise, or if video fails or becomes stale, the preview shows periodic snapshots. A chip below the preview reads "Live" while video plays and "Snapshot preview" while it shows snapshots. A frame kept from a stopped or disconnected stream is marked "Not live" (or "Device offline · Not live") with the time of the last frame, so it does not mean inference is running.

<figure><img src="https://1583372177-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-4dbd02fba5aa7d8ada9e4a2d466e22dacd4f2bcb%2Fenterprise-workflow-performance.png?alt=media" alt="Workflow Performance chart showing time spent in each block over sampled runs"><figcaption></figcaption></figure>

You can scroll down to see the Workflow your device is running, the parameters used to set up the Workflow, and your Stream configuration.

{% hint style="info" %}
Publishing updates streams that follow the latest Workflow, subject to maintenance windows and configuration approval. Inference in Offline Mode does not fetch the update. In the publish confirmation, a "Zero Downtime" chip marks devices that run a supported Edge image and version with "Multiprocessing" on and no manager service. These devices prepare a replacement worker while capture stays open; a failed swap can restart the stream instead. Other devices restart inference, briefly interrupting all streams on that service.
{% endhint %}

<figure><img src="https://1583372177-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FoksNmwps1HmYr8TqHDnX%2Fuploads%2Fgit-blob-c0fc0c5ed99a37e8ed8f0a7f71b0c518fc91ba9e%2Fenterprise-stream-configuration.png?alt=media" alt="Stream configuration with Workflow version, parameters, and mode"><figcaption><p>Workflow details and Stream configuration.</p></figcaption></figure>

## Sharpness

"Sharpness" is a focus score from 0 to 100. It compares each frame with the sharpest and blurriest frames the stream has measured since it started, so use it to compare focus in the same scene (ex: while you adjust the lens). It measures the largest objects your Workflow detects, or the center third of the frame when there are none.

To measure fixed areas instead, set `focus_regions` on the stream with [Update Config](/deployment/self-hosted/enterprise/deployment-manager.md#update-config). Give each region a center and size as fractions of the frame (ex: `{"x_center": 0.5, "y_center": 0.5, "width": 0.33, "height": 0.33}`). The change applies without restarting the stream.

## Recent Frames

Your browser keeps the last 24 camera frames while the page is open, and you can save them to a project to train on them. Click "Pause Updates", select the frames you want, pick a project, then click "Add to Project". Each image lands in the "Device Captures" batch with the "device-capture" tag, in the train split. You need permission to upload images, and only frames from the camera can be added: frames that show inference results are preview only.

## Local Video

The inference server on the device serves each running stream's video on the device's local network. Replace `<stream>` with the stream's name:

* `http://<device-ip>:8000/inference_pipelines/<stream>/output.mjpeg`: live video with the Workflow output. Use `input.mjpeg` for the camera frames.
* `output.jpg` and `input.jpg`: the latest frame.
* `output.mp4` and `input.mp4`: a clip of the last 10 seconds. `output.m3u8` and `input.m3u8` play the same window as HLS.

Clips need an NVIDIA hardware video encoder. Recording starts with the first clip request, so that request can return a short clip or none. To change the clip length or record all the time, set `clip_buffer` on the stream with [Update Config](/deployment/self-hosted/enterprise/deployment-manager.md#update-config): `seconds` (1 to 600, default 10) and `always_on` (default `false`). Recording all the time uses more GPU and CPU.
