
Description
Build the DS-SOP Docker image and deploy the VSS SOP blueprint end-to-end. Use when asked to deploy SOP, build DS SOP, install SOP, set up the SOP pipeline, verify SOP models, start the SOP blueprint, simulate RTSP for SOP, run the SOP API test, or tear down SOP.
SKILL.md
VSS SOP — Build DS-SOP & Deploy
Complete end-to-end skill: build the DS-SOP Docker image, verify models, configure the blueprint, deploy, test, and tear down using structured helper scripts.
Overview
Use this skill when deploying or tearing down the VSS SOP blueprint, starting RTSP simulations, or validating prerequisites.
Key operations:
- Verifying host requirements and Docker setups.
- Downloading assets and checkpoints under
/opt. - Creating RTSP simulation streams.
- Configuring host environments and deploying compose services.
Prerequisites
- Hardware: H100 / H200 / A100 GPU (>= 80 GB VRAM).
- Driver: NVIDIA Driver 580 with CUDA 13.
- NGC Keys: Registered with subscription access to Metropolis data bundles.
Instructions
Requirements
| Item | Value |
|---|---|
| CUDA | 13 |
| Driver | 580 |
| Hardware | H100 / H200 / A100 |
| GPU | >= 80 GB VRAM, >= 1 GPU |
Software: Docker, NVIDIA Container Toolkit 1.18.1, NVIDIA Driver 580, ngc CLI.
Examples
Run Deploy Setup
# Configure blueprint environment variables
./agentic/vss-sop-skills/vss-sop-deploy/scripts/configure_blueprint.sh --bp-repo . --vlm-mode local
# Start the full deployment stack
./agentic/vss-sop-skills/vss-sop-deploy/scripts/deploy.sh --bp-repo .
Manage Simulation and Teardown
# Start simulation stream on rtsp://localhost:8552/sensor_0
./agentic/vss-sop-skills/vss-sop-deploy/scripts/start_rtsp_server.sh --bp-repo .
# Tear down the deployment and clean volumes
./agentic/vss-sop-skills/vss-sop-deploy/scripts/teardown.sh --bp-repo .
Phase 0 — Prerequisites Check & Auto-Install
Run this phase before every deploy. It checks secret key files, GPU drivers, Docker, NVIDIA Container Toolkit, and NGC configuration, and can automatically install or configure missing prerequisites.
Run Pre-flight Checks and Auto-Install
To run the checks and automatically fix/install any missing components (such as NVIDIA Driver 580, CUDA Toolkit 13, Docker, Docker Compose, NVIDIA Container Toolkit, NGC CLI, and NGC CLI configuration):
cd <bp-repo>
./agentic/vss-sop-skills/vss-sop-deploy/scripts/preflight_check.sh --bp-repo . --fix
If you only want to run the checks without modifying your system:
cd <bp-repo>
./agentic/vss-sop-skills/vss-sop-deploy/scripts/preflight_check.sh --bp-repo .
If any manual check fails, refer to the printed advice or the following documentation to resolve the issue:
- Secret keys: See
references/ngc.md§ Configure NGC API Key - NVIDIA driver: See
references/nvidia_driver.md - Docker & Toolkit: See
references/prerequisites.md
Phase 1 — Verify Models & Download Assets
Verify that the trained model and config files exist under /opt/models/... and /opt/sop/... directories. For optimal accuracy, you must retrain/fine-tune the models, which can be done using the SOP Training Blueprint. After training, move model and config to /opt/models/... and /opt/sop/... directories. Download the sample video, re-encode it to H.264 at 30 FPS, and prepare cache/datalog directories.
Run Asset Download and Preparation
To execute this entire pipeline:
cd <bp-repo>
./agentic/vss-sop-skills/vss-sop-deploy/scripts/download_assets.sh --bp-repo .
This automates the following actions:
- Checks that the required model and config files exist under
/opt/modelsand/opt/sop. If not, prompts the user to retrain/fine-tune the models using the SOP Training Blueprint. - Downloads the sample RTSP video.
- Installs
ffmpeg(if missing) and re-encodes the sample video to H.264 at 30 FPS. - Configures local cache permissions and pre-creates all bind-mounted data log directories (e.g., Kafka, Elasticsearch) with universal read/write permissions to prevent container startup failures.
Phase 2 — Start RTSP Server Simulation
The RTSP stream simulator is started in this phase — ahead of the build, verification, and deployment steps that follow — so a live stream (rtsp://localhost:8552/sensor_0) is available for the end-to-end ingestion testing in later phases.
cd <bp-repo>
./agentic/vss-sop-skills/vss-sop-deploy/scripts/start_rtsp_server.sh --bp-repo .
This installs RTSP server prerequisites and starts rtsp_server.py serving on rtsp://localhost:8552/sensor_0 in the background (which wraps raw MP4 footage and streams it in real time).
Phase 3 — Build DS-SOP Docker Image & Verify Components
To build the ds-sop:1.0.0 Docker image and verify its RTSP components, refer to the detailed reference documentation:
This reference covers:
- Generating the DeepStream SOP source code with the ds-sop-skills skill (into
ds_sop_microservice) — RTSP streaming output is opt-in (ds-sop-skills § 18) and must be requested in the generation prompt ("with rtsp streaming output feature"). - Building the container image with BuildKit support (no patch step — the generated source is built as-is).
- Verifying the RTSP components (the 6 pre-flight container checks run by
verify_rtsp_components.py).
Phase 4 — Configure & Deploy the Blueprint
Configure the Blueprint
Configure host IPs, deployment paths, and LLM/VLM endpoints in the .env file. With no extra flags this auto-detects HOST_IP/EXTERNAL_IP and defaults to remote NIM endpoints:
cd <bp-repo>
./agentic/vss-sop-skills/vss-sop-deploy/scripts/configure_blueprint.sh --bp-repo .
For local VLM (served by the DS-SOP container on port 8300):
./agentic/vss-sop-skills/vss-sop-deploy/scripts/configure_blueprint.sh --bp-repo . --vlm-mode local
Run configure_blueprint.sh --help for the full set of options (--llm-mode, --vlm-mode, --llm-base-url, --vlm-base-url, --llm-name, --vlm-name).
This script also enforces use_base64: true in config.yml and SOP_MESSAGING_SCHEMA=JSON in the DS-SOP .env — both are required for correct Kibana field mapping and video understanding.
Auto-configuration safety net: If you skip this step,
deploy.shwill detect the unconfigured placeholder and runconfigure_blueprint.shautomatically with default settings before starting services.
Run Deployment
Log into NGC registry and start the blueprint Docker compose services:
cd <bp-repo>
./agentic/vss-sop-skills/vss-sop-deploy/scripts/deploy.sh --bp-repo .
Note on Volume Permissions & Automatic Index Cleanup:
deploy.shautomatically pre-creates and configures all required bind-mounted data log directories (such askafka,elastic/data,redis/data, etc.) with universal777permissions (usingsudoif needed). This completely avoids container-level "Permission denied" errors.In addition,
deploy.shautomatically cleans up old Elasticsearch (elastic/dataandelastic/logs) and Kafka data from prior runs before launching the containers. This prevents index pattern mapping pollution (such as stale1970-01-01date indices with old protobuf schemas) from interfering with wildcard queries or breaking Kibana visualization fields.
Monitor
docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'
Deploy is complete when all mdx-* containers show status Up.
Endpoints
| Service | Endpoint |
|---|---|
| VSS-UI | http://<EXTERNAL_IP>:3000 |
| Grafana-UI | http://<EXTERNAL_IP>:35000/ |
| Kibana-UI | http://<EXTERNAL_IP>:5601/app/home#/ |
| VIOS-UI | http://<EXTERNAL_IP>:30888/vst/#/dashboard |
| Phoenix-UI (Telemetry) | http://<EXTERNAL_IP>:6006/projects |
Phase 5 — Test with RTSP Stream
Trigger Client Test
With the RTSP streaming simulator already running, trigger the test client and monitor the integration:
cd <bp-repo>
./agentic/vss-sop-skills/vss-sop-deploy/scripts/test_rtsp.sh --bp-repo .
This automates:
- Polls
mdx-ds-sop-1logs until the API server is fully up. - Automatically triggers
./run_rtsp_test.shin the background to register streams to VIOS.
Self-Healing Integration Loop: To completely avoid the stale RTSP factory bug (where subsequent client runs on
mdx-ds-sop-1allocate random UDP ports but retain the old RTSP factory on port 8554, yielding 0 RTP bytes),run_rtsp_test.shruns a continuous self-healing loop. If the ds-sop client exits or the connection is lost, the script automatically restarts themdx-ds-sop-1container, waits for readiness, resets the VST sensors, and starts a fresh streaming session to resume recording automatically. This ensures continuous livestreaming and recording stability.
Tear Down
To stop the services and clean up all data logs:
cd <bp-repo>
./agentic/vss-sop-skills/vss-sop-deploy/scripts/teardown.sh --bp-repo .
Error Handling
- Docker Socket Permissions / Permission Denied: All scripts (including
deploy.sh,teardown.sh,test_rtsp.sh,build_ds_sop.sh, andvss_sop_test.py) are fully docker-group aware. If the current shell has inactive docker group membership but the user belongs to thedockergroup, the scripts will automatically re-execute themselves under thesg dockercommand wrapper to bypass socket permission errors. If sudo is required, they will prompt/re-run via sudo. You do not need to prefix commands withsg dockermanually. unknown or invalid runtime name: nvidia— NVIDIA Container Toolkit not installed or Docker not restarted. Seereferences/prerequisites.md.- NGC auth error — verify
ngc_api_key.txtand ensure it is exported correctly. mdx-ds-sop-1not starting — check model paths match between Phase 1 andds-sop/.env.- API server not ready — check
docker logs mdx-ds-sop-1for errors or progress. MediaInfo.parse: Unsupported file typeerror inmdx-ds-sop-1when downloading video from VST directly — Ensure thatuse_base64: trueis set undervideo_understandingindeployments/sop/vss-agent/configs/config.yml. This forces the VSS Agent to send base64-encoded video instead of VST links, avoiding VST download parsing errors.- Kibana "No field found for llm.queries.response.keyword" or missing messages in ELK — Ensure
SOP_MESSAGING_SCHEMA=JSONandENABLE_MESSAGING=1are set indeployments/ds/ds-sop/.env(automatically enforced byconfigure_blueprint.sh). See vss-sop-build SKILL.md § Error Handling for the full field name reference and validation steps. - UI shows
Failed to load image with src: http://<internal-ip>:30888/...—EXTERNAL_IPin.envis a host-only address. Set it to the public/browser-reachable IP (see Phase 4) and recreate the agent container.
License
Use of this skill is governed by the Creative Commons Attribution 4.0 International License (CC BY 4.0) and the Apache License, Version 2.0.
More skills from the sop-monitoring-blueprints repository
View all 11 skillssop-build
orchestrate end-to-end SOP monitoring pipelines
Jul 14AutomationEngineeringMonitoringNVIDIA +1sop-by-action-eval
run by-action VLM evaluations
Jul 14EvalsMachine LearningMonitoringNVIDIAsop-cr-finetuning
fine-tune VLM models for SOP monitoring
Jul 14AI InfrastructureMachine LearningMonitoringNVIDIAsop-data-augmentation
augment annotated datasets
Jul 14Data EngineeringDatasetsMachine LearningNVIDIA +1sop-ddm-finetuning
fine-tune DDM-Net models for SOP monitoring
Jul 14Deep LearningMonitoringNVIDIAsop-e2e-inference
run end-to-end inference evaluations
Jul 14EvalsMachine LearningMonitoringNVIDIA
More from NVIDIA
View publishernemoclaw-user-guide
retrieve NemoClaw documentation and configuration
NemoClaw
Jul 20DocumentationMCPSearchmcore-build-and-dependency
manage Megatron-LM development environments
Megatron-LM
Jul 27ContainersDeploymentPythonmcore-bump-base-image
update NVIDIA PyTorch base images
Megatron-LM
Jul 14CI/CDDeploymentmcore-cicd
manage CI/CD pipelines for Megatron-LM
Megatron-LM
Jul 27CI/CDDeploymentGitHubmcore-create-issue
investigate CI failures and create issues
Megatron-LM
Jul 14DebuggingGitHubTriagemcore-linting-and-formatting
lint and format Megatron-LM code
Megatron-LM
Jul 14Best PracticesCode Analysis