[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-vss-sop-deploy":3,"mdc--85w9fl-key":34,"related-repo-nvidia-vss-sop-deploy":1989,"related-org-nvidia-vss-sop-deploy":2092},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":32,"mdContent":33},"vss-sop-deploy","deploy VSS SOP monitoring pipelines","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.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},"nvidia","NVIDIA","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fnvidia.png",[12,16,19,20],{"name":13,"slug":14,"type":15},"Monitoring","monitoring","tag",{"name":17,"slug":18,"type":15},"Deployment","deployment",{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},"Docker","docker",39,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fsop-monitoring-blueprints","2026-07-14T05:32:50.992812","CC-BY-4.0 AND Apache-2.0",12,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":31},[],"Industrial SOP Monitoring Blueprints for Training & Inference","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fsop-monitoring-blueprints\u002Ftree\u002FHEAD\u002Fagentic\u002Fvss-sop-skills\u002Fvss-sop-deploy","---\nname: vss-sop-deploy\ndescription: >-\n  Build the DS-SOP Docker image and deploy the VSS SOP blueprint end-to-end.\n  Use when asked to deploy SOP, build DS SOP, install SOP, set up the SOP\n  pipeline, verify SOP models, start the SOP blueprint, simulate RTSP for SOP,\n  run the SOP API test, or tear down SOP.\nowner: NVIDIA\nservice: vss-sop\nversion: 1.0.0\nlicense: CC-BY-4.0 AND Apache-2.0\nreviewed: 2026-06-23\nmetadata:\n  openclaw: { \"emoji\": \"🏗️\", \"os\": [\"linux\"] }\n  author: \"Quan Vu \u003Cqvu@nvidia.com>\"\n  tags: [\"vss\", \"sop\", \"deploy\"]\n---\n\n# VSS SOP — Build DS-SOP & Deploy\n\nComplete end-to-end skill: build the DS-SOP Docker image, verify models, configure the blueprint, deploy, test, and tear down using structured helper scripts.\n\n## Overview\n\nUse this skill when deploying or tearing down the VSS SOP blueprint, starting RTSP simulations, or validating prerequisites.\n\nKey operations:\n- Verifying host requirements and Docker setups.\n- Downloading assets and checkpoints under `\u002Fopt`.\n- Creating RTSP simulation streams.\n- Configuring host environments and deploying compose services.\n\n## Prerequisites\n\n- **Hardware:** H100 \u002F H200 \u002F A100 GPU (>= 80 GB VRAM).\n- **Driver:** NVIDIA Driver 580 with CUDA 13.\n- **NGC Keys:** Registered with subscription access to Metropolis data bundles.\n\n## Instructions\n\n## Requirements\n\n| Item | Value |\n|---|---|\n| CUDA | 13 |\n| Driver | 580 |\n| Hardware | H100 \u002F H200 \u002F A100 |\n| GPU | >= 80 GB VRAM, >= 1 GPU |\n\nSoftware: Docker, NVIDIA Container Toolkit 1.18.1, NVIDIA Driver 580, `ngc` CLI.\n\n## Examples\n\n### Run Deploy Setup\n\n```bash\n# Configure blueprint environment variables\n.\u002Fagentic\u002Fvss-sop-skills\u002Fvss-sop-deploy\u002Fscripts\u002Fconfigure_blueprint.sh --bp-repo . --vlm-mode local\n\n# Start the full deployment stack\n.\u002Fagentic\u002Fvss-sop-skills\u002Fvss-sop-deploy\u002Fscripts\u002Fdeploy.sh --bp-repo .\n```\n\n### Manage Simulation and Teardown\n\n```bash\n# Start simulation stream on rtsp:\u002F\u002Flocalhost:8552\u002Fsensor_0\n.\u002Fagentic\u002Fvss-sop-skills\u002Fvss-sop-deploy\u002Fscripts\u002Fstart_rtsp_server.sh --bp-repo .\n\n# Tear down the deployment and clean volumes\n.\u002Fagentic\u002Fvss-sop-skills\u002Fvss-sop-deploy\u002Fscripts\u002Fteardown.sh --bp-repo .\n```\n\n## Phase 0 — Prerequisites Check & Auto-Install\n\nRun 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.\n\n### Run Pre-flight Checks and Auto-Install\n\nTo run the checks and automatically fix\u002Finstall any missing components (such as NVIDIA Driver 580, CUDA Toolkit 13, Docker, Docker Compose, NVIDIA Container Toolkit, NGC CLI, and NGC CLI configuration):\n\n```bash\ncd \u003Cbp-repo>\n.\u002Fagentic\u002Fvss-sop-skills\u002Fvss-sop-deploy\u002Fscripts\u002Fpreflight_check.sh --bp-repo . --fix\n```\n\nIf you only want to run the checks without modifying your system:\n\n```bash\ncd \u003Cbp-repo>\n.\u002Fagentic\u002Fvss-sop-skills\u002Fvss-sop-deploy\u002Fscripts\u002Fpreflight_check.sh --bp-repo .\n```\n\nIf any manual check fails, refer to the printed advice or the following documentation to resolve the issue:\n- Secret keys: See [`references\u002Fngc.md`](references\u002Fngc.md) § Configure NGC API Key\n- NVIDIA driver: See [`references\u002Fnvidia_driver.md`](references\u002Fnvidia_driver.md)\n- Docker & Toolkit: See [`references\u002Fprerequisites.md`](references\u002Fprerequisites.md)\n\n---\n\n## Phase 1 — Verify Models & Download Assets\n\nVerify that the trained model and config files exist under `\u002Fopt\u002Fmodels\u002F...` and `\u002Fopt\u002Fsop\u002F...` directories. For optimal accuracy, you must retrain\u002Ffine-tune the models, which can be done using the SOP Training Blueprint. After training, move model and config to `\u002Fopt\u002Fmodels\u002F...` and `\u002Fopt\u002Fsop\u002F...` directories. Download the sample video, re-encode it to H.264 at 30 FPS, and prepare cache\u002Fdatalog directories.\n\n### Run Asset Download and Preparation\n\nTo execute this entire pipeline:\n\n```bash\ncd \u003Cbp-repo>\n.\u002Fagentic\u002Fvss-sop-skills\u002Fvss-sop-deploy\u002Fscripts\u002Fdownload_assets.sh --bp-repo .\n```\n\nThis automates the following actions:\n- Checks that the required model and config files exist under `\u002Fopt\u002Fmodels` and `\u002Fopt\u002Fsop`. If not, prompts the user to retrain\u002Ffine-tune the models using the SOP Training Blueprint.\n- Downloads the sample RTSP video.\n- Installs `ffmpeg` (if missing) and re-encodes the sample video to H.264 at 30 FPS.\n- Configures local cache permissions and pre-creates all bind-mounted data log directories (e.g., Kafka, Elasticsearch) with universal read\u002Fwrite permissions to prevent container startup failures.\n\n---\n\n## Phase 2 — Start RTSP Server Simulation\n\nThe RTSP stream simulator is started in this phase — ahead of the build, verification, and deployment steps that follow — so a live stream (`rtsp:\u002F\u002Flocalhost:8552\u002Fsensor_0`) is available for the end-to-end ingestion testing in later phases.\n\n```bash\ncd \u003Cbp-repo>\n.\u002Fagentic\u002Fvss-sop-skills\u002Fvss-sop-deploy\u002Fscripts\u002Fstart_rtsp_server.sh --bp-repo .\n```\n\nThis installs RTSP server prerequisites and starts `rtsp_server.py` serving on `rtsp:\u002F\u002Flocalhost:8552\u002Fsensor_0` in the background (which wraps raw MP4 footage and streams it in real time).\n\n---\n\n## Phase 3 — Build DS-SOP Docker Image & Verify Components\n\nTo build the `ds-sop:1.0.0` Docker image and verify its RTSP components, refer to the detailed reference documentation:\n\n- See [`references\u002Fbuild_ds_sop_image.md`](references\u002Fbuild_ds_sop_image.md)\n\nThis reference covers:\n1. 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\"*).\n2. Building the container image with BuildKit support (no patch step — the generated source is built as-is).\n3. Verifying the RTSP components (the 6 pre-flight container checks run by `verify_rtsp_components.py`).\n\n---\n\n## Phase 4 — Configure & Deploy the Blueprint\n\n### Configure the Blueprint\n\nConfigure host IPs, deployment paths, and LLM\u002FVLM endpoints in the `.env` file. With no extra flags this auto-detects HOST_IP\u002FEXTERNAL_IP and defaults to remote NIM endpoints:\n\n```bash\ncd \u003Cbp-repo>\n.\u002Fagentic\u002Fvss-sop-skills\u002Fvss-sop-deploy\u002Fscripts\u002Fconfigure_blueprint.sh --bp-repo .\n```\n\nFor local VLM (served by the DS-SOP container on port 8300):\n\n```bash\n.\u002Fagentic\u002Fvss-sop-skills\u002Fvss-sop-deploy\u002Fscripts\u002Fconfigure_blueprint.sh --bp-repo . --vlm-mode local\n```\n\nRun `configure_blueprint.sh --help` for the full set of options (`--llm-mode`, `--vlm-mode`, `--llm-base-url`, `--vlm-base-url`, `--llm-name`, `--vlm-name`).\n\nThis 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.\n\n> **Auto-configuration safety net:** If you skip this step, `deploy.sh` will detect the unconfigured placeholder and run `configure_blueprint.sh` automatically with default settings before starting services.\n\n### Run Deployment\n\nLog into NGC registry and start the blueprint Docker compose services:\n\n```bash\ncd \u003Cbp-repo>\n.\u002Fagentic\u002Fvss-sop-skills\u002Fvss-sop-deploy\u002Fscripts\u002Fdeploy.sh --bp-repo .\n```\n\n> **Note on Volume Permissions & Automatic Index Cleanup:** `deploy.sh` automatically pre-creates and configures all required bind-mounted data log directories (such as `kafka`, `elastic\u002Fdata`, `redis\u002Fdata`, etc.) with universal `777` permissions (using `sudo` if needed). This completely avoids container-level \"Permission denied\" errors.\n>\n> In addition, `deploy.sh` automatically cleans up old Elasticsearch (`elastic\u002Fdata` and `elastic\u002Flogs`) and Kafka data from prior runs before launching the containers. This prevents index pattern mapping pollution (such as stale `1970-01-01` date indices with old protobuf schemas) from interfering with wildcard queries or breaking Kibana visualization fields.\n\n### Monitor\n\n```bash\ndocker ps --format 'table {{.Names}}\\t{{.Status}}\\t{{.Ports}}'\n```\n\nDeploy is complete when all `mdx-*` containers show status `Up`.\n\n### Endpoints\n\n| Service | Endpoint |\n|---|---|\n| VSS-UI | `http:\u002F\u002F\u003CEXTERNAL_IP>:3000` |\n| Grafana-UI | `http:\u002F\u002F\u003CEXTERNAL_IP>:35000\u002F` |\n| Kibana-UI | `http:\u002F\u002F\u003CEXTERNAL_IP>:5601\u002Fapp\u002Fhome#\u002F` |\n| VIOS-UI | `http:\u002F\u002F\u003CEXTERNAL_IP>:30888\u002Fvst\u002F#\u002Fdashboard` |\n| Phoenix-UI (Telemetry) | `http:\u002F\u002F\u003CEXTERNAL_IP>:6006\u002Fprojects` |\n\n---\n\n## Phase 5 — Test with RTSP Stream\n\n### Trigger Client Test\n\nWith the RTSP streaming simulator already running, trigger the test client and monitor the integration:\n\n```bash\ncd \u003Cbp-repo>\n.\u002Fagentic\u002Fvss-sop-skills\u002Fvss-sop-deploy\u002Fscripts\u002Ftest_rtsp.sh --bp-repo .\n```\n\nThis automates:\n1. Polls `mdx-ds-sop-1` logs until the API server is fully up.\n2. Automatically triggers `.\u002Frun_rtsp_test.sh` in the background to register streams to VIOS.\n\n> **Self-Healing Integration Loop:** To completely avoid the stale RTSP factory bug (where subsequent client runs on `mdx-ds-sop-1` allocate random UDP ports but retain the old RTSP factory on port 8554, yielding 0 RTP bytes), `run_rtsp_test.sh` runs a continuous self-healing loop. If the ds-sop client exits or the connection is lost, the script automatically restarts the `mdx-ds-sop-1` container, waits for readiness, resets the VST sensors, and starts a fresh streaming session to resume recording automatically. This ensures continuous livestreaming and recording stability.\n\n---\n\n## Tear Down\n\nTo stop the services and clean up all data logs:\n\n```bash\ncd \u003Cbp-repo>\n.\u002Fagentic\u002Fvss-sop-skills\u002Fvss-sop-deploy\u002Fscripts\u002Fteardown.sh --bp-repo .\n```\n\n---\n\n## Error Handling\n\n- **Docker Socket Permissions \u002F Permission Denied:** All scripts (including `deploy.sh`, `teardown.sh`, `test_rtsp.sh`, `build_ds_sop.sh`, and `vss_sop_test.py`) are fully docker-group aware. If the current shell has inactive docker group membership but the user belongs to the `docker` group, the scripts will automatically re-execute themselves under the `sg docker` command wrapper to bypass socket permission errors. If sudo is required, they will prompt\u002Fre-run via sudo. You do not need to prefix commands with `sg docker` manually.\n- `unknown or invalid runtime name: nvidia` — NVIDIA Container Toolkit not installed or Docker not restarted. See [`references\u002Fprerequisites.md`](references\u002Fprerequisites.md).\n- NGC auth error — verify `ngc_api_key.txt` and ensure it is exported correctly.\n- `mdx-ds-sop-1` not starting — check model paths match between Phase 1 and `ds-sop\u002F.env`.\n- API server not ready — check `docker logs mdx-ds-sop-1` for errors or progress.\n- `MediaInfo.parse: Unsupported file type` error in `mdx-ds-sop-1` when downloading video from VST directly — Ensure that `use_base64: true` is set under `video_understanding` in `deployments\u002Fsop\u002Fvss-agent\u002Fconfigs\u002Fconfig.yml`. This forces the VSS Agent to send base64-encoded video instead of VST links, avoiding VST download parsing errors.\n- Kibana \"No field found for [llm.queries.response.keyword]\" or missing messages in ELK — Ensure `SOP_MESSAGING_SCHEMA=JSON` and `ENABLE_MESSAGING=1` are set in `deployments\u002Fds\u002Fds-sop\u002F.env` (automatically enforced by `configure_blueprint.sh`). See **vss-sop-build** SKILL.md § Error Handling for the full field name reference and validation steps.\n- UI shows `Failed to load image with src: http:\u002F\u002F\u003Cinternal-ip>:30888\u002F...` — `EXTERNAL_IP` in `.env` is a host-only address. Set it to the public\u002Fbrowser-reachable IP (see Phase 4) and recreate the agent container.\n\n---\n\n## License\n\nUse of this skill is governed by the [Creative Commons Attribution 4.0 International License (CC BY 4.0)](https:\u002F\u002Fcreativecommons.org\u002Flicenses\u002Fby\u002F4.0\u002Flegalcode.en) and the [Apache License, Version 2.0](https:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0).\n",{"data":35,"body":49},{"name":4,"description":6,"owner":9,"service":36,"version":37,"license":26,"reviewed":38,"metadata":39},"vss-sop","1.0.0","2026-06-23",{"openclaw":40,"author":44,"tags":45},{"emoji":41,"os":42},"🏗️",[43],"linux","Quan Vu \u003Cqvu@nvidia.com>",[46,47,48],"vss","sop","deploy",{"type":50,"children":51},"root",[52,61,67,74,79,84,118,124,158,164,170,250,263,269,276,367,373,435,441,446,452,457,516,521,566,571,619,623,629,663,669,674,720,725,771,774,780,793,838,858,861,867,880,897,902,944,947,953,959,972,1017,1022,1052,1108,1143,1173,1179,1184,1229,1321,1327,1366,1386,1392,1499,1502,1508,1514,1519,1565,1570,1599,1634,1637,1643,1648,1693,1696,1702,1951,1954,1960,1983],{"type":53,"tag":54,"props":55,"children":57},"element","h1",{"id":56},"vss-sop-build-ds-sop-deploy",[58],{"type":59,"value":60},"text","VSS SOP — Build DS-SOP & Deploy",{"type":53,"tag":62,"props":63,"children":64},"p",{},[65],{"type":59,"value":66},"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.",{"type":53,"tag":68,"props":69,"children":71},"h2",{"id":70},"overview",[72],{"type":59,"value":73},"Overview",{"type":53,"tag":62,"props":75,"children":76},{},[77],{"type":59,"value":78},"Use this skill when deploying or tearing down the VSS SOP blueprint, starting RTSP simulations, or validating prerequisites.",{"type":53,"tag":62,"props":80,"children":81},{},[82],{"type":59,"value":83},"Key operations:",{"type":53,"tag":85,"props":86,"children":87},"ul",{},[88,94,108,113],{"type":53,"tag":89,"props":90,"children":91},"li",{},[92],{"type":59,"value":93},"Verifying host requirements and Docker setups.",{"type":53,"tag":89,"props":95,"children":96},{},[97,99,106],{"type":59,"value":98},"Downloading assets and checkpoints under ",{"type":53,"tag":100,"props":101,"children":103},"code",{"className":102},[],[104],{"type":59,"value":105},"\u002Fopt",{"type":59,"value":107},".",{"type":53,"tag":89,"props":109,"children":110},{},[111],{"type":59,"value":112},"Creating RTSP simulation streams.",{"type":53,"tag":89,"props":114,"children":115},{},[116],{"type":59,"value":117},"Configuring host environments and deploying compose services.",{"type":53,"tag":68,"props":119,"children":121},{"id":120},"prerequisites",[122],{"type":59,"value":123},"Prerequisites",{"type":53,"tag":85,"props":125,"children":126},{},[127,138,148],{"type":53,"tag":89,"props":128,"children":129},{},[130,136],{"type":53,"tag":131,"props":132,"children":133},"strong",{},[134],{"type":59,"value":135},"Hardware:",{"type":59,"value":137}," H100 \u002F H200 \u002F A100 GPU (>= 80 GB VRAM).",{"type":53,"tag":89,"props":139,"children":140},{},[141,146],{"type":53,"tag":131,"props":142,"children":143},{},[144],{"type":59,"value":145},"Driver:",{"type":59,"value":147}," NVIDIA Driver 580 with CUDA 13.",{"type":53,"tag":89,"props":149,"children":150},{},[151,156],{"type":53,"tag":131,"props":152,"children":153},{},[154],{"type":59,"value":155},"NGC Keys:",{"type":59,"value":157}," Registered with subscription access to Metropolis data bundles.",{"type":53,"tag":68,"props":159,"children":161},{"id":160},"instructions",[162],{"type":59,"value":163},"Instructions",{"type":53,"tag":68,"props":165,"children":167},{"id":166},"requirements",[168],{"type":59,"value":169},"Requirements",{"type":53,"tag":171,"props":172,"children":173},"table",{},[174,193],{"type":53,"tag":175,"props":176,"children":177},"thead",{},[178],{"type":53,"tag":179,"props":180,"children":181},"tr",{},[182,188],{"type":53,"tag":183,"props":184,"children":185},"th",{},[186],{"type":59,"value":187},"Item",{"type":53,"tag":183,"props":189,"children":190},{},[191],{"type":59,"value":192},"Value",{"type":53,"tag":194,"props":195,"children":196},"tbody",{},[197,211,224,237],{"type":53,"tag":179,"props":198,"children":199},{},[200,206],{"type":53,"tag":201,"props":202,"children":203},"td",{},[204],{"type":59,"value":205},"CUDA",{"type":53,"tag":201,"props":207,"children":208},{},[209],{"type":59,"value":210},"13",{"type":53,"tag":179,"props":212,"children":213},{},[214,219],{"type":53,"tag":201,"props":215,"children":216},{},[217],{"type":59,"value":218},"Driver",{"type":53,"tag":201,"props":220,"children":221},{},[222],{"type":59,"value":223},"580",{"type":53,"tag":179,"props":225,"children":226},{},[227,232],{"type":53,"tag":201,"props":228,"children":229},{},[230],{"type":59,"value":231},"Hardware",{"type":53,"tag":201,"props":233,"children":234},{},[235],{"type":59,"value":236},"H100 \u002F H200 \u002F A100",{"type":53,"tag":179,"props":238,"children":239},{},[240,245],{"type":53,"tag":201,"props":241,"children":242},{},[243],{"type":59,"value":244},"GPU",{"type":53,"tag":201,"props":246,"children":247},{},[248],{"type":59,"value":249},">= 80 GB VRAM, >= 1 GPU",{"type":53,"tag":62,"props":251,"children":252},{},[253,255,261],{"type":59,"value":254},"Software: Docker, NVIDIA Container Toolkit 1.18.1, NVIDIA Driver 580, ",{"type":53,"tag":100,"props":256,"children":258},{"className":257},[],[259],{"type":59,"value":260},"ngc",{"type":59,"value":262}," CLI.",{"type":53,"tag":68,"props":264,"children":266},{"id":265},"examples",[267],{"type":59,"value":268},"Examples",{"type":53,"tag":270,"props":271,"children":273},"h3",{"id":272},"run-deploy-setup",[274],{"type":59,"value":275},"Run Deploy Setup",{"type":53,"tag":277,"props":278,"children":283},"pre",{"className":279,"code":280,"language":281,"meta":282,"style":282},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Configure blueprint environment variables\n.\u002Fagentic\u002Fvss-sop-skills\u002Fvss-sop-deploy\u002Fscripts\u002Fconfigure_blueprint.sh --bp-repo . --vlm-mode local\n\n# Start the full deployment stack\n.\u002Fagentic\u002Fvss-sop-skills\u002Fvss-sop-deploy\u002Fscripts\u002Fdeploy.sh --bp-repo .\n","bash","",[284],{"type":53,"tag":100,"props":285,"children":286},{"__ignoreMap":282},[287,299,330,340,349],{"type":53,"tag":288,"props":289,"children":292},"span",{"class":290,"line":291},"line",1,[293],{"type":53,"tag":288,"props":294,"children":296},{"style":295},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[297],{"type":59,"value":298},"# Configure blueprint environment variables\n",{"type":53,"tag":288,"props":300,"children":302},{"class":290,"line":301},2,[303,309,315,320,325],{"type":53,"tag":288,"props":304,"children":306},{"style":305},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[307],{"type":59,"value":308},".\u002Fagentic\u002Fvss-sop-skills\u002Fvss-sop-deploy\u002Fscripts\u002Fconfigure_blueprint.sh",{"type":53,"tag":288,"props":310,"children":312},{"style":311},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[313],{"type":59,"value":314}," --bp-repo",{"type":53,"tag":288,"props":316,"children":317},{"style":311},[318],{"type":59,"value":319}," .",{"type":53,"tag":288,"props":321,"children":322},{"style":311},[323],{"type":59,"value":324}," --vlm-mode",{"type":53,"tag":288,"props":326,"children":327},{"style":311},[328],{"type":59,"value":329}," local\n",{"type":53,"tag":288,"props":331,"children":333},{"class":290,"line":332},3,[334],{"type":53,"tag":288,"props":335,"children":337},{"emptyLinePlaceholder":336},true,[338],{"type":59,"value":339},"\n",{"type":53,"tag":288,"props":341,"children":343},{"class":290,"line":342},4,[344],{"type":53,"tag":288,"props":345,"children":346},{"style":295},[347],{"type":59,"value":348},"# Start the full deployment stack\n",{"type":53,"tag":288,"props":350,"children":352},{"class":290,"line":351},5,[353,358,362],{"type":53,"tag":288,"props":354,"children":355},{"style":305},[356],{"type":59,"value":357},".\u002Fagentic\u002Fvss-sop-skills\u002Fvss-sop-deploy\u002Fscripts\u002Fdeploy.sh",{"type":53,"tag":288,"props":359,"children":360},{"style":311},[361],{"type":59,"value":314},{"type":53,"tag":288,"props":363,"children":364},{"style":311},[365],{"type":59,"value":366}," .\n",{"type":53,"tag":270,"props":368,"children":370},{"id":369},"manage-simulation-and-teardown",[371],{"type":59,"value":372},"Manage Simulation and Teardown",{"type":53,"tag":277,"props":374,"children":376},{"className":279,"code":375,"language":281,"meta":282,"style":282},"# Start simulation stream on rtsp:\u002F\u002Flocalhost:8552\u002Fsensor_0\n.\u002Fagentic\u002Fvss-sop-skills\u002Fvss-sop-deploy\u002Fscripts\u002Fstart_rtsp_server.sh --bp-repo .\n\n# Tear down the deployment and clean volumes\n.\u002Fagentic\u002Fvss-sop-skills\u002Fvss-sop-deploy\u002Fscripts\u002Fteardown.sh --bp-repo .\n",[377],{"type":53,"tag":100,"props":378,"children":379},{"__ignoreMap":282},[380,388,404,411,419],{"type":53,"tag":288,"props":381,"children":382},{"class":290,"line":291},[383],{"type":53,"tag":288,"props":384,"children":385},{"style":295},[386],{"type":59,"value":387},"# Start simulation stream on rtsp:\u002F\u002Flocalhost:8552\u002Fsensor_0\n",{"type":53,"tag":288,"props":389,"children":390},{"class":290,"line":301},[391,396,400],{"type":53,"tag":288,"props":392,"children":393},{"style":305},[394],{"type":59,"value":395},".\u002Fagentic\u002Fvss-sop-skills\u002Fvss-sop-deploy\u002Fscripts\u002Fstart_rtsp_server.sh",{"type":53,"tag":288,"props":397,"children":398},{"style":311},[399],{"type":59,"value":314},{"type":53,"tag":288,"props":401,"children":402},{"style":311},[403],{"type":59,"value":366},{"type":53,"tag":288,"props":405,"children":406},{"class":290,"line":332},[407],{"type":53,"tag":288,"props":408,"children":409},{"emptyLinePlaceholder":336},[410],{"type":59,"value":339},{"type":53,"tag":288,"props":412,"children":413},{"class":290,"line":342},[414],{"type":53,"tag":288,"props":415,"children":416},{"style":295},[417],{"type":59,"value":418},"# Tear down the deployment and clean volumes\n",{"type":53,"tag":288,"props":420,"children":421},{"class":290,"line":351},[422,427,431],{"type":53,"tag":288,"props":423,"children":424},{"style":305},[425],{"type":59,"value":426},".\u002Fagentic\u002Fvss-sop-skills\u002Fvss-sop-deploy\u002Fscripts\u002Fteardown.sh",{"type":53,"tag":288,"props":428,"children":429},{"style":311},[430],{"type":59,"value":314},{"type":53,"tag":288,"props":432,"children":433},{"style":311},[434],{"type":59,"value":366},{"type":53,"tag":68,"props":436,"children":438},{"id":437},"phase-0-prerequisites-check-auto-install",[439],{"type":59,"value":440},"Phase 0 — Prerequisites Check & Auto-Install",{"type":53,"tag":62,"props":442,"children":443},{},[444],{"type":59,"value":445},"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.",{"type":53,"tag":270,"props":447,"children":449},{"id":448},"run-pre-flight-checks-and-auto-install",[450],{"type":59,"value":451},"Run Pre-flight Checks and Auto-Install",{"type":53,"tag":62,"props":453,"children":454},{},[455],{"type":59,"value":456},"To run the checks and automatically fix\u002Finstall any missing components (such as NVIDIA Driver 580, CUDA Toolkit 13, Docker, Docker Compose, NVIDIA Container Toolkit, NGC CLI, and NGC CLI configuration):",{"type":53,"tag":277,"props":458,"children":460},{"className":279,"code":459,"language":281,"meta":282,"style":282},"cd \u003Cbp-repo>\n.\u002Fagentic\u002Fvss-sop-skills\u002Fvss-sop-deploy\u002Fscripts\u002Fpreflight_check.sh --bp-repo . --fix\n",[461],{"type":53,"tag":100,"props":462,"children":463},{"__ignoreMap":282},[464,495],{"type":53,"tag":288,"props":465,"children":466},{"class":290,"line":291},[467,473,479,484,490],{"type":53,"tag":288,"props":468,"children":470},{"style":469},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[471],{"type":59,"value":472},"cd",{"type":53,"tag":288,"props":474,"children":476},{"style":475},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[477],{"type":59,"value":478}," \u003C",{"type":53,"tag":288,"props":480,"children":481},{"style":311},[482],{"type":59,"value":483},"bp-rep",{"type":53,"tag":288,"props":485,"children":487},{"style":486},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[488],{"type":59,"value":489},"o",{"type":53,"tag":288,"props":491,"children":492},{"style":475},[493],{"type":59,"value":494},">\n",{"type":53,"tag":288,"props":496,"children":497},{"class":290,"line":301},[498,503,507,511],{"type":53,"tag":288,"props":499,"children":500},{"style":305},[501],{"type":59,"value":502},".\u002Fagentic\u002Fvss-sop-skills\u002Fvss-sop-deploy\u002Fscripts\u002Fpreflight_check.sh",{"type":53,"tag":288,"props":504,"children":505},{"style":311},[506],{"type":59,"value":314},{"type":53,"tag":288,"props":508,"children":509},{"style":311},[510],{"type":59,"value":319},{"type":53,"tag":288,"props":512,"children":513},{"style":311},[514],{"type":59,"value":515}," --fix\n",{"type":53,"tag":62,"props":517,"children":518},{},[519],{"type":59,"value":520},"If you only want to run the checks without modifying your system:",{"type":53,"tag":277,"props":522,"children":524},{"className":279,"code":523,"language":281,"meta":282,"style":282},"cd \u003Cbp-repo>\n.\u002Fagentic\u002Fvss-sop-skills\u002Fvss-sop-deploy\u002Fscripts\u002Fpreflight_check.sh --bp-repo .\n",[525],{"type":53,"tag":100,"props":526,"children":527},{"__ignoreMap":282},[528,551],{"type":53,"tag":288,"props":529,"children":530},{"class":290,"line":291},[531,535,539,543,547],{"type":53,"tag":288,"props":532,"children":533},{"style":469},[534],{"type":59,"value":472},{"type":53,"tag":288,"props":536,"children":537},{"style":475},[538],{"type":59,"value":478},{"type":53,"tag":288,"props":540,"children":541},{"style":311},[542],{"type":59,"value":483},{"type":53,"tag":288,"props":544,"children":545},{"style":486},[546],{"type":59,"value":489},{"type":53,"tag":288,"props":548,"children":549},{"style":475},[550],{"type":59,"value":494},{"type":53,"tag":288,"props":552,"children":553},{"class":290,"line":301},[554,558,562],{"type":53,"tag":288,"props":555,"children":556},{"style":305},[557],{"type":59,"value":502},{"type":53,"tag":288,"props":559,"children":560},{"style":311},[561],{"type":59,"value":314},{"type":53,"tag":288,"props":563,"children":564},{"style":311},[565],{"type":59,"value":366},{"type":53,"tag":62,"props":567,"children":568},{},[569],{"type":59,"value":570},"If any manual check fails, refer to the printed advice or the following documentation to resolve the issue:",{"type":53,"tag":85,"props":572,"children":573},{},[574,591,605],{"type":53,"tag":89,"props":575,"children":576},{},[577,579,589],{"type":59,"value":578},"Secret keys: See ",{"type":53,"tag":580,"props":581,"children":583},"a",{"href":582},"references\u002Fngc.md",[584],{"type":53,"tag":100,"props":585,"children":587},{"className":586},[],[588],{"type":59,"value":582},{"type":59,"value":590}," § Configure NGC API Key",{"type":53,"tag":89,"props":592,"children":593},{},[594,596],{"type":59,"value":595},"NVIDIA driver: See ",{"type":53,"tag":580,"props":597,"children":599},{"href":598},"references\u002Fnvidia_driver.md",[600],{"type":53,"tag":100,"props":601,"children":603},{"className":602},[],[604],{"type":59,"value":598},{"type":53,"tag":89,"props":606,"children":607},{},[608,610],{"type":59,"value":609},"Docker & Toolkit: See ",{"type":53,"tag":580,"props":611,"children":613},{"href":612},"references\u002Fprerequisites.md",[614],{"type":53,"tag":100,"props":615,"children":617},{"className":616},[],[618],{"type":59,"value":612},{"type":53,"tag":620,"props":621,"children":622},"hr",{},[],{"type":53,"tag":68,"props":624,"children":626},{"id":625},"phase-1-verify-models-download-assets",[627],{"type":59,"value":628},"Phase 1 — Verify Models & Download Assets",{"type":53,"tag":62,"props":630,"children":631},{},[632,634,640,642,648,650,655,656,661],{"type":59,"value":633},"Verify that the trained model and config files exist under ",{"type":53,"tag":100,"props":635,"children":637},{"className":636},[],[638],{"type":59,"value":639},"\u002Fopt\u002Fmodels\u002F...",{"type":59,"value":641}," and ",{"type":53,"tag":100,"props":643,"children":645},{"className":644},[],[646],{"type":59,"value":647},"\u002Fopt\u002Fsop\u002F...",{"type":59,"value":649}," directories. For optimal accuracy, you must retrain\u002Ffine-tune the models, which can be done using the SOP Training Blueprint. After training, move model and config to ",{"type":53,"tag":100,"props":651,"children":653},{"className":652},[],[654],{"type":59,"value":639},{"type":59,"value":641},{"type":53,"tag":100,"props":657,"children":659},{"className":658},[],[660],{"type":59,"value":647},{"type":59,"value":662}," directories. Download the sample video, re-encode it to H.264 at 30 FPS, and prepare cache\u002Fdatalog directories.",{"type":53,"tag":270,"props":664,"children":666},{"id":665},"run-asset-download-and-preparation",[667],{"type":59,"value":668},"Run Asset Download and Preparation",{"type":53,"tag":62,"props":670,"children":671},{},[672],{"type":59,"value":673},"To execute this entire pipeline:",{"type":53,"tag":277,"props":675,"children":677},{"className":279,"code":676,"language":281,"meta":282,"style":282},"cd \u003Cbp-repo>\n.\u002Fagentic\u002Fvss-sop-skills\u002Fvss-sop-deploy\u002Fscripts\u002Fdownload_assets.sh --bp-repo .\n",[678],{"type":53,"tag":100,"props":679,"children":680},{"__ignoreMap":282},[681,704],{"type":53,"tag":288,"props":682,"children":683},{"class":290,"line":291},[684,688,692,696,700],{"type":53,"tag":288,"props":685,"children":686},{"style":469},[687],{"type":59,"value":472},{"type":53,"tag":288,"props":689,"children":690},{"style":475},[691],{"type":59,"value":478},{"type":53,"tag":288,"props":693,"children":694},{"style":311},[695],{"type":59,"value":483},{"type":53,"tag":288,"props":697,"children":698},{"style":486},[699],{"type":59,"value":489},{"type":53,"tag":288,"props":701,"children":702},{"style":475},[703],{"type":59,"value":494},{"type":53,"tag":288,"props":705,"children":706},{"class":290,"line":301},[707,712,716],{"type":53,"tag":288,"props":708,"children":709},{"style":305},[710],{"type":59,"value":711},".\u002Fagentic\u002Fvss-sop-skills\u002Fvss-sop-deploy\u002Fscripts\u002Fdownload_assets.sh",{"type":53,"tag":288,"props":713,"children":714},{"style":311},[715],{"type":59,"value":314},{"type":53,"tag":288,"props":717,"children":718},{"style":311},[719],{"type":59,"value":366},{"type":53,"tag":62,"props":721,"children":722},{},[723],{"type":59,"value":724},"This automates the following actions:",{"type":53,"tag":85,"props":726,"children":727},{},[728,748,753,766],{"type":53,"tag":89,"props":729,"children":730},{},[731,733,739,740,746],{"type":59,"value":732},"Checks that the required model and config files exist under ",{"type":53,"tag":100,"props":734,"children":736},{"className":735},[],[737],{"type":59,"value":738},"\u002Fopt\u002Fmodels",{"type":59,"value":641},{"type":53,"tag":100,"props":741,"children":743},{"className":742},[],[744],{"type":59,"value":745},"\u002Fopt\u002Fsop",{"type":59,"value":747},". If not, prompts the user to retrain\u002Ffine-tune the models using the SOP Training Blueprint.",{"type":53,"tag":89,"props":749,"children":750},{},[751],{"type":59,"value":752},"Downloads the sample RTSP video.",{"type":53,"tag":89,"props":754,"children":755},{},[756,758,764],{"type":59,"value":757},"Installs ",{"type":53,"tag":100,"props":759,"children":761},{"className":760},[],[762],{"type":59,"value":763},"ffmpeg",{"type":59,"value":765}," (if missing) and re-encodes the sample video to H.264 at 30 FPS.",{"type":53,"tag":89,"props":767,"children":768},{},[769],{"type":59,"value":770},"Configures local cache permissions and pre-creates all bind-mounted data log directories (e.g., Kafka, Elasticsearch) with universal read\u002Fwrite permissions to prevent container startup failures.",{"type":53,"tag":620,"props":772,"children":773},{},[],{"type":53,"tag":68,"props":775,"children":777},{"id":776},"phase-2-start-rtsp-server-simulation",[778],{"type":59,"value":779},"Phase 2 — Start RTSP Server Simulation",{"type":53,"tag":62,"props":781,"children":782},{},[783,785,791],{"type":59,"value":784},"The RTSP stream simulator is started in this phase — ahead of the build, verification, and deployment steps that follow — so a live stream (",{"type":53,"tag":100,"props":786,"children":788},{"className":787},[],[789],{"type":59,"value":790},"rtsp:\u002F\u002Flocalhost:8552\u002Fsensor_0",{"type":59,"value":792},") is available for the end-to-end ingestion testing in later phases.",{"type":53,"tag":277,"props":794,"children":796},{"className":279,"code":795,"language":281,"meta":282,"style":282},"cd \u003Cbp-repo>\n.\u002Fagentic\u002Fvss-sop-skills\u002Fvss-sop-deploy\u002Fscripts\u002Fstart_rtsp_server.sh --bp-repo .\n",[797],{"type":53,"tag":100,"props":798,"children":799},{"__ignoreMap":282},[800,823],{"type":53,"tag":288,"props":801,"children":802},{"class":290,"line":291},[803,807,811,815,819],{"type":53,"tag":288,"props":804,"children":805},{"style":469},[806],{"type":59,"value":472},{"type":53,"tag":288,"props":808,"children":809},{"style":475},[810],{"type":59,"value":478},{"type":53,"tag":288,"props":812,"children":813},{"style":311},[814],{"type":59,"value":483},{"type":53,"tag":288,"props":816,"children":817},{"style":486},[818],{"type":59,"value":489},{"type":53,"tag":288,"props":820,"children":821},{"style":475},[822],{"type":59,"value":494},{"type":53,"tag":288,"props":824,"children":825},{"class":290,"line":301},[826,830,834],{"type":53,"tag":288,"props":827,"children":828},{"style":305},[829],{"type":59,"value":395},{"type":53,"tag":288,"props":831,"children":832},{"style":311},[833],{"type":59,"value":314},{"type":53,"tag":288,"props":835,"children":836},{"style":311},[837],{"type":59,"value":366},{"type":53,"tag":62,"props":839,"children":840},{},[841,843,849,851,856],{"type":59,"value":842},"This installs RTSP server prerequisites and starts ",{"type":53,"tag":100,"props":844,"children":846},{"className":845},[],[847],{"type":59,"value":848},"rtsp_server.py",{"type":59,"value":850}," serving on ",{"type":53,"tag":100,"props":852,"children":854},{"className":853},[],[855],{"type":59,"value":790},{"type":59,"value":857}," in the background (which wraps raw MP4 footage and streams it in real time).",{"type":53,"tag":620,"props":859,"children":860},{},[],{"type":53,"tag":68,"props":862,"children":864},{"id":863},"phase-3-build-ds-sop-docker-image-verify-components",[865],{"type":59,"value":866},"Phase 3 — Build DS-SOP Docker Image & Verify Components",{"type":53,"tag":62,"props":868,"children":869},{},[870,872,878],{"type":59,"value":871},"To build the ",{"type":53,"tag":100,"props":873,"children":875},{"className":874},[],[876],{"type":59,"value":877},"ds-sop:1.0.0",{"type":59,"value":879}," Docker image and verify its RTSP components, refer to the detailed reference documentation:",{"type":53,"tag":85,"props":881,"children":882},{},[883],{"type":53,"tag":89,"props":884,"children":885},{},[886,888],{"type":59,"value":887},"See ",{"type":53,"tag":580,"props":889,"children":891},{"href":890},"references\u002Fbuild_ds_sop_image.md",[892],{"type":53,"tag":100,"props":893,"children":895},{"className":894},[],[896],{"type":59,"value":890},{"type":53,"tag":62,"props":898,"children":899},{},[900],{"type":59,"value":901},"This reference covers:",{"type":53,"tag":903,"props":904,"children":905},"ol",{},[906,927,932],{"type":53,"tag":89,"props":907,"children":908},{},[909,911,917,919,925],{"type":59,"value":910},"Generating the DeepStream SOP source code with the ds-sop-skills skill (into ",{"type":53,"tag":100,"props":912,"children":914},{"className":913},[],[915],{"type":59,"value":916},"ds_sop_microservice",{"type":59,"value":918},") — RTSP streaming output is opt-in (ds-sop-skills § 18) and must be requested in the generation prompt (",{"type":53,"tag":920,"props":921,"children":922},"em",{},[923],{"type":59,"value":924},"\"with rtsp streaming output feature\"",{"type":59,"value":926},").",{"type":53,"tag":89,"props":928,"children":929},{},[930],{"type":59,"value":931},"Building the container image with BuildKit support (no patch step — the generated source is built as-is).",{"type":53,"tag":89,"props":933,"children":934},{},[935,937,943],{"type":59,"value":936},"Verifying the RTSP components (the 6 pre-flight container checks run by ",{"type":53,"tag":100,"props":938,"children":940},{"className":939},[],[941],{"type":59,"value":942},"verify_rtsp_components.py",{"type":59,"value":926},{"type":53,"tag":620,"props":945,"children":946},{},[],{"type":53,"tag":68,"props":948,"children":950},{"id":949},"phase-4-configure-deploy-the-blueprint",[951],{"type":59,"value":952},"Phase 4 — Configure & Deploy the Blueprint",{"type":53,"tag":270,"props":954,"children":956},{"id":955},"configure-the-blueprint",[957],{"type":59,"value":958},"Configure the Blueprint",{"type":53,"tag":62,"props":960,"children":961},{},[962,964,970],{"type":59,"value":963},"Configure host IPs, deployment paths, and LLM\u002FVLM endpoints in the ",{"type":53,"tag":100,"props":965,"children":967},{"className":966},[],[968],{"type":59,"value":969},".env",{"type":59,"value":971}," file. With no extra flags this auto-detects HOST_IP\u002FEXTERNAL_IP and defaults to remote NIM endpoints:",{"type":53,"tag":277,"props":973,"children":975},{"className":279,"code":974,"language":281,"meta":282,"style":282},"cd \u003Cbp-repo>\n.\u002Fagentic\u002Fvss-sop-skills\u002Fvss-sop-deploy\u002Fscripts\u002Fconfigure_blueprint.sh --bp-repo .\n",[976],{"type":53,"tag":100,"props":977,"children":978},{"__ignoreMap":282},[979,1002],{"type":53,"tag":288,"props":980,"children":981},{"class":290,"line":291},[982,986,990,994,998],{"type":53,"tag":288,"props":983,"children":984},{"style":469},[985],{"type":59,"value":472},{"type":53,"tag":288,"props":987,"children":988},{"style":475},[989],{"type":59,"value":478},{"type":53,"tag":288,"props":991,"children":992},{"style":311},[993],{"type":59,"value":483},{"type":53,"tag":288,"props":995,"children":996},{"style":486},[997],{"type":59,"value":489},{"type":53,"tag":288,"props":999,"children":1000},{"style":475},[1001],{"type":59,"value":494},{"type":53,"tag":288,"props":1003,"children":1004},{"class":290,"line":301},[1005,1009,1013],{"type":53,"tag":288,"props":1006,"children":1007},{"style":305},[1008],{"type":59,"value":308},{"type":53,"tag":288,"props":1010,"children":1011},{"style":311},[1012],{"type":59,"value":314},{"type":53,"tag":288,"props":1014,"children":1015},{"style":311},[1016],{"type":59,"value":366},{"type":53,"tag":62,"props":1018,"children":1019},{},[1020],{"type":59,"value":1021},"For local VLM (served by the DS-SOP container on port 8300):",{"type":53,"tag":277,"props":1023,"children":1025},{"className":279,"code":1024,"language":281,"meta":282,"style":282},".\u002Fagentic\u002Fvss-sop-skills\u002Fvss-sop-deploy\u002Fscripts\u002Fconfigure_blueprint.sh --bp-repo . --vlm-mode local\n",[1026],{"type":53,"tag":100,"props":1027,"children":1028},{"__ignoreMap":282},[1029],{"type":53,"tag":288,"props":1030,"children":1031},{"class":290,"line":291},[1032,1036,1040,1044,1048],{"type":53,"tag":288,"props":1033,"children":1034},{"style":305},[1035],{"type":59,"value":308},{"type":53,"tag":288,"props":1037,"children":1038},{"style":311},[1039],{"type":59,"value":314},{"type":53,"tag":288,"props":1041,"children":1042},{"style":311},[1043],{"type":59,"value":319},{"type":53,"tag":288,"props":1045,"children":1046},{"style":311},[1047],{"type":59,"value":324},{"type":53,"tag":288,"props":1049,"children":1050},{"style":311},[1051],{"type":59,"value":329},{"type":53,"tag":62,"props":1053,"children":1054},{},[1055,1057,1063,1065,1071,1073,1079,1080,1086,1087,1093,1094,1100,1101,1107],{"type":59,"value":1056},"Run ",{"type":53,"tag":100,"props":1058,"children":1060},{"className":1059},[],[1061],{"type":59,"value":1062},"configure_blueprint.sh --help",{"type":59,"value":1064}," for the full set of options (",{"type":53,"tag":100,"props":1066,"children":1068},{"className":1067},[],[1069],{"type":59,"value":1070},"--llm-mode",{"type":59,"value":1072},", ",{"type":53,"tag":100,"props":1074,"children":1076},{"className":1075},[],[1077],{"type":59,"value":1078},"--vlm-mode",{"type":59,"value":1072},{"type":53,"tag":100,"props":1081,"children":1083},{"className":1082},[],[1084],{"type":59,"value":1085},"--llm-base-url",{"type":59,"value":1072},{"type":53,"tag":100,"props":1088,"children":1090},{"className":1089},[],[1091],{"type":59,"value":1092},"--vlm-base-url",{"type":59,"value":1072},{"type":53,"tag":100,"props":1095,"children":1097},{"className":1096},[],[1098],{"type":59,"value":1099},"--llm-name",{"type":59,"value":1072},{"type":53,"tag":100,"props":1102,"children":1104},{"className":1103},[],[1105],{"type":59,"value":1106},"--vlm-name",{"type":59,"value":926},{"type":53,"tag":62,"props":1109,"children":1110},{},[1111,1113,1119,1121,1127,1128,1134,1136,1141],{"type":59,"value":1112},"This script also enforces ",{"type":53,"tag":100,"props":1114,"children":1116},{"className":1115},[],[1117],{"type":59,"value":1118},"use_base64: true",{"type":59,"value":1120}," in ",{"type":53,"tag":100,"props":1122,"children":1124},{"className":1123},[],[1125],{"type":59,"value":1126},"config.yml",{"type":59,"value":641},{"type":53,"tag":100,"props":1129,"children":1131},{"className":1130},[],[1132],{"type":59,"value":1133},"SOP_MESSAGING_SCHEMA=JSON",{"type":59,"value":1135}," in the DS-SOP ",{"type":53,"tag":100,"props":1137,"children":1139},{"className":1138},[],[1140],{"type":59,"value":969},{"type":59,"value":1142}," — both are required for correct Kibana field mapping and video understanding.",{"type":53,"tag":1144,"props":1145,"children":1146},"blockquote",{},[1147],{"type":53,"tag":62,"props":1148,"children":1149},{},[1150,1155,1157,1163,1165,1171],{"type":53,"tag":131,"props":1151,"children":1152},{},[1153],{"type":59,"value":1154},"Auto-configuration safety net:",{"type":59,"value":1156}," If you skip this step, ",{"type":53,"tag":100,"props":1158,"children":1160},{"className":1159},[],[1161],{"type":59,"value":1162},"deploy.sh",{"type":59,"value":1164}," will detect the unconfigured placeholder and run ",{"type":53,"tag":100,"props":1166,"children":1168},{"className":1167},[],[1169],{"type":59,"value":1170},"configure_blueprint.sh",{"type":59,"value":1172}," automatically with default settings before starting services.",{"type":53,"tag":270,"props":1174,"children":1176},{"id":1175},"run-deployment",[1177],{"type":59,"value":1178},"Run Deployment",{"type":53,"tag":62,"props":1180,"children":1181},{},[1182],{"type":59,"value":1183},"Log into NGC registry and start the blueprint Docker compose services:",{"type":53,"tag":277,"props":1185,"children":1187},{"className":279,"code":1186,"language":281,"meta":282,"style":282},"cd \u003Cbp-repo>\n.\u002Fagentic\u002Fvss-sop-skills\u002Fvss-sop-deploy\u002Fscripts\u002Fdeploy.sh --bp-repo .\n",[1188],{"type":53,"tag":100,"props":1189,"children":1190},{"__ignoreMap":282},[1191,1214],{"type":53,"tag":288,"props":1192,"children":1193},{"class":290,"line":291},[1194,1198,1202,1206,1210],{"type":53,"tag":288,"props":1195,"children":1196},{"style":469},[1197],{"type":59,"value":472},{"type":53,"tag":288,"props":1199,"children":1200},{"style":475},[1201],{"type":59,"value":478},{"type":53,"tag":288,"props":1203,"children":1204},{"style":311},[1205],{"type":59,"value":483},{"type":53,"tag":288,"props":1207,"children":1208},{"style":486},[1209],{"type":59,"value":489},{"type":53,"tag":288,"props":1211,"children":1212},{"style":475},[1213],{"type":59,"value":494},{"type":53,"tag":288,"props":1215,"children":1216},{"class":290,"line":301},[1217,1221,1225],{"type":53,"tag":288,"props":1218,"children":1219},{"style":305},[1220],{"type":59,"value":357},{"type":53,"tag":288,"props":1222,"children":1223},{"style":311},[1224],{"type":59,"value":314},{"type":53,"tag":288,"props":1226,"children":1227},{"style":311},[1228],{"type":59,"value":366},{"type":53,"tag":1144,"props":1230,"children":1231},{},[1232,1287],{"type":53,"tag":62,"props":1233,"children":1234},{},[1235,1240,1242,1247,1249,1255,1256,1262,1263,1269,1271,1277,1279,1285],{"type":53,"tag":131,"props":1236,"children":1237},{},[1238],{"type":59,"value":1239},"Note on Volume Permissions & Automatic Index Cleanup:",{"type":59,"value":1241}," ",{"type":53,"tag":100,"props":1243,"children":1245},{"className":1244},[],[1246],{"type":59,"value":1162},{"type":59,"value":1248}," automatically pre-creates and configures all required bind-mounted data log directories (such as ",{"type":53,"tag":100,"props":1250,"children":1252},{"className":1251},[],[1253],{"type":59,"value":1254},"kafka",{"type":59,"value":1072},{"type":53,"tag":100,"props":1257,"children":1259},{"className":1258},[],[1260],{"type":59,"value":1261},"elastic\u002Fdata",{"type":59,"value":1072},{"type":53,"tag":100,"props":1264,"children":1266},{"className":1265},[],[1267],{"type":59,"value":1268},"redis\u002Fdata",{"type":59,"value":1270},", etc.) with universal ",{"type":53,"tag":100,"props":1272,"children":1274},{"className":1273},[],[1275],{"type":59,"value":1276},"777",{"type":59,"value":1278}," permissions (using ",{"type":53,"tag":100,"props":1280,"children":1282},{"className":1281},[],[1283],{"type":59,"value":1284},"sudo",{"type":59,"value":1286}," if needed). This completely avoids container-level \"Permission denied\" errors.",{"type":53,"tag":62,"props":1288,"children":1289},{},[1290,1292,1297,1299,1304,1305,1311,1313,1319],{"type":59,"value":1291},"In addition, ",{"type":53,"tag":100,"props":1293,"children":1295},{"className":1294},[],[1296],{"type":59,"value":1162},{"type":59,"value":1298}," automatically cleans up old Elasticsearch (",{"type":53,"tag":100,"props":1300,"children":1302},{"className":1301},[],[1303],{"type":59,"value":1261},{"type":59,"value":641},{"type":53,"tag":100,"props":1306,"children":1308},{"className":1307},[],[1309],{"type":59,"value":1310},"elastic\u002Flogs",{"type":59,"value":1312},") and Kafka data from prior runs before launching the containers. This prevents index pattern mapping pollution (such as stale ",{"type":53,"tag":100,"props":1314,"children":1316},{"className":1315},[],[1317],{"type":59,"value":1318},"1970-01-01",{"type":59,"value":1320}," date indices with old protobuf schemas) from interfering with wildcard queries or breaking Kibana visualization fields.",{"type":53,"tag":270,"props":1322,"children":1324},{"id":1323},"monitor",[1325],{"type":59,"value":1326},"Monitor",{"type":53,"tag":277,"props":1328,"children":1330},{"className":279,"code":1329,"language":281,"meta":282,"style":282},"docker ps --format 'table {{.Names}}\\t{{.Status}}\\t{{.Ports}}'\n",[1331],{"type":53,"tag":100,"props":1332,"children":1333},{"__ignoreMap":282},[1334],{"type":53,"tag":288,"props":1335,"children":1336},{"class":290,"line":291},[1337,1341,1346,1351,1356,1361],{"type":53,"tag":288,"props":1338,"children":1339},{"style":305},[1340],{"type":59,"value":22},{"type":53,"tag":288,"props":1342,"children":1343},{"style":311},[1344],{"type":59,"value":1345}," ps",{"type":53,"tag":288,"props":1347,"children":1348},{"style":311},[1349],{"type":59,"value":1350}," --format",{"type":53,"tag":288,"props":1352,"children":1353},{"style":475},[1354],{"type":59,"value":1355}," '",{"type":53,"tag":288,"props":1357,"children":1358},{"style":311},[1359],{"type":59,"value":1360},"table {{.Names}}\\t{{.Status}}\\t{{.Ports}}",{"type":53,"tag":288,"props":1362,"children":1363},{"style":475},[1364],{"type":59,"value":1365},"'\n",{"type":53,"tag":62,"props":1367,"children":1368},{},[1369,1371,1377,1379,1385],{"type":59,"value":1370},"Deploy is complete when all ",{"type":53,"tag":100,"props":1372,"children":1374},{"className":1373},[],[1375],{"type":59,"value":1376},"mdx-*",{"type":59,"value":1378}," containers show status ",{"type":53,"tag":100,"props":1380,"children":1382},{"className":1381},[],[1383],{"type":59,"value":1384},"Up",{"type":59,"value":107},{"type":53,"tag":270,"props":1387,"children":1389},{"id":1388},"endpoints",[1390],{"type":59,"value":1391},"Endpoints",{"type":53,"tag":171,"props":1393,"children":1394},{},[1395,1411],{"type":53,"tag":175,"props":1396,"children":1397},{},[1398],{"type":53,"tag":179,"props":1399,"children":1400},{},[1401,1406],{"type":53,"tag":183,"props":1402,"children":1403},{},[1404],{"type":59,"value":1405},"Service",{"type":53,"tag":183,"props":1407,"children":1408},{},[1409],{"type":59,"value":1410},"Endpoint",{"type":53,"tag":194,"props":1412,"children":1413},{},[1414,1431,1448,1465,1482],{"type":53,"tag":179,"props":1415,"children":1416},{},[1417,1422],{"type":53,"tag":201,"props":1418,"children":1419},{},[1420],{"type":59,"value":1421},"VSS-UI",{"type":53,"tag":201,"props":1423,"children":1424},{},[1425],{"type":53,"tag":100,"props":1426,"children":1428},{"className":1427},[],[1429],{"type":59,"value":1430},"http:\u002F\u002F\u003CEXTERNAL_IP>:3000",{"type":53,"tag":179,"props":1432,"children":1433},{},[1434,1439],{"type":53,"tag":201,"props":1435,"children":1436},{},[1437],{"type":59,"value":1438},"Grafana-UI",{"type":53,"tag":201,"props":1440,"children":1441},{},[1442],{"type":53,"tag":100,"props":1443,"children":1445},{"className":1444},[],[1446],{"type":59,"value":1447},"http:\u002F\u002F\u003CEXTERNAL_IP>:35000\u002F",{"type":53,"tag":179,"props":1449,"children":1450},{},[1451,1456],{"type":53,"tag":201,"props":1452,"children":1453},{},[1454],{"type":59,"value":1455},"Kibana-UI",{"type":53,"tag":201,"props":1457,"children":1458},{},[1459],{"type":53,"tag":100,"props":1460,"children":1462},{"className":1461},[],[1463],{"type":59,"value":1464},"http:\u002F\u002F\u003CEXTERNAL_IP>:5601\u002Fapp\u002Fhome#\u002F",{"type":53,"tag":179,"props":1466,"children":1467},{},[1468,1473],{"type":53,"tag":201,"props":1469,"children":1470},{},[1471],{"type":59,"value":1472},"VIOS-UI",{"type":53,"tag":201,"props":1474,"children":1475},{},[1476],{"type":53,"tag":100,"props":1477,"children":1479},{"className":1478},[],[1480],{"type":59,"value":1481},"http:\u002F\u002F\u003CEXTERNAL_IP>:30888\u002Fvst\u002F#\u002Fdashboard",{"type":53,"tag":179,"props":1483,"children":1484},{},[1485,1490],{"type":53,"tag":201,"props":1486,"children":1487},{},[1488],{"type":59,"value":1489},"Phoenix-UI (Telemetry)",{"type":53,"tag":201,"props":1491,"children":1492},{},[1493],{"type":53,"tag":100,"props":1494,"children":1496},{"className":1495},[],[1497],{"type":59,"value":1498},"http:\u002F\u002F\u003CEXTERNAL_IP>:6006\u002Fprojects",{"type":53,"tag":620,"props":1500,"children":1501},{},[],{"type":53,"tag":68,"props":1503,"children":1505},{"id":1504},"phase-5-test-with-rtsp-stream",[1506],{"type":59,"value":1507},"Phase 5 — Test with RTSP Stream",{"type":53,"tag":270,"props":1509,"children":1511},{"id":1510},"trigger-client-test",[1512],{"type":59,"value":1513},"Trigger Client Test",{"type":53,"tag":62,"props":1515,"children":1516},{},[1517],{"type":59,"value":1518},"With the RTSP streaming simulator already running, trigger the test client and monitor the integration:",{"type":53,"tag":277,"props":1520,"children":1522},{"className":279,"code":1521,"language":281,"meta":282,"style":282},"cd \u003Cbp-repo>\n.\u002Fagentic\u002Fvss-sop-skills\u002Fvss-sop-deploy\u002Fscripts\u002Ftest_rtsp.sh --bp-repo .\n",[1523],{"type":53,"tag":100,"props":1524,"children":1525},{"__ignoreMap":282},[1526,1549],{"type":53,"tag":288,"props":1527,"children":1528},{"class":290,"line":291},[1529,1533,1537,1541,1545],{"type":53,"tag":288,"props":1530,"children":1531},{"style":469},[1532],{"type":59,"value":472},{"type":53,"tag":288,"props":1534,"children":1535},{"style":475},[1536],{"type":59,"value":478},{"type":53,"tag":288,"props":1538,"children":1539},{"style":311},[1540],{"type":59,"value":483},{"type":53,"tag":288,"props":1542,"children":1543},{"style":486},[1544],{"type":59,"value":489},{"type":53,"tag":288,"props":1546,"children":1547},{"style":475},[1548],{"type":59,"value":494},{"type":53,"tag":288,"props":1550,"children":1551},{"class":290,"line":301},[1552,1557,1561],{"type":53,"tag":288,"props":1553,"children":1554},{"style":305},[1555],{"type":59,"value":1556},".\u002Fagentic\u002Fvss-sop-skills\u002Fvss-sop-deploy\u002Fscripts\u002Ftest_rtsp.sh",{"type":53,"tag":288,"props":1558,"children":1559},{"style":311},[1560],{"type":59,"value":314},{"type":53,"tag":288,"props":1562,"children":1563},{"style":311},[1564],{"type":59,"value":366},{"type":53,"tag":62,"props":1566,"children":1567},{},[1568],{"type":59,"value":1569},"This automates:",{"type":53,"tag":903,"props":1571,"children":1572},{},[1573,1586],{"type":53,"tag":89,"props":1574,"children":1575},{},[1576,1578,1584],{"type":59,"value":1577},"Polls ",{"type":53,"tag":100,"props":1579,"children":1581},{"className":1580},[],[1582],{"type":59,"value":1583},"mdx-ds-sop-1",{"type":59,"value":1585}," logs until the API server is fully up.",{"type":53,"tag":89,"props":1587,"children":1588},{},[1589,1591,1597],{"type":59,"value":1590},"Automatically triggers ",{"type":53,"tag":100,"props":1592,"children":1594},{"className":1593},[],[1595],{"type":59,"value":1596},".\u002Frun_rtsp_test.sh",{"type":59,"value":1598}," in the background to register streams to VIOS.",{"type":53,"tag":1144,"props":1600,"children":1601},{},[1602],{"type":53,"tag":62,"props":1603,"children":1604},{},[1605,1610,1612,1617,1619,1625,1627,1632],{"type":53,"tag":131,"props":1606,"children":1607},{},[1608],{"type":59,"value":1609},"Self-Healing Integration Loop:",{"type":59,"value":1611}," To completely avoid the stale RTSP factory bug (where subsequent client runs on ",{"type":53,"tag":100,"props":1613,"children":1615},{"className":1614},[],[1616],{"type":59,"value":1583},{"type":59,"value":1618}," allocate random UDP ports but retain the old RTSP factory on port 8554, yielding 0 RTP bytes), ",{"type":53,"tag":100,"props":1620,"children":1622},{"className":1621},[],[1623],{"type":59,"value":1624},"run_rtsp_test.sh",{"type":59,"value":1626}," runs a continuous self-healing loop. If the ds-sop client exits or the connection is lost, the script automatically restarts the ",{"type":53,"tag":100,"props":1628,"children":1630},{"className":1629},[],[1631],{"type":59,"value":1583},{"type":59,"value":1633}," container, waits for readiness, resets the VST sensors, and starts a fresh streaming session to resume recording automatically. This ensures continuous livestreaming and recording stability.",{"type":53,"tag":620,"props":1635,"children":1636},{},[],{"type":53,"tag":68,"props":1638,"children":1640},{"id":1639},"tear-down",[1641],{"type":59,"value":1642},"Tear Down",{"type":53,"tag":62,"props":1644,"children":1645},{},[1646],{"type":59,"value":1647},"To stop the services and clean up all data logs:",{"type":53,"tag":277,"props":1649,"children":1651},{"className":279,"code":1650,"language":281,"meta":282,"style":282},"cd \u003Cbp-repo>\n.\u002Fagentic\u002Fvss-sop-skills\u002Fvss-sop-deploy\u002Fscripts\u002Fteardown.sh --bp-repo .\n",[1652],{"type":53,"tag":100,"props":1653,"children":1654},{"__ignoreMap":282},[1655,1678],{"type":53,"tag":288,"props":1656,"children":1657},{"class":290,"line":291},[1658,1662,1666,1670,1674],{"type":53,"tag":288,"props":1659,"children":1660},{"style":469},[1661],{"type":59,"value":472},{"type":53,"tag":288,"props":1663,"children":1664},{"style":475},[1665],{"type":59,"value":478},{"type":53,"tag":288,"props":1667,"children":1668},{"style":311},[1669],{"type":59,"value":483},{"type":53,"tag":288,"props":1671,"children":1672},{"style":486},[1673],{"type":59,"value":489},{"type":53,"tag":288,"props":1675,"children":1676},{"style":475},[1677],{"type":59,"value":494},{"type":53,"tag":288,"props":1679,"children":1680},{"class":290,"line":301},[1681,1685,1689],{"type":53,"tag":288,"props":1682,"children":1683},{"style":305},[1684],{"type":59,"value":426},{"type":53,"tag":288,"props":1686,"children":1687},{"style":311},[1688],{"type":59,"value":314},{"type":53,"tag":288,"props":1690,"children":1691},{"style":311},[1692],{"type":59,"value":366},{"type":53,"tag":620,"props":1694,"children":1695},{},[],{"type":53,"tag":68,"props":1697,"children":1699},{"id":1698},"error-handling",[1700],{"type":59,"value":1701},"Error Handling",{"type":53,"tag":85,"props":1703,"children":1704},{},[1705,1773,1793,1806,1823,1836,1876,1924],{"type":53,"tag":89,"props":1706,"children":1707},{},[1708,1713,1715,1720,1721,1727,1728,1734,1735,1741,1743,1749,1751,1756,1758,1764,1766,1771],{"type":53,"tag":131,"props":1709,"children":1710},{},[1711],{"type":59,"value":1712},"Docker Socket Permissions \u002F Permission Denied:",{"type":59,"value":1714}," All scripts (including ",{"type":53,"tag":100,"props":1716,"children":1718},{"className":1717},[],[1719],{"type":59,"value":1162},{"type":59,"value":1072},{"type":53,"tag":100,"props":1722,"children":1724},{"className":1723},[],[1725],{"type":59,"value":1726},"teardown.sh",{"type":59,"value":1072},{"type":53,"tag":100,"props":1729,"children":1731},{"className":1730},[],[1732],{"type":59,"value":1733},"test_rtsp.sh",{"type":59,"value":1072},{"type":53,"tag":100,"props":1736,"children":1738},{"className":1737},[],[1739],{"type":59,"value":1740},"build_ds_sop.sh",{"type":59,"value":1742},", and ",{"type":53,"tag":100,"props":1744,"children":1746},{"className":1745},[],[1747],{"type":59,"value":1748},"vss_sop_test.py",{"type":59,"value":1750},") are fully docker-group aware. If the current shell has inactive docker group membership but the user belongs to the ",{"type":53,"tag":100,"props":1752,"children":1754},{"className":1753},[],[1755],{"type":59,"value":22},{"type":59,"value":1757}," group, the scripts will automatically re-execute themselves under the ",{"type":53,"tag":100,"props":1759,"children":1761},{"className":1760},[],[1762],{"type":59,"value":1763},"sg docker",{"type":59,"value":1765}," command wrapper to bypass socket permission errors. If sudo is required, they will prompt\u002Fre-run via sudo. You do not need to prefix commands with ",{"type":53,"tag":100,"props":1767,"children":1769},{"className":1768},[],[1770],{"type":59,"value":1763},{"type":59,"value":1772}," manually.",{"type":53,"tag":89,"props":1774,"children":1775},{},[1776,1782,1784,1792],{"type":53,"tag":100,"props":1777,"children":1779},{"className":1778},[],[1780],{"type":59,"value":1781},"unknown or invalid runtime name: nvidia",{"type":59,"value":1783}," — NVIDIA Container Toolkit not installed or Docker not restarted. See ",{"type":53,"tag":580,"props":1785,"children":1786},{"href":612},[1787],{"type":53,"tag":100,"props":1788,"children":1790},{"className":1789},[],[1791],{"type":59,"value":612},{"type":59,"value":107},{"type":53,"tag":89,"props":1794,"children":1795},{},[1796,1798,1804],{"type":59,"value":1797},"NGC auth error — verify ",{"type":53,"tag":100,"props":1799,"children":1801},{"className":1800},[],[1802],{"type":59,"value":1803},"ngc_api_key.txt",{"type":59,"value":1805}," and ensure it is exported correctly.",{"type":53,"tag":89,"props":1807,"children":1808},{},[1809,1814,1816,1822],{"type":53,"tag":100,"props":1810,"children":1812},{"className":1811},[],[1813],{"type":59,"value":1583},{"type":59,"value":1815}," not starting — check model paths match between Phase 1 and ",{"type":53,"tag":100,"props":1817,"children":1819},{"className":1818},[],[1820],{"type":59,"value":1821},"ds-sop\u002F.env",{"type":59,"value":107},{"type":53,"tag":89,"props":1824,"children":1825},{},[1826,1828,1834],{"type":59,"value":1827},"API server not ready — check ",{"type":53,"tag":100,"props":1829,"children":1831},{"className":1830},[],[1832],{"type":59,"value":1833},"docker logs mdx-ds-sop-1",{"type":59,"value":1835}," for errors or progress.",{"type":53,"tag":89,"props":1837,"children":1838},{},[1839,1845,1847,1852,1854,1859,1861,1867,1868,1874],{"type":53,"tag":100,"props":1840,"children":1842},{"className":1841},[],[1843],{"type":59,"value":1844},"MediaInfo.parse: Unsupported file type",{"type":59,"value":1846}," error in ",{"type":53,"tag":100,"props":1848,"children":1850},{"className":1849},[],[1851],{"type":59,"value":1583},{"type":59,"value":1853}," when downloading video from VST directly — Ensure that ",{"type":53,"tag":100,"props":1855,"children":1857},{"className":1856},[],[1858],{"type":59,"value":1118},{"type":59,"value":1860}," is set under ",{"type":53,"tag":100,"props":1862,"children":1864},{"className":1863},[],[1865],{"type":59,"value":1866},"video_understanding",{"type":59,"value":1120},{"type":53,"tag":100,"props":1869,"children":1871},{"className":1870},[],[1872],{"type":59,"value":1873},"deployments\u002Fsop\u002Fvss-agent\u002Fconfigs\u002Fconfig.yml",{"type":59,"value":1875},". This forces the VSS Agent to send base64-encoded video instead of VST links, avoiding VST download parsing errors.",{"type":53,"tag":89,"props":1877,"children":1878},{},[1879,1881,1886,1888,1893,1894,1900,1902,1908,1910,1915,1917,1922],{"type":59,"value":1880},"Kibana \"No field found for ",{"type":53,"tag":288,"props":1882,"children":1883},{},[1884],{"type":59,"value":1885},"llm.queries.response.keyword",{"type":59,"value":1887},"\" or missing messages in ELK — Ensure ",{"type":53,"tag":100,"props":1889,"children":1891},{"className":1890},[],[1892],{"type":59,"value":1133},{"type":59,"value":641},{"type":53,"tag":100,"props":1895,"children":1897},{"className":1896},[],[1898],{"type":59,"value":1899},"ENABLE_MESSAGING=1",{"type":59,"value":1901}," are set in ",{"type":53,"tag":100,"props":1903,"children":1905},{"className":1904},[],[1906],{"type":59,"value":1907},"deployments\u002Fds\u002Fds-sop\u002F.env",{"type":59,"value":1909}," (automatically enforced by ",{"type":53,"tag":100,"props":1911,"children":1913},{"className":1912},[],[1914],{"type":59,"value":1170},{"type":59,"value":1916},"). See ",{"type":53,"tag":131,"props":1918,"children":1919},{},[1920],{"type":59,"value":1921},"vss-sop-build",{"type":59,"value":1923}," SKILL.md § Error Handling for the full field name reference and validation steps.",{"type":53,"tag":89,"props":1925,"children":1926},{},[1927,1929,1935,1937,1943,1944,1949],{"type":59,"value":1928},"UI shows ",{"type":53,"tag":100,"props":1930,"children":1932},{"className":1931},[],[1933],{"type":59,"value":1934},"Failed to load image with src: http:\u002F\u002F\u003Cinternal-ip>:30888\u002F...",{"type":59,"value":1936}," — ",{"type":53,"tag":100,"props":1938,"children":1940},{"className":1939},[],[1941],{"type":59,"value":1942},"EXTERNAL_IP",{"type":59,"value":1120},{"type":53,"tag":100,"props":1945,"children":1947},{"className":1946},[],[1948],{"type":59,"value":969},{"type":59,"value":1950}," is a host-only address. Set it to the public\u002Fbrowser-reachable IP (see Phase 4) and recreate the agent container.",{"type":53,"tag":620,"props":1952,"children":1953},{},[],{"type":53,"tag":68,"props":1955,"children":1957},{"id":1956},"license",[1958],{"type":59,"value":1959},"License",{"type":53,"tag":62,"props":1961,"children":1962},{},[1963,1965,1973,1975,1982],{"type":59,"value":1964},"Use of this skill is governed by the ",{"type":53,"tag":580,"props":1966,"children":1970},{"href":1967,"rel":1968},"https:\u002F\u002Fcreativecommons.org\u002Flicenses\u002Fby\u002F4.0\u002Flegalcode.en",[1969],"nofollow",[1971],{"type":59,"value":1972},"Creative Commons Attribution 4.0 International License (CC BY 4.0)",{"type":59,"value":1974}," and the ",{"type":53,"tag":580,"props":1976,"children":1979},{"href":1977,"rel":1978},"https:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0",[1969],[1980],{"type":59,"value":1981},"Apache License, Version 2.0",{"type":59,"value":107},{"type":53,"tag":1984,"props":1985,"children":1986},"style",{},[1987],{"type":59,"value":1988},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":1990,"total":2091},[1991,2009,2024,2037,2055,2067,2078],{"slug":1992,"name":1992,"fn":1993,"description":1994,"org":1995,"tags":1996,"stars":23,"repoUrl":24,"updatedAt":2008},"sop-build","orchestrate end-to-end SOP monitoring pipelines","Orchestrate the end-to-end SOP pipeline, including preflight prerequisite checks, verifying models and downloading assets, generating the DeepStream SOP microservice with RTSP output, evaluating the microservice, and building, deploying, and testing the VSS SOP blueprint. Use when asked to run the full SOP pipeline, set up the SOP pipeline from scratch, execute preflight checks, verify models, download assets, generate the SOP microservice, evaluate the microservice, build the VSS blueprint, deploy the VSS blueprint, test the VSS blueprint, or manage the complete build-evaluate-deploy-test cycle.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[1997,2000,2003,2004,2005],{"name":1998,"slug":1999,"type":15},"Automation","automation",{"name":2001,"slug":2002,"type":15},"Engineering","engineering",{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":2006,"slug":2007,"type":15},"Video","video","2026-07-14T05:32:48.503678",{"slug":2010,"name":2010,"fn":2011,"description":2012,"org":2013,"tags":2014,"stars":23,"repoUrl":24,"updatedAt":2023},"sop-by-action-eval","run by-action VLM evaluations","Use when running by-action VLM evaluation (per-action-clip inference + accuracy metrics) against the BP evaluation-ms HTTP API. Invoked as \u002Fsop-by-action-eval \u003Cinputs.yaml> [natural language parameter overrides]",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2015,2018,2021,2022],{"name":2016,"slug":2017,"type":15},"Evals","evals",{"name":2019,"slug":2020,"type":15},"Machine Learning","machine-learning",{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},"2026-07-14T05:36:13.260585",{"slug":2025,"name":2025,"fn":2026,"description":2027,"org":2028,"tags":2029,"stars":23,"repoUrl":24,"updatedAt":2036},"sop-cr-finetuning","fine-tune VLM models for SOP monitoring","Fine-tune Cosmos-Reason2 (CR2) VLM for SOP monitoring. Use when you need to launch and monitor a VLM training run with a given dataset ID.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2030,2033,2034,2035],{"name":2031,"slug":2032,"type":15},"AI Infrastructure","ai-infrastructure",{"name":2019,"slug":2020,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},"2026-07-14T05:36:22.874218",{"slug":2038,"name":2038,"fn":2039,"description":2040,"org":2041,"tags":2042,"stars":23,"repoUrl":24,"updatedAt":2054},"sop-data-augmentation","augment annotated datasets","Use when the user wants to run data augmentation on an annotated dataset, configure augmentation parameters, check augmentation status, or understand what each QA augmentation type does (BCQ, MCQ, GQA, DMCQ, DSQA, ENQA)",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2043,2046,2049,2050,2051],{"name":2044,"slug":2045,"type":15},"Data Engineering","data-engineering",{"name":2047,"slug":2048,"type":15},"Datasets","datasets",{"name":2019,"slug":2020,"type":15},{"name":9,"slug":8,"type":15},{"name":2052,"slug":2053,"type":15},"QA","qa","2026-07-14T05:36:20.305657",{"slug":2056,"name":2056,"fn":2057,"description":2058,"org":2059,"tags":2060,"stars":23,"repoUrl":24,"updatedAt":2066},"sop-ddm-finetuning","fine-tune DDM-Net models for SOP monitoring","Fine-tune DDM-Net temporal boundary detector for SOP monitoring. Use when you need to launch and monitor a DDM-Net training run with a given dataset ID.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2061,2064,2065],{"name":2062,"slug":2063,"type":15},"Deep Learning","deep-learning",{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},"2026-07-14T05:35:16.203684",{"slug":2068,"name":2068,"fn":2069,"description":2070,"org":2071,"tags":2072,"stars":23,"repoUrl":24,"updatedAt":2077},"sop-e2e-inference","run end-to-end inference evaluations","Use when running the e2e evaluation pipeline (temporal segmentation + action recognition + accuracy) against the BP evaluation-ms HTTP API. Invoked as \u002Fsop-e2e-inference \u003Cinputs.yaml> [natural language parameter overrides]",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2073,2074,2075,2076],{"name":2016,"slug":2017,"type":15},{"name":2019,"slug":2020,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},"2026-07-14T05:36:15.23958",{"slug":2079,"name":2079,"fn":2080,"description":2081,"org":2082,"tags":2083,"stars":23,"repoUrl":24,"updatedAt":2090},"sop-ft-orchestrate","orchestrate SOP fine-tuning pipelines","Autonomous end-to-end orchestrator for SOP fine-tuning. Runs the full Import → Augment → DDM Train → VLM Train → Evaluate → RCA loop. Interprets RCA findings across DDM, VLM and augment axes, applies config fixes autonomously, and iterates until success criteria are met or max_pipeline_iterations reached. Call with a path to an inputs.yaml or with natural language.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2084,2085,2086,2087],{"name":1998,"slug":1999,"type":15},{"name":2019,"slug":2020,"type":15},{"name":9,"slug":8,"type":15},{"name":2088,"slug":2089,"type":15},"Orchestration","orchestration","2026-07-14T05:36:28.162686",11,{"items":2093,"total":2244},[2094,2112,2128,2139,2151,2165,2178,2190,2201,2212,2226,2235],{"slug":2095,"name":2095,"fn":2096,"description":2097,"org":2098,"tags":2099,"stars":2109,"repoUrl":2110,"updatedAt":2111},"nemoclaw-user-guide","retrieve NemoClaw documentation and configuration","Guides human users' AI agents to the NemoClaw docs MCP server and canonical Fern documentation in Markdown form. Use when users ask how to install, configure, operate, troubleshoot, secure, or learn NemoClaw with an AI coding assistant. Trigger keywords - nemoclaw docs, use nemoclaw with ai agent, nemoclaw mcp docs, nemoclaw install help, nemoclaw quickstart, nemoclaw markdown docs, llms.txt, agent skills.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2100,2103,2106],{"name":2101,"slug":2102,"type":15},"Documentation","documentation",{"name":2104,"slug":2105,"type":15},"MCP","mcp",{"name":2107,"slug":2108,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":2113,"name":2113,"fn":2114,"description":2115,"org":2116,"tags":2117,"stars":2125,"repoUrl":2126,"updatedAt":2127},"mcore-build-and-dependency","manage Megatron-LM development environments","Container-based dev environment setup and dependency management for Megatron-LM. Covers acquiring and launching the CI container, uv package management, and updating uv.lock.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2118,2121,2122],{"name":2119,"slug":2120,"type":15},"Containers","containers",{"name":17,"slug":18,"type":15},{"name":2123,"slug":2124,"type":15},"Python","python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":2129,"name":2129,"fn":2130,"description":2131,"org":2132,"tags":2133,"stars":2125,"repoUrl":2126,"updatedAt":2138},"mcore-bump-base-image","update NVIDIA PyTorch base images","Bump the NVIDIA PyTorch base image (`nvcr.io\u002Fnvidia\u002Fpytorch:YY.MM-py3`) used by Megatron-LM CI. Covers the two pin sites (GitHub CI in `docker\u002F.ngc_version.dev` and GitLab CI in `.gitlab\u002Fstages\u002F01.build.yml`), the post-bump CI loop (re-run functional tests, refresh golden values, mark broken tests), and the gotchas that bit PRs",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2134,2137],{"name":2135,"slug":2136,"type":15},"CI\u002FCD","ci-cd",{"name":17,"slug":18,"type":15},"2026-07-14T05:25:59.97109",{"slug":2140,"name":2140,"fn":2141,"description":2142,"org":2143,"tags":2144,"stars":2125,"repoUrl":2126,"updatedAt":2150},"mcore-cicd","manage CI\u002FCD pipelines for Megatron-LM","CI\u002FCD reference for Megatron-LM. Covers CI pipeline structure, PR scope labels, triggering internal GitLab CI (which force-pushes the current branch to a pull-request\u002FBRANCH ref — always dry-run and verify the destination first; never run against shared or protected branches), and CI failure investigation.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2145,2146,2147],{"name":2135,"slug":2136,"type":15},{"name":17,"slug":18,"type":15},{"name":2148,"slug":2149,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":2152,"name":2152,"fn":2153,"description":2154,"org":2155,"tags":2156,"stars":2125,"repoUrl":2126,"updatedAt":2164},"mcore-create-issue","investigate CI failures and create issues","Investigate a failing GitHub Actions run or job and create a GitHub issue for the failure.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2157,2160,2161],{"name":2158,"slug":2159,"type":15},"Debugging","debugging",{"name":2148,"slug":2149,"type":15},{"name":2162,"slug":2163,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":2166,"name":2166,"fn":2167,"description":2168,"org":2169,"tags":2170,"stars":2125,"repoUrl":2126,"updatedAt":2177},"mcore-linting-and-formatting","lint and format Megatron-LM code","Linting and formatting for Megatron-LM. Covers running autoformat.sh, tools (ruff, black, isort, pylint, mypy), and code style rules.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2171,2174],{"name":2172,"slug":2173,"type":15},"Best Practices","best-practices",{"name":2175,"slug":2176,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":2179,"name":2179,"fn":2180,"description":2181,"org":2182,"tags":2183,"stars":2125,"repoUrl":2126,"updatedAt":2189},"mcore-migrate-gpt-to-hybrid","migrate Megatron-LM models to HybridModel","Migration guide for moving Megatron Core GPTModel checkpoints, model providers, training commands, and layer mappings to HybridModel.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2184,2185,2188],{"name":2019,"slug":2020,"type":15},{"name":2186,"slug":2187,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":2191,"name":2191,"fn":2192,"description":2193,"org":2194,"tags":2195,"stars":2125,"repoUrl":2126,"updatedAt":2200},"mcore-onboard-gb200-1node-tests","onboard functional tests for GB200","Onboard 1-node GitHub MR functional tests for GB200 from existing mr-scoped 2-node tests.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2196,2197],{"name":2052,"slug":2053,"type":15},{"name":2198,"slug":2199,"type":15},"Testing","testing","2026-07-14T05:25:53.673039",{"slug":2202,"name":2202,"fn":2203,"description":2204,"org":2205,"tags":2206,"stars":2125,"repoUrl":2126,"updatedAt":2211},"mcore-run-on-slurm","launch distributed training jobs on SLURM","How to launch distributed Megatron-LM training jobs on a SLURM cluster. Covers a minimal sbatch skeleton, environment-variable setup for torch.distributed.run, CUDA_DEVICE_MAX_CONNECTIONS rules across hardware and parallelism modes, container conventions, monitoring, and per-rank failure diagnosis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2207,2208],{"name":17,"slug":18,"type":15},{"name":2209,"slug":2210,"type":15},"Infrastructure","infrastructure","2026-07-14T05:25:49.362534",{"slug":2213,"name":2213,"fn":2214,"description":2215,"org":2216,"tags":2217,"stars":2125,"repoUrl":2126,"updatedAt":2225},"mcore-split-pr","split pull requests to reduce review load","Split a PR into multiple PRs to reduce the number of required CODEOWNERS reviewer groups.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2218,2221,2222],{"name":2219,"slug":2220,"type":15},"Code Review","code-review",{"name":2148,"slug":2149,"type":15},{"name":2223,"slug":2224,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":2227,"name":2227,"fn":2228,"description":2229,"org":2230,"tags":2231,"stars":2125,"repoUrl":2126,"updatedAt":2234},"mcore-testing","run and manage Megatron-LM tests","Test system for Megatron-LM. Covers test layout, recipe YAML structure, adding and running unit and functional tests, golden values, marker filters, and CI parity.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2232,2233],{"name":2052,"slug":2053,"type":15},{"name":2198,"slug":2199,"type":15},"2026-07-14T05:25:54.928983",{"slug":2236,"name":2236,"fn":2237,"description":2238,"org":2239,"tags":2240,"stars":2125,"repoUrl":2126,"updatedAt":2243},"nightly-sync","manage nightly main-to-dev sync workflows","Domain knowledge for the nightly main-to-dev sync workflow. Covers merge strategy, CI architecture, failure investigation, and known issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[2241,2242],{"name":1998,"slug":1999,"type":15},{"name":2135,"slug":2136,"type":15},"2026-07-30T05:29:03.275638",496]