This article explains how to deploy Wowza Streaming Engine (WSE), Wowza Streaming Engine Manager (WSEM), and the Video Intelligence Framework (VIF) using Docker Compose to enable real-time object detection and scene analysis for live video streams managed by Wowza Streaming Engine.
The deployment is driven by a single docker-compose.yaml file with named profiles, giving you the flexibility to run all services on one machine or distribute them across multiple servers.
Supported deployment configurations
-
WSE + WSEM + VIF - All three services on a single server (recommended for getting started)
-
WSE + VIF - Streaming Engine and Video Intelligence on one server, without the Manager UI
-
WSE + WSEM on server 1 / VIF on server 2 - Separate GPU server for Video Intelligence processing
Prerequisites
Before you begin, ensure you have the following items:
-
A valid Wowza Streaming Engine license key
-
A valid Video Intelligence Service (VIS) license key. If you need a license key, contact Wowza.
-
The latest version of Git installed on your machine
-
Docker Engine and Docker Compose v2 installed
-
A live stream source (e.g., OBS, an IP camera, or an MP4 file) that you can push to Wowza Streaming Engine through any of the supported protocols. See Supported protocols and formats for more information.
Note: VIC runs inside the WSE container and requires no GPU. Video Intelligence Service (VIS) runs in its own container and requires an NVIDIA GPU with compatible drivers and the NVIDIA Container Toolkit.
System requirements
The following baseline configuration supports approximately 10 concurrent 720p streams, each analyzed at up to 15 fps under typical production conditions.
| Component | Requirement |
|---|---|
| GPU |
1 x NVIDIA T4 (16 GB) minimum. 1 x NVIDIA L4 (24 GB) recommended. The minimum requirement is CUDA 12.8 with a GPU on Turing architecture or newer. For more information, see Turing Architecture vGPU Types. |
| CPU | 8 vCPU minimum. 16 vCPU recommended. |
| RAM | 32 GB |
| Storage | 32 GB free disk space; NVMe recommended |
| Network | 10 GbE preferred for multi-stream deployments |
| NVIDIA Driver | Version 570 or above (nvidia-smi must work) |
| NVIDIA Container Toolkit | nvidia-container-toolkit required |
Note: The following baseline configuration supports approximately 8 concurrent 720p streams, each analyzed at up to 10 fps, under typical production conditions.
Choose a deployment profile
VIF deployment is driven by a single docker-compose.yaml with named profiles so that you can run everything on one machine or split services across servers.
Note: This page covers deployment concepts only. It doesn't include the full step-by-step setup. To actually deploy VIF, follow the instructions in the README in the VIF GitHub repo. Treat the repo as the source of truth, as it's updated with every release, and the steps needed to get a working deployment (cloning the repo, configuring
.env, generating aVIS_API_KEY, persisting WSE data, TLS setup) live there.
| Profile | Services started | Use case |
|---|---|---|
(none) / default |
wse + manager + VIS | Full stack on one server — recommended for getting started |
wse |
wse + manager | Streaming Engine + Manager only, connecting to a remote VIS |
wse-only |
wse only | Streaming Engine without the Manager UI |
wsem |
manager only | Manager interface only |
vi-service |
VIS only | Dedicated GPU server, no Engine or Manager |
vlm |
VIS + VLM sidecar | Add vision-language model analysis (see Use VLM analysis in VIF) |
svd |
VID + SVD sidecar | Add synthetic video detection Note: You'll need an NVIDIA NGC API key and a GPU from SVD's supported list. See Use Synthetic Video Detector in VIF for more information. |
For a GPU-only, standalone VIS deployment (including air-gapped installs with pre-downloaded model weights), see the VIS Deployment guide.
Monitor the VIS container performance
The VIF Dashboard shows metrics for the WSE instance. To monitor the VIS container (where AI inference runs), use the following host-level commands.
CPU and memory
Use Docker's built-in stats command for a live feed of CPU, RAM, network, and disk utilisation:
docker stats video-intelligence-service-gpu
Or monitor all running containers at once:
docker stats
GPU utilisation
Standard docker stats does not report GPU metrics. Because the VIS container uses NVIDIA GPUs, run nvidia-smi inside the container:
docker exec -it video-intelligence-service-gpu nvidia-smi
This returns:
- GPU utilisation percentage
- GPU memory usage
- Temperature
- Power consumption
Note: For continuous monitoring, add--loopor wrap the command inwatch -n 2:
watch -n 2 docker exec video-intelligence-service-gpu nvidia-smi




