[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-vss-manage-alerts":3,"mdc--i1j5fg-key":34,"related-repo-nvidia-vss-manage-alerts":3305,"related-org-nvidia-vss-manage-alerts":3410},{"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-manage-alerts","manage VSS alert workflows","Use for VSS alert workflows — real-time monitoring, Alert-Bridge subscriptions, Slack notifications, incident queries, camera onboarding. Not for non-alert analytics.",{"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},"Alerting","alerting","tag",{"name":17,"slug":18,"type":15},"Monitoring","monitoring",{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},"Slack","slack",2473,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fskills","2026-07-14T05:28:24.661227","Apache-2.0",281,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":31},[],"AI agent skills published by NVIDIA","https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fskills\u002Ftree\u002FHEAD\u002Fskills\u002Fvss-manage-alerts","---\nname: vss-manage-alerts\ndescription: Use for VSS alert workflows — real-time monitoring, Alert-Bridge subscriptions, Slack notifications, incident queries, camera onboarding. Not for non-alert analytics.\nlicense: Apache-2.0\nmetadata:\n  version: \"3.2.0\"\n  author: \"NVIDIA Video Search and Summarization Team \u003Cvss-team@nvidia.com>\"\n  github-url: \"https:\u002F\u002Fgithub.com\u002FNVIDIA-AI-Blueprints\u002Fvideo-search-and-summarization\"\n  tags: \"nvidia blueprint operational\"\n---\n## Purpose\n\nOperate the VSS alert pipeline (mode detection, Alert-Bridge subscriptions, Slack notifications, queries, camera onboarding, verifier-prompt customization).\n\n## Prerequisites\n\n- Active VSS deployment reachable on `$HOST_IP` (see `vss-deploy-profile` and `references\u002F`).\n- NGC credentials in `$NGC_CLI_API_KEY` and `$NVIDIA_API_KEY` for any image pulls.\n- `curl`, `jq`, and Docker available on the caller.\n\n## Instructions\n\nFollow the routing tables and step-by-step workflows below. Each section that ends in *workflow*, *quick start*, or *flow* is intended to be executed top-to-bottom. Detailed reference material lives in `references\u002F` and helper scripts live in `scripts\u002F` — call them via `run_script` when the skill points to a script by name.\n\n## Examples\n\nRunnable end-to-end scenarios live under `evals\u002F` (each `*.json` manifest); inline `curl` blocks appear in each workflow below. Replay with `nv-base validate \u003Cthis-skill-dir> --agent-eval`.\n\n## Limitations\n\nRequires the matching VSS profile\u002Fmicroservice deployed and reachable. NGC-hosted models\u002FNIMs are subject to rate-limits, GPU-memory needs, and license terms; concurrency and storage limits depend on host hardware and the profile's compose file.\n\n## Troubleshooting\n\n- **Connection refused** → microservice not running: probe `\u002Fdocs` or `\u002Fhealth`, redeploy via `vss-deploy-profile`.\n- **HTTP 401\u002F403 on NGC pulls** → missing\u002Fexpired `NGC_CLI_API_KEY`: `docker login nvcr.io` and re-export the key.\n- **OOM \u002F model load failure** → insufficient GPU memory: use a smaller variant or `docker compose down` to free GPUs.\n\n# VSS Alert Management\n\nThe alerts profile runs in one of two modes (chosen at `\u002Fvss-deploy-profile -p alerts -m {verification,real-time}`) — see **The Two Modes** table below. This skill routes by **deployed mode + user intent** (monitoring vs subscription CRUD vs Slack webhook).\n\n## When to Use\n\n- Start\u002Fstop a real-time alert on a sensor (\"Start real-time alert for boxes dropped on warehouse_sample\")\n- Create\u002Flist\u002Fstop realtime subscription rules on Alert Bridge\n- Set up or manage Slack incident notifications\n- List or query detected incidents \u002F alerts; check verdicts (confirmed\u002Frejected\u002Funverified)\n- Add a new camera to the alerts pipeline; customize VLM-verifier prompts (CV mode)\n\n---\n\n## Deployment prerequisite\n\nRequires the VSS **alerts** profile on `$HOST_IP` in either `verification` (CV) or `real-time` (VLM) mode.\n\n```bash\n# Either vss-rtvi-cv (CV mode) OR vss-rtvi-vlm (VLM mode) must be present.\ncurl -sf --max-time 5 \"http:\u002F\u002F${HOST_IP}:8000\u002Fdocs\" >\u002Fdev\u002Fnull \\\n  && docker ps --format '{{.Names}}' \\\n     | grep -qE '^(vss-rtvi-cv|vss-rtvi-vlm)$'\n```\n\nIf the probe fails, ask which mode to deploy and hand off to `\u002Fvss-deploy-profile -p alerts -m \u003Cmode>` (decline → stop; pre-authorized autonomous deploy → run directly with `verification` by default). If it passes, detect the mode per Step 1.\n\n---\n\n## The Two Modes (Deploy-Time Choice)\n\n| Mode | Deploy flag | Env (`.env`) | What runs | What is available |\n|---|---|---|---|---|\n| **CV (verification)** | `-m verification` | `MODE=2d_cv` | RT-CV (Grounding DINO) + Behavior Analytics + `alert-bridge` VLM verifier + **`rtvi-vlm`** | **Both** static CV pipeline (Workflow A) **and** dynamic VLM real-time alerts (Workflows B\u002FD) |\n| **VLM (real-time)** | `-m real-time` | `MODE=2d_vlm` | `alert-bridge` + `rtvi-vlm` | **Only** dynamic VLM real-time alerts (Workflows B\u002FD) and `alert-bridge` backend. No static CV pipeline. |\n\n**Switching modes** uses the `vss-deploy-profile` teardown + deploy flow with the other `-m` flag (VLM → CV adds the CV pipeline; CV → VLM tears it down). `rtvi-vlm` runs in both modes.\n\n---\n\n## Step 1 — Detect the Currently Deployed Mode\n\nBefore running any alert workflow, check which mode is live. Use **CV-only** containers as the signal — `vss-rtvi-vlm` is **not** a reliable mode signal because it runs in both modes.\n\n```bash\n# CV verification mode (vss-behavior-analytics + vss-rtvi-cv are CV-only)\ndocker ps --format '{{.Names}}' | grep -qx vss-behavior-analytics && echo \"mode=CV\"\n\n# VLM real-time mode (no CV pipeline; vss-rtvi-vlm still runs)\ndocker ps --format '{{.Names}}' | grep -qx vss-behavior-analytics || \\\n  docker ps --format '{{.Names}}' | grep -qx vss-rtvi-vlm && echo \"mode=VLM\"\n```\n\nIf `vss-behavior-analytics` is present → **CV mode** (which also has `vss-rtvi-vlm`).\nIf only `vss-rtvi-vlm` is present (and no CV pipeline) → **VLM mode**.\nIf neither matches, the alerts profile is not deployed — direct the user to the `vss-deploy-profile` skill.\n\nAlternative signal (preferred when `docker ps` isn't accessible): check the profile's `generated.env`:\n\n```bash\ngrep -E '^MODE=' deploy\u002Fdocker\u002Fdeveloper-profiles\u002Fdev-profile-alerts\u002Fgenerated.env\n# MODE=2d_cv   → CV mode (full superset)\n# MODE=2d_vlm  → VLM real-time mode (vss-rtvi-vlm only; no vss-rtvi-cv)\n```\n\n---\n\n## Step 2 — Route by Deployed Mode\n\n| Deployed mode | User asks about… | Action |\n|---|---|---|\n| **VLM real-time** | Slack webhook setup\u002Fstatus\u002Ftest\u002Fstop | **Workflow E** — `references\u002Falert-notify.md` |\n| **VLM real-time** | rule CRUD, or a realtime alert on a sensor with a detection condition, or stop\u002Fdelete a named alert (by `alert_type`\u002Fcondition or rule ID) | **Workflow D** — `references\u002Falert-subscriptions.md` (incl. two-step stop\u002Fconfirm) |\n| **CV verification** | subscription\u002Frule CRUD or Slack\u002Fnotification setup | Refuse — see canonical refusal text below |\n| **CV or VLM** | generic start\u002Fstop monitoring **without** a detection condition | **Workflow B (VLM)** — call the VSS Agent; `rtvi-vlm` runs in both modes |\n| **CV or VLM** | incident lookup \u002F *what happened* (recent alerts, time-range, casual \"any alerts today?\") | **Workflow C (Query)** — works on both; **always run the query, never answer from memory** |\n| **CV** | static CV alert onboarding \u002F verdict-prompt customization | **Workflow A (CV)** — onboard RTSP via `vss-manage-video-io-storage`; pipeline auto-picks it up |\n| **VLM** | a CV \u002F behavior-analytics \u002F PPE-rule alert needing the static CV pipeline | **Redeployment required** — confirm first, then `vss-deploy-profile -m verification` |\n\n**Always confirm before triggering a redeploy.** A mode switch stops all currently-running monitoring and restarts services.\n\n### Intent precedence (first match wins)\n\n1. **Workflow E (Slack)** — Slack-specific keywords (`slack`, `webhook` + `slack`, `bot token`, `slack channel`). `notify` alone is **not** sufficient.\n2. **Workflow D (Subscriptions)** — sensor **plus** a detection condition, rule CRUD keywords (`rule`, `subscription`, rule ID), **or stopping\u002Fdeleting a named alert by type\u002Fcondition** (\"stop the PPE alert\", \"delete the collision rule\"). A named `alert_type`\u002Fcondition = an existing **rule** → D's two-step stop protocol (`GET \u002Fapi\u002Fv1\u002Frealtime` → yes\u002Fno confirm → delete), never Workflow B.\n3. **Workflow B (VLM monitoring)** — generic start\u002Fstop on a sensor with **no** detection condition and **no** alert-type qualifier (\"start\u002Fstop real-time alert for sensor X\"). A stop that names a type (\"stop the **PPE** alert\") is a rule stop → Workflow D.\n4. **Workflow C (Query)** — incident lookup \u002F *what happened* (`show\u002Flist incidents`, `recent alerts`, time-range queries, **and casual \"any alerts…?\" \u002F \"any alerts so far today?\" \u002F \"what's been triggered?\" phrasings**). Bare `alerts` (without `rule`\u002F`subscription`\u002F`active rules`) means **incidents** → Workflow C, never Workflow D.\n5. **Workflow A (CV)** — CV deployment handling for anything not matched above.\n\n> **`alerts` vs `alert rules` (C vs D) — pick exactly one, never both:**\n> *what happened \u002F has been triggered* (incidents) → **Workflow C**\n> (`POST \u002Fgenerate`). *What\n> rules\u002Fsubscriptions are configured or active* → **Workflow D** (the\n> **bare** `GET \u002Fapi\u002Fv1\u002Frealtime`, no `\u002Fincidents`). Bare `alerts` =\n> incidents (C); `alert rules` \u002F `subscriptions` \u002F `active rules` =\n> inventory (D). Never answer from memory; run the one correct call —\n> full endpoint detail in Workflow C below.\n\n**Disambiguation (B vs D):** if a sensor is named with start\u002Fmonitor language but the detection condition is unclear, ask:\n> *\"Do you want me to (a) create a persistent alert rule on Alert Bridge that keeps running until you delete it, or (b) start a one-time monitoring session via the VSS Agent?\"*\n\n**Stop routing (B vs D):** \"Stop the **&lt;type&gt;** alert\" (names an `alert_type`\u002Fcondition like PPE, collision, fire) = stop a **subscription rule** → **Workflow D** (find via `GET \u002Fapi\u002Fv1\u002Frealtime`, then the two-step stop\u002Fconfirm protocol in `references\u002Falert-subscriptions.md`; do **not** call `POST \u002Fgenerate`). A bare \"stop real-time alert \u002F stop monitoring on &lt;sensor&gt;\" with **no** type qualifier = Workflow B.\n\nIf a prompt mixes workflows (\"start monitoring and send to Slack\"), ask one clarifying question to split execution order.\n\n### CV-mode refusal text for D and E intents\n\nWhen the deployed mode is CV verification and the user asks for an alert-subscription or Slack\u002Fnotification intent, refuse with this message verbatim:\n\n> \"Alert subscriptions and Slack notifications are only supported in VLM real-time mode. Your current deployment is `\u003CCV verification | not deployed>`. To use these features, redeploy with `\u002Fvss-deploy-profile -p alerts -m real-time` (note: switching tears down current CV monitoring).\"\n\nNo auto-redeploy. The user decides whether to switch modes.\n\n---\n\n## Prereq for Either Mode: Sensor Must Be in VIOS\n\nBoth modes require the camera registered in VIOS first (via the `vss-manage-video-io-storage` skill):\n\n- RTSP URL \u002F IP camera → add it with `POST \u002Fsensor\u002Fadd` (that skill's Section 6); record the `sensorId` \u002F name.\n- Named existing sensor → confirm it appears in `GET \u002Fsensor\u002Flist` before proceeding.\n\nOn **CV**, adding the RTSP is the *entire* onboarding step (pipeline auto-picks it up). On **VLM**, it is a prerequisite to Workflow B.\n\n---\n\n## The Agent `\u002Fgenerate` Endpoint\n\nAll VLM-flow actions and all query actions go through the VSS Agent's natural-language endpoint:\n\n```bash\nAGENT=\"http:\u002F\u002F\u003CAGENT_ENDPOINT>\"   # default http:\u002F\u002Flocalhost:8000 on the alerts profile\n\ncurl -s -X POST \"$AGENT\u002Fgenerate\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"input_message\": \"\u003Cnatural-language request>\"}' | jq .\n```\n\n**Endpoint resolution:** use the agent endpoint from the active VSS deployment context. If unavailable, ask the user. Do not discover via filesystem.\n\n**Availability check:** `curl -sf --connect-timeout 5 \"$AGENT\u002Fdocs\"`.\n\nDo not call the `rtvi-vlm` microservice endpoints directly — always go through the agent. The agent internally dispatches to `rtvi_vlm_alert`, `rtvi_prompt_gen`, and `video_analytics_mcp.get_incidents`.\n\n---\n\n## Workflow A — CV Mode (`-m verification` \u002F `MODE=2d_cv`)\n\nCV alerts are **deployment-driven, not request-driven** — there is no agent\ncall to \"create\" one.\n\n1. Check if the sensor is in VIOS via `vss-manage-video-io-storage`'s `GET \u002Fsensor\u002Flist` (idempotent — don't blindly `POST \u002Fsensor\u002Fadd`).\n2. If missing, onboard via that skill's `POST \u002Fsensor\u002Fadd`. The CV pipeline auto-picks up the stream once registered and online.\n3. Confirm online: `curl -s \"http:\u002F\u002F\u003CVST_ENDPOINT>\u002Fvst\u002Fapi\u002Fv1\u002Fsensor\u002F\u003CsensorId>\u002Fstatus\" | jq .`\n4. Alerts land in Elasticsearch (Behavior Analytics → `alert-bridge` verification per `alert_type_config.json`). Query with **Workflow C**.\n\nA static-CV-pipeline alert on a VLM-only deployment is a mode mismatch — see the routing table above.\n\n---\n\n## Workflow B — VLM Real-time Monitoring (CV or VLM mode)\n\nGeneric start \u002F stop intents through the VSS Agent for a named sensor\nwithout a detection condition (if a condition is present, route to\nWorkflow D). `rtvi-vlm` runs in both modes.\n\n```bash\n# start: input_message = \"Start real-time alert for sensor \u003Cid>\"\n# stop:  input_message = \"Stop real-time alert for sensor \u003Cid>\"\ncurl -s -X POST \"$AGENT\u002Fgenerate\" -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"input_message\": \"\u003Cstart|stop> real-time alert for sensor \u003Cid>\"}' | jq .\n```\n\nUnder the hood: `rtvi_prompt_gen` → `rtvi_vlm_alert action=\"start\"`.\nEvery chunk is captioned; a chunk whose VLM response contains `yes`\u002F`true`\n(case-insensitive) publishes an incident to `mdx-vlm-incidents`. Prompts\nmust force a Yes\u002FNo answer. A static-CV-pipeline request on a VLM-only\ndeployment is a mode mismatch — see the routing table.\n\n---\n\n## Workflow D — Alert Subscriptions (VLM real-time mode only)\n\nCreate \u002F list \u002F delete persistent realtime alert rules on Alert Bridge.\nRoute here when the prompt has rule keywords (`rule`, `subscription`, a rule\nID) **or** when it pairs a specific sensor with a specific detection\ncondition (e.g. \"Set up a realtime alert on warehouse-dock-1 for PPE\nviolations\", \"Watch sensor entrance-1 for tailgating\", \"Stop rule\n496aebd1-…\").\n\n**Not here:** generic start\u002Fstop without a condition (→ Workflow B) or Slack\noperations (→ Workflow E).\n\nLoad and follow `references\u002Falert-subscriptions.md` as the authoritative\nplaybook for subscription CRUD. VLM real-time mode only; refuse with the\ncanonical refusal text on CV.\n\n---\n\n## Workflow E — Slack Notifications (VLM real-time mode only)\n\nUse when the user **explicitly mentions Slack or the webhook relay** (start\u002Fstop webhook server, check status\u002Fhealth, send a test message, set Slack channel\u002Ftoken). The word `notify` alone is **not** enough.\n\n> **`alert-notify` (port 9090) ≠ `vss-alert-bridge` (`\u002Fapi\u002Fv1\u002Frealtime`).**\n> Do NOT touch `vss-alert-bridge` for Slack ops.\n\nRoutes here: \"Set up Slack notifications\", \"Check if alert-notify is running\", \"Send a test alert to Slack\". Does **not** route here: \"Notify me when someone enters the zone\" (→ D\u002FB), \"Alert and notify on my phone\" (ambiguous — ask).\n\nLoad and follow `references\u002Falert-notify.md`. Code lives in `scripts\u002Falert-notify\u002F`. VLM real-time mode only.\n\n---\n\n## Workflow C — Query \u002F List Alerts (works on either mode)\n\nBoth CV- and VLM-generated alerts land in Elasticsearch and are\nqueryable via the agent's `video_analytics_mcp.get_incidents` tool. POST\nnatural-language requests to `$AGENT\u002Fgenerate` — \"Show me recent alerts\nfor sensor X\", \"List confirmed alerts from the last hour\", \"Show\ncollision incidents from Camera_02 between `\u003CISO>` and `\u003CISO>`\".\n\n**Casual phrasings route here too.** Questions like \"Any alerts so far\ntoday?\", \"Any alerts today?\", \"What's been triggered?\", or \"Anything\ndetected lately?\" are incident queries — issue a `POST \u002Fgenerate` (e.g.\n`{\"input_message\": \"List alerts from today\"}`) and summarize the result.\n**Never answer these from memory and never reply \"no alerts\" without\nrunning the query.** A bare \"alerts\" question is *always* an incident\nlookup (Workflow C), not a subscription-rule listing (Workflow D).\n\n> **Do NOT list subscription rules for an incident query.** The **bare**\n> `GET \u002Fapi\u002Fv1\u002Frealtime` (no `\u002Fincidents`) lists *rules* (Workflow D) and\n> is wrong for \"what happened\" — never call\u002Fprobe it or load the Workflow\n> D playbook for an incident query.\n>\n> **Empty result is a valid answer.** If no incidents match (e.g. a\n> freshly deployed system with no activity yet), report that **none were\n> found \u002F the count is 0** for the requested period and STOP — do not fall\n> back to listing rules or hunting other endpoints.\n\nFor\nricher \u002F non-natural-language filtering (sensor-level, time-series,\ncounts) use the **`vss-query-analytics` skill** (VA-MCP on port 9901).\n\n### Verdict interpretation & CV verifier prompts (CV mode only)\n\nCV alerts carry a VLM verification verdict (`confirmed` \u002F `rejected` \u002F\n`unverified`); VLM real-time incidents have no separate verdict (the\ntrigger is itself a Yes\u002FNo VLM answer). CV-path verifier prompts are\ncustomizable via `alert_type_config.json` (restart `alert-bridge` to\napply). See `references\u002Fcv-verifier-prompts.md` for the verdict table,\nfield meanings, and the prompt-customization rules.\n\n---\n\n## Cross-Skill Links\n\n| Task | Skill |\n|---|---|\n| Deploy, redeploy, or switch alert mode | **`vss-deploy-profile`** — `-p alerts -m {verification,real-time}` |\n| Add an RTSP\u002FIP camera, list sensors, snapshots, clips | **`vss-manage-video-io-storage`** (Section 6 for Add Sensor) |\n| Time-range incident \u002F occupancy \u002F PPE metrics from Elasticsearch | **`vss-query-analytics`** (VA-MCP :9901) |\n| Detailed incident report from an alert | **`vss-generate-video-report`** |\n| Subscriptions \u002F Slack sub-workflows | `references\u002Falert-subscriptions.md`, `references\u002Falert-notify.md` (code in `scripts\u002Falert-notify\u002F`) |\n\n---\n\n## Gotchas\n\n- **`alert-notify` (port 9090) ≠ `vss-alert-bridge`.** Slack ops → Workflow E (`alert-notify`); never route Slack to `vss-alert-bridge`'s `\u002Fapi\u002Fv1\u002Frealtime`.\n- **Workflow scope by mode:** A is CV-only; B and C work on either mode; D and E are VLM real-time only (refuse on CV with the canonical text).\n- **Don't use `vss-rtvi-vlm` as a mode signal** — it runs in both modes. Use `vss-behavior-analytics` (CV-only) or the `MODE` env var.\n- **A mode switch tears down the current deployment** — running VLM streams and un-persisted CV alert state are lost.\n- **Always go through `$AGENT\u002Fgenerate`** — never call `rtvi-vlm` directly. The VLM trigger is a `\"yes\"`\u002F`\"true\"` token match (case-insensitive); `rtvi_prompt_gen` enforces the Yes\u002FNo pattern, so don't hand-craft prompts that break it.\n- **Sensor must already be in VIOS** for either mode (use `vss-manage-video-io-storage` for RTSP-only inputs).\n\nbump:1\n",{"data":35,"body":41},{"name":4,"description":6,"license":26,"metadata":36},{"version":37,"author":38,"github-url":39,"tags":40},"3.2.0","NVIDIA Video Search and Summarization Team \u003Cvss-team@nvidia.com>","https:\u002F\u002Fgithub.com\u002FNVIDIA-AI-Blueprints\u002Fvideo-search-and-summarization","nvidia blueprint operational",{"type":42,"children":43},"root",[44,53,59,65,139,145,194,200,236,242,247,253,333,340,367,373,401,405,411,446,623,643,646,652,832,864,867,873,900,1124,1172,1193,1247,1250,1256,1519,1529,1536,1769,1877,1887,1898,1967,1972,1978,1983,2007,2012,2015,2021,2033,2070,2094,2097,2111,2116,2264,2274,2290,2324,2327,2345,2357,2433,2438,2441,2447,2458,2569,2611,2614,2620,2645,2655,2667,2670,2676,2700,2740,2751,2770,2773,2779,2813,2852,2907,2925,2931,2981,2984,2990,3130,3133,3139,3294,3299],{"type":45,"tag":46,"props":47,"children":49},"element","h2",{"id":48},"purpose",[50],{"type":51,"value":52},"text","Purpose",{"type":45,"tag":54,"props":55,"children":56},"p",{},[57],{"type":51,"value":58},"Operate the VSS alert pipeline (mode detection, Alert-Bridge subscriptions, Slack notifications, queries, camera onboarding, verifier-prompt customization).",{"type":45,"tag":46,"props":60,"children":62},{"id":61},"prerequisites",[63],{"type":51,"value":64},"Prerequisites",{"type":45,"tag":66,"props":67,"children":68},"ul",{},[69,100,120],{"type":45,"tag":70,"props":71,"children":72},"li",{},[73,75,82,84,90,92,98],{"type":51,"value":74},"Active VSS deployment reachable on ",{"type":45,"tag":76,"props":77,"children":79},"code",{"className":78},[],[80],{"type":51,"value":81},"$HOST_IP",{"type":51,"value":83}," (see ",{"type":45,"tag":76,"props":85,"children":87},{"className":86},[],[88],{"type":51,"value":89},"vss-deploy-profile",{"type":51,"value":91}," and ",{"type":45,"tag":76,"props":93,"children":95},{"className":94},[],[96],{"type":51,"value":97},"references\u002F",{"type":51,"value":99},").",{"type":45,"tag":70,"props":101,"children":102},{},[103,105,111,112,118],{"type":51,"value":104},"NGC credentials in ",{"type":45,"tag":76,"props":106,"children":108},{"className":107},[],[109],{"type":51,"value":110},"$NGC_CLI_API_KEY",{"type":51,"value":91},{"type":45,"tag":76,"props":113,"children":115},{"className":114},[],[116],{"type":51,"value":117},"$NVIDIA_API_KEY",{"type":51,"value":119}," for any image pulls.",{"type":45,"tag":70,"props":121,"children":122},{},[123,129,131,137],{"type":45,"tag":76,"props":124,"children":126},{"className":125},[],[127],{"type":51,"value":128},"curl",{"type":51,"value":130},", ",{"type":45,"tag":76,"props":132,"children":134},{"className":133},[],[135],{"type":51,"value":136},"jq",{"type":51,"value":138},", and Docker available on the caller.",{"type":45,"tag":46,"props":140,"children":142},{"id":141},"instructions",[143],{"type":51,"value":144},"Instructions",{"type":45,"tag":54,"props":146,"children":147},{},[148,150,156,157,162,164,169,171,176,178,184,186,192],{"type":51,"value":149},"Follow the routing tables and step-by-step workflows below. Each section that ends in ",{"type":45,"tag":151,"props":152,"children":153},"em",{},[154],{"type":51,"value":155},"workflow",{"type":51,"value":130},{"type":45,"tag":151,"props":158,"children":159},{},[160],{"type":51,"value":161},"quick start",{"type":51,"value":163},", or ",{"type":45,"tag":151,"props":165,"children":166},{},[167],{"type":51,"value":168},"flow",{"type":51,"value":170}," is intended to be executed top-to-bottom. Detailed reference material lives in ",{"type":45,"tag":76,"props":172,"children":174},{"className":173},[],[175],{"type":51,"value":97},{"type":51,"value":177}," and helper scripts live in ",{"type":45,"tag":76,"props":179,"children":181},{"className":180},[],[182],{"type":51,"value":183},"scripts\u002F",{"type":51,"value":185}," — call them via ",{"type":45,"tag":76,"props":187,"children":189},{"className":188},[],[190],{"type":51,"value":191},"run_script",{"type":51,"value":193}," when the skill points to a script by name.",{"type":45,"tag":46,"props":195,"children":197},{"id":196},"examples",[198],{"type":51,"value":199},"Examples",{"type":45,"tag":54,"props":201,"children":202},{},[203,205,211,213,219,221,226,228,234],{"type":51,"value":204},"Runnable end-to-end scenarios live under ",{"type":45,"tag":76,"props":206,"children":208},{"className":207},[],[209],{"type":51,"value":210},"evals\u002F",{"type":51,"value":212}," (each ",{"type":45,"tag":76,"props":214,"children":216},{"className":215},[],[217],{"type":51,"value":218},"*.json",{"type":51,"value":220}," manifest); inline ",{"type":45,"tag":76,"props":222,"children":224},{"className":223},[],[225],{"type":51,"value":128},{"type":51,"value":227}," blocks appear in each workflow below. Replay with ",{"type":45,"tag":76,"props":229,"children":231},{"className":230},[],[232],{"type":51,"value":233},"nv-base validate \u003Cthis-skill-dir> --agent-eval",{"type":51,"value":235},".",{"type":45,"tag":46,"props":237,"children":239},{"id":238},"limitations",[240],{"type":51,"value":241},"Limitations",{"type":45,"tag":54,"props":243,"children":244},{},[245],{"type":51,"value":246},"Requires the matching VSS profile\u002Fmicroservice deployed and reachable. NGC-hosted models\u002FNIMs are subject to rate-limits, GPU-memory needs, and license terms; concurrency and storage limits depend on host hardware and the profile's compose file.",{"type":45,"tag":46,"props":248,"children":250},{"id":249},"troubleshooting",[251],{"type":51,"value":252},"Troubleshooting",{"type":45,"tag":66,"props":254,"children":255},{},[256,289,315],{"type":45,"tag":70,"props":257,"children":258},{},[259,265,267,273,275,281,283,288],{"type":45,"tag":260,"props":261,"children":262},"strong",{},[263],{"type":51,"value":264},"Connection refused",{"type":51,"value":266}," → microservice not running: probe ",{"type":45,"tag":76,"props":268,"children":270},{"className":269},[],[271],{"type":51,"value":272},"\u002Fdocs",{"type":51,"value":274}," or ",{"type":45,"tag":76,"props":276,"children":278},{"className":277},[],[279],{"type":51,"value":280},"\u002Fhealth",{"type":51,"value":282},", redeploy via ",{"type":45,"tag":76,"props":284,"children":286},{"className":285},[],[287],{"type":51,"value":89},{"type":51,"value":235},{"type":45,"tag":70,"props":290,"children":291},{},[292,297,299,305,307,313],{"type":45,"tag":260,"props":293,"children":294},{},[295],{"type":51,"value":296},"HTTP 401\u002F403 on NGC pulls",{"type":51,"value":298}," → missing\u002Fexpired ",{"type":45,"tag":76,"props":300,"children":302},{"className":301},[],[303],{"type":51,"value":304},"NGC_CLI_API_KEY",{"type":51,"value":306},": ",{"type":45,"tag":76,"props":308,"children":310},{"className":309},[],[311],{"type":51,"value":312},"docker login nvcr.io",{"type":51,"value":314}," and re-export the key.",{"type":45,"tag":70,"props":316,"children":317},{},[318,323,325,331],{"type":45,"tag":260,"props":319,"children":320},{},[321],{"type":51,"value":322},"OOM \u002F model load failure",{"type":51,"value":324}," → insufficient GPU memory: use a smaller variant or ",{"type":45,"tag":76,"props":326,"children":328},{"className":327},[],[329],{"type":51,"value":330},"docker compose down",{"type":51,"value":332}," to free GPUs.",{"type":45,"tag":334,"props":335,"children":337},"h1",{"id":336},"vss-alert-management",[338],{"type":51,"value":339},"VSS Alert Management",{"type":45,"tag":54,"props":341,"children":342},{},[343,345,351,353,358,360,365],{"type":51,"value":344},"The alerts profile runs in one of two modes (chosen at ",{"type":45,"tag":76,"props":346,"children":348},{"className":347},[],[349],{"type":51,"value":350},"\u002Fvss-deploy-profile -p alerts -m {verification,real-time}",{"type":51,"value":352},") — see ",{"type":45,"tag":260,"props":354,"children":355},{},[356],{"type":51,"value":357},"The Two Modes",{"type":51,"value":359}," table below. This skill routes by ",{"type":45,"tag":260,"props":361,"children":362},{},[363],{"type":51,"value":364},"deployed mode + user intent",{"type":51,"value":366}," (monitoring vs subscription CRUD vs Slack webhook).",{"type":45,"tag":46,"props":368,"children":370},{"id":369},"when-to-use",[371],{"type":51,"value":372},"When to Use",{"type":45,"tag":66,"props":374,"children":375},{},[376,381,386,391,396],{"type":45,"tag":70,"props":377,"children":378},{},[379],{"type":51,"value":380},"Start\u002Fstop a real-time alert on a sensor (\"Start real-time alert for boxes dropped on warehouse_sample\")",{"type":45,"tag":70,"props":382,"children":383},{},[384],{"type":51,"value":385},"Create\u002Flist\u002Fstop realtime subscription rules on Alert Bridge",{"type":45,"tag":70,"props":387,"children":388},{},[389],{"type":51,"value":390},"Set up or manage Slack incident notifications",{"type":45,"tag":70,"props":392,"children":393},{},[394],{"type":51,"value":395},"List or query detected incidents \u002F alerts; check verdicts (confirmed\u002Frejected\u002Funverified)",{"type":45,"tag":70,"props":397,"children":398},{},[399],{"type":51,"value":400},"Add a new camera to the alerts pipeline; customize VLM-verifier prompts (CV mode)",{"type":45,"tag":402,"props":403,"children":404},"hr",{},[],{"type":45,"tag":46,"props":406,"children":408},{"id":407},"deployment-prerequisite",[409],{"type":51,"value":410},"Deployment prerequisite",{"type":45,"tag":54,"props":412,"children":413},{},[414,416,421,423,428,430,436,438,444],{"type":51,"value":415},"Requires the VSS ",{"type":45,"tag":260,"props":417,"children":418},{},[419],{"type":51,"value":420},"alerts",{"type":51,"value":422}," profile on ",{"type":45,"tag":76,"props":424,"children":426},{"className":425},[],[427],{"type":51,"value":81},{"type":51,"value":429}," in either ",{"type":45,"tag":76,"props":431,"children":433},{"className":432},[],[434],{"type":51,"value":435},"verification",{"type":51,"value":437}," (CV) or ",{"type":45,"tag":76,"props":439,"children":441},{"className":440},[],[442],{"type":51,"value":443},"real-time",{"type":51,"value":445}," (VLM) mode.",{"type":45,"tag":447,"props":448,"children":453},"pre",{"className":449,"code":450,"language":451,"meta":452,"style":452},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Either vss-rtvi-cv (CV mode) OR vss-rtvi-vlm (VLM mode) must be present.\ncurl -sf --max-time 5 \"http:\u002F\u002F${HOST_IP}:8000\u002Fdocs\" >\u002Fdev\u002Fnull \\\n  && docker ps --format '{{.Names}}' \\\n     | grep -qE '^(vss-rtvi-cv|vss-rtvi-vlm)$'\n","bash","",[454],{"type":45,"tag":76,"props":455,"children":456},{"__ignoreMap":452},[457,469,547,590],{"type":45,"tag":458,"props":459,"children":462},"span",{"class":460,"line":461},"line",1,[463],{"type":45,"tag":458,"props":464,"children":466},{"style":465},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[467],{"type":51,"value":468},"# Either vss-rtvi-cv (CV mode) OR vss-rtvi-vlm (VLM mode) must be present.\n",{"type":45,"tag":458,"props":470,"children":472},{"class":460,"line":471},2,[473,478,484,489,495,501,506,511,517,522,527,532,537,542],{"type":45,"tag":458,"props":474,"children":476},{"style":475},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[477],{"type":51,"value":128},{"type":45,"tag":458,"props":479,"children":481},{"style":480},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[482],{"type":51,"value":483}," -sf",{"type":45,"tag":458,"props":485,"children":486},{"style":480},[487],{"type":51,"value":488}," --max-time",{"type":45,"tag":458,"props":490,"children":492},{"style":491},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[493],{"type":51,"value":494}," 5",{"type":45,"tag":458,"props":496,"children":498},{"style":497},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[499],{"type":51,"value":500}," \"",{"type":45,"tag":458,"props":502,"children":503},{"style":480},[504],{"type":51,"value":505},"http:\u002F\u002F",{"type":45,"tag":458,"props":507,"children":508},{"style":497},[509],{"type":51,"value":510},"${",{"type":45,"tag":458,"props":512,"children":514},{"style":513},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[515],{"type":51,"value":516},"HOST_IP",{"type":45,"tag":458,"props":518,"children":519},{"style":497},[520],{"type":51,"value":521},"}",{"type":45,"tag":458,"props":523,"children":524},{"style":480},[525],{"type":51,"value":526},":8000\u002Fdocs",{"type":45,"tag":458,"props":528,"children":529},{"style":497},[530],{"type":51,"value":531},"\"",{"type":45,"tag":458,"props":533,"children":534},{"style":497},[535],{"type":51,"value":536}," >",{"type":45,"tag":458,"props":538,"children":539},{"style":480},[540],{"type":51,"value":541},"\u002Fdev\u002Fnull",{"type":45,"tag":458,"props":543,"children":544},{"style":513},[545],{"type":51,"value":546}," \\\n",{"type":45,"tag":458,"props":548,"children":550},{"class":460,"line":549},3,[551,556,561,566,571,576,581,586],{"type":45,"tag":458,"props":552,"children":553},{"style":497},[554],{"type":51,"value":555},"  &&",{"type":45,"tag":458,"props":557,"children":558},{"style":475},[559],{"type":51,"value":560}," docker",{"type":45,"tag":458,"props":562,"children":563},{"style":480},[564],{"type":51,"value":565}," ps",{"type":45,"tag":458,"props":567,"children":568},{"style":480},[569],{"type":51,"value":570}," --format",{"type":45,"tag":458,"props":572,"children":573},{"style":497},[574],{"type":51,"value":575}," '",{"type":45,"tag":458,"props":577,"children":578},{"style":480},[579],{"type":51,"value":580},"{{.Names}}",{"type":45,"tag":458,"props":582,"children":583},{"style":497},[584],{"type":51,"value":585},"'",{"type":45,"tag":458,"props":587,"children":588},{"style":513},[589],{"type":51,"value":546},{"type":45,"tag":458,"props":591,"children":593},{"class":460,"line":592},4,[594,599,604,609,613,618],{"type":45,"tag":458,"props":595,"children":596},{"style":497},[597],{"type":51,"value":598},"     |",{"type":45,"tag":458,"props":600,"children":601},{"style":475},[602],{"type":51,"value":603}," grep",{"type":45,"tag":458,"props":605,"children":606},{"style":480},[607],{"type":51,"value":608}," -qE",{"type":45,"tag":458,"props":610,"children":611},{"style":497},[612],{"type":51,"value":575},{"type":45,"tag":458,"props":614,"children":615},{"style":480},[616],{"type":51,"value":617},"^(vss-rtvi-cv|vss-rtvi-vlm)$",{"type":45,"tag":458,"props":619,"children":620},{"style":497},[621],{"type":51,"value":622},"'\n",{"type":45,"tag":54,"props":624,"children":625},{},[626,628,634,636,641],{"type":51,"value":627},"If the probe fails, ask which mode to deploy and hand off to ",{"type":45,"tag":76,"props":629,"children":631},{"className":630},[],[632],{"type":51,"value":633},"\u002Fvss-deploy-profile -p alerts -m \u003Cmode>",{"type":51,"value":635}," (decline → stop; pre-authorized autonomous deploy → run directly with ",{"type":45,"tag":76,"props":637,"children":639},{"className":638},[],[640],{"type":51,"value":435},{"type":51,"value":642}," by default). If it passes, detect the mode per Step 1.",{"type":45,"tag":402,"props":644,"children":645},{},[],{"type":45,"tag":46,"props":647,"children":649},{"id":648},"the-two-modes-deploy-time-choice",[650],{"type":51,"value":651},"The Two Modes (Deploy-Time Choice)",{"type":45,"tag":653,"props":654,"children":655},"table",{},[656,698],{"type":45,"tag":657,"props":658,"children":659},"thead",{},[660],{"type":45,"tag":661,"props":662,"children":663},"tr",{},[664,670,675,688,693],{"type":45,"tag":665,"props":666,"children":667},"th",{},[668],{"type":51,"value":669},"Mode",{"type":45,"tag":665,"props":671,"children":672},{},[673],{"type":51,"value":674},"Deploy flag",{"type":45,"tag":665,"props":676,"children":677},{},[678,680,686],{"type":51,"value":679},"Env (",{"type":45,"tag":76,"props":681,"children":683},{"className":682},[],[684],{"type":51,"value":685},".env",{"type":51,"value":687},")",{"type":45,"tag":665,"props":689,"children":690},{},[691],{"type":51,"value":692},"What runs",{"type":45,"tag":665,"props":694,"children":695},{},[696],{"type":51,"value":697},"What is available",{"type":45,"tag":699,"props":700,"children":701},"tbody",{},[702,771],{"type":45,"tag":661,"props":703,"children":704},{},[705,714,723,732,754],{"type":45,"tag":706,"props":707,"children":708},"td",{},[709],{"type":45,"tag":260,"props":710,"children":711},{},[712],{"type":51,"value":713},"CV (verification)",{"type":45,"tag":706,"props":715,"children":716},{},[717],{"type":45,"tag":76,"props":718,"children":720},{"className":719},[],[721],{"type":51,"value":722},"-m verification",{"type":45,"tag":706,"props":724,"children":725},{},[726],{"type":45,"tag":76,"props":727,"children":729},{"className":728},[],[730],{"type":51,"value":731},"MODE=2d_cv",{"type":45,"tag":706,"props":733,"children":734},{},[735,737,743,745],{"type":51,"value":736},"RT-CV (Grounding DINO) + Behavior Analytics + ",{"type":45,"tag":76,"props":738,"children":740},{"className":739},[],[741],{"type":51,"value":742},"alert-bridge",{"type":51,"value":744}," VLM verifier + ",{"type":45,"tag":260,"props":746,"children":747},{},[748],{"type":45,"tag":76,"props":749,"children":751},{"className":750},[],[752],{"type":51,"value":753},"rtvi-vlm",{"type":45,"tag":706,"props":755,"children":756},{},[757,762,764,769],{"type":45,"tag":260,"props":758,"children":759},{},[760],{"type":51,"value":761},"Both",{"type":51,"value":763}," static CV pipeline (Workflow A) ",{"type":45,"tag":260,"props":765,"children":766},{},[767],{"type":51,"value":768},"and",{"type":51,"value":770}," dynamic VLM real-time alerts (Workflows B\u002FD)",{"type":45,"tag":661,"props":772,"children":773},{},[774,782,791,800,815],{"type":45,"tag":706,"props":775,"children":776},{},[777],{"type":45,"tag":260,"props":778,"children":779},{},[780],{"type":51,"value":781},"VLM (real-time)",{"type":45,"tag":706,"props":783,"children":784},{},[785],{"type":45,"tag":76,"props":786,"children":788},{"className":787},[],[789],{"type":51,"value":790},"-m real-time",{"type":45,"tag":706,"props":792,"children":793},{},[794],{"type":45,"tag":76,"props":795,"children":797},{"className":796},[],[798],{"type":51,"value":799},"MODE=2d_vlm",{"type":45,"tag":706,"props":801,"children":802},{},[803,808,810],{"type":45,"tag":76,"props":804,"children":806},{"className":805},[],[807],{"type":51,"value":742},{"type":51,"value":809}," + ",{"type":45,"tag":76,"props":811,"children":813},{"className":812},[],[814],{"type":51,"value":753},{"type":45,"tag":706,"props":816,"children":817},{},[818,823,825,830],{"type":45,"tag":260,"props":819,"children":820},{},[821],{"type":51,"value":822},"Only",{"type":51,"value":824}," dynamic VLM real-time alerts (Workflows B\u002FD) and ",{"type":45,"tag":76,"props":826,"children":828},{"className":827},[],[829],{"type":51,"value":742},{"type":51,"value":831}," backend. No static CV pipeline.",{"type":45,"tag":54,"props":833,"children":834},{},[835,840,842,847,849,855,857,862],{"type":45,"tag":260,"props":836,"children":837},{},[838],{"type":51,"value":839},"Switching modes",{"type":51,"value":841}," uses the ",{"type":45,"tag":76,"props":843,"children":845},{"className":844},[],[846],{"type":51,"value":89},{"type":51,"value":848}," teardown + deploy flow with the other ",{"type":45,"tag":76,"props":850,"children":852},{"className":851},[],[853],{"type":51,"value":854},"-m",{"type":51,"value":856}," flag (VLM → CV adds the CV pipeline; CV → VLM tears it down). ",{"type":45,"tag":76,"props":858,"children":860},{"className":859},[],[861],{"type":51,"value":753},{"type":51,"value":863}," runs in both modes.",{"type":45,"tag":402,"props":865,"children":866},{},[],{"type":45,"tag":46,"props":868,"children":870},{"id":869},"step-1-detect-the-currently-deployed-mode",[871],{"type":51,"value":872},"Step 1 — Detect the Currently Deployed Mode",{"type":45,"tag":54,"props":874,"children":875},{},[876,878,883,885,891,893,898],{"type":51,"value":877},"Before running any alert workflow, check which mode is live. Use ",{"type":45,"tag":260,"props":879,"children":880},{},[881],{"type":51,"value":882},"CV-only",{"type":51,"value":884}," containers as the signal — ",{"type":45,"tag":76,"props":886,"children":888},{"className":887},[],[889],{"type":51,"value":890},"vss-rtvi-vlm",{"type":51,"value":892}," is ",{"type":45,"tag":260,"props":894,"children":895},{},[896],{"type":51,"value":897},"not",{"type":51,"value":899}," a reliable mode signal because it runs in both modes.",{"type":45,"tag":447,"props":901,"children":903},{"className":449,"code":902,"language":451,"meta":452,"style":452},"# CV verification mode (vss-behavior-analytics + vss-rtvi-cv are CV-only)\ndocker ps --format '{{.Names}}' | grep -qx vss-behavior-analytics && echo \"mode=CV\"\n\n# VLM real-time mode (no CV pipeline; vss-rtvi-vlm still runs)\ndocker ps --format '{{.Names}}' | grep -qx vss-behavior-analytics || \\\n  docker ps --format '{{.Names}}' | grep -qx vss-rtvi-vlm && echo \"mode=VLM\"\n",[904],{"type":45,"tag":76,"props":905,"children":906},{"__ignoreMap":452},[907,915,987,996,1004,1057],{"type":45,"tag":458,"props":908,"children":909},{"class":460,"line":461},[910],{"type":45,"tag":458,"props":911,"children":912},{"style":465},[913],{"type":51,"value":914},"# CV verification mode (vss-behavior-analytics + vss-rtvi-cv are CV-only)\n",{"type":45,"tag":458,"props":916,"children":917},{"class":460,"line":471},[918,923,927,931,935,939,943,948,952,957,962,967,973,977,982],{"type":45,"tag":458,"props":919,"children":920},{"style":475},[921],{"type":51,"value":922},"docker",{"type":45,"tag":458,"props":924,"children":925},{"style":480},[926],{"type":51,"value":565},{"type":45,"tag":458,"props":928,"children":929},{"style":480},[930],{"type":51,"value":570},{"type":45,"tag":458,"props":932,"children":933},{"style":497},[934],{"type":51,"value":575},{"type":45,"tag":458,"props":936,"children":937},{"style":480},[938],{"type":51,"value":580},{"type":45,"tag":458,"props":940,"children":941},{"style":497},[942],{"type":51,"value":585},{"type":45,"tag":458,"props":944,"children":945},{"style":497},[946],{"type":51,"value":947}," |",{"type":45,"tag":458,"props":949,"children":950},{"style":475},[951],{"type":51,"value":603},{"type":45,"tag":458,"props":953,"children":954},{"style":480},[955],{"type":51,"value":956}," -qx",{"type":45,"tag":458,"props":958,"children":959},{"style":480},[960],{"type":51,"value":961}," vss-behavior-analytics",{"type":45,"tag":458,"props":963,"children":964},{"style":497},[965],{"type":51,"value":966}," &&",{"type":45,"tag":458,"props":968,"children":970},{"style":969},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[971],{"type":51,"value":972}," echo",{"type":45,"tag":458,"props":974,"children":975},{"style":497},[976],{"type":51,"value":500},{"type":45,"tag":458,"props":978,"children":979},{"style":480},[980],{"type":51,"value":981},"mode=CV",{"type":45,"tag":458,"props":983,"children":984},{"style":497},[985],{"type":51,"value":986},"\"\n",{"type":45,"tag":458,"props":988,"children":989},{"class":460,"line":549},[990],{"type":45,"tag":458,"props":991,"children":993},{"emptyLinePlaceholder":992},true,[994],{"type":51,"value":995},"\n",{"type":45,"tag":458,"props":997,"children":998},{"class":460,"line":592},[999],{"type":45,"tag":458,"props":1000,"children":1001},{"style":465},[1002],{"type":51,"value":1003},"# VLM real-time mode (no CV pipeline; vss-rtvi-vlm still runs)\n",{"type":45,"tag":458,"props":1005,"children":1007},{"class":460,"line":1006},5,[1008,1012,1016,1020,1024,1028,1032,1036,1040,1044,1048,1053],{"type":45,"tag":458,"props":1009,"children":1010},{"style":475},[1011],{"type":51,"value":922},{"type":45,"tag":458,"props":1013,"children":1014},{"style":480},[1015],{"type":51,"value":565},{"type":45,"tag":458,"props":1017,"children":1018},{"style":480},[1019],{"type":51,"value":570},{"type":45,"tag":458,"props":1021,"children":1022},{"style":497},[1023],{"type":51,"value":575},{"type":45,"tag":458,"props":1025,"children":1026},{"style":480},[1027],{"type":51,"value":580},{"type":45,"tag":458,"props":1029,"children":1030},{"style":497},[1031],{"type":51,"value":585},{"type":45,"tag":458,"props":1033,"children":1034},{"style":497},[1035],{"type":51,"value":947},{"type":45,"tag":458,"props":1037,"children":1038},{"style":475},[1039],{"type":51,"value":603},{"type":45,"tag":458,"props":1041,"children":1042},{"style":480},[1043],{"type":51,"value":956},{"type":45,"tag":458,"props":1045,"children":1046},{"style":480},[1047],{"type":51,"value":961},{"type":45,"tag":458,"props":1049,"children":1050},{"style":497},[1051],{"type":51,"value":1052}," ||",{"type":45,"tag":458,"props":1054,"children":1055},{"style":513},[1056],{"type":51,"value":546},{"type":45,"tag":458,"props":1058,"children":1060},{"class":460,"line":1059},6,[1061,1066,1070,1074,1078,1082,1086,1090,1094,1098,1103,1107,1111,1115,1120],{"type":45,"tag":458,"props":1062,"children":1063},{"style":475},[1064],{"type":51,"value":1065},"  docker",{"type":45,"tag":458,"props":1067,"children":1068},{"style":480},[1069],{"type":51,"value":565},{"type":45,"tag":458,"props":1071,"children":1072},{"style":480},[1073],{"type":51,"value":570},{"type":45,"tag":458,"props":1075,"children":1076},{"style":497},[1077],{"type":51,"value":575},{"type":45,"tag":458,"props":1079,"children":1080},{"style":480},[1081],{"type":51,"value":580},{"type":45,"tag":458,"props":1083,"children":1084},{"style":497},[1085],{"type":51,"value":585},{"type":45,"tag":458,"props":1087,"children":1088},{"style":497},[1089],{"type":51,"value":947},{"type":45,"tag":458,"props":1091,"children":1092},{"style":475},[1093],{"type":51,"value":603},{"type":45,"tag":458,"props":1095,"children":1096},{"style":480},[1097],{"type":51,"value":956},{"type":45,"tag":458,"props":1099,"children":1100},{"style":480},[1101],{"type":51,"value":1102}," vss-rtvi-vlm",{"type":45,"tag":458,"props":1104,"children":1105},{"style":497},[1106],{"type":51,"value":966},{"type":45,"tag":458,"props":1108,"children":1109},{"style":969},[1110],{"type":51,"value":972},{"type":45,"tag":458,"props":1112,"children":1113},{"style":497},[1114],{"type":51,"value":500},{"type":45,"tag":458,"props":1116,"children":1117},{"style":480},[1118],{"type":51,"value":1119},"mode=VLM",{"type":45,"tag":458,"props":1121,"children":1122},{"style":497},[1123],{"type":51,"value":986},{"type":45,"tag":54,"props":1125,"children":1126},{},[1127,1129,1135,1137,1142,1144,1149,1151,1156,1158,1163,1165,1170],{"type":51,"value":1128},"If ",{"type":45,"tag":76,"props":1130,"children":1132},{"className":1131},[],[1133],{"type":51,"value":1134},"vss-behavior-analytics",{"type":51,"value":1136}," is present → ",{"type":45,"tag":260,"props":1138,"children":1139},{},[1140],{"type":51,"value":1141},"CV mode",{"type":51,"value":1143}," (which also has ",{"type":45,"tag":76,"props":1145,"children":1147},{"className":1146},[],[1148],{"type":51,"value":890},{"type":51,"value":1150},").\nIf only ",{"type":45,"tag":76,"props":1152,"children":1154},{"className":1153},[],[1155],{"type":51,"value":890},{"type":51,"value":1157}," is present (and no CV pipeline) → ",{"type":45,"tag":260,"props":1159,"children":1160},{},[1161],{"type":51,"value":1162},"VLM mode",{"type":51,"value":1164},".\nIf neither matches, the alerts profile is not deployed — direct the user to the ",{"type":45,"tag":76,"props":1166,"children":1168},{"className":1167},[],[1169],{"type":51,"value":89},{"type":51,"value":1171}," skill.",{"type":45,"tag":54,"props":1173,"children":1174},{},[1175,1177,1183,1185,1191],{"type":51,"value":1176},"Alternative signal (preferred when ",{"type":45,"tag":76,"props":1178,"children":1180},{"className":1179},[],[1181],{"type":51,"value":1182},"docker ps",{"type":51,"value":1184}," isn't accessible): check the profile's ",{"type":45,"tag":76,"props":1186,"children":1188},{"className":1187},[],[1189],{"type":51,"value":1190},"generated.env",{"type":51,"value":1192},":",{"type":45,"tag":447,"props":1194,"children":1196},{"className":449,"code":1195,"language":451,"meta":452,"style":452},"grep -E '^MODE=' deploy\u002Fdocker\u002Fdeveloper-profiles\u002Fdev-profile-alerts\u002Fgenerated.env\n# MODE=2d_cv   → CV mode (full superset)\n# MODE=2d_vlm  → VLM real-time mode (vss-rtvi-vlm only; no vss-rtvi-cv)\n",[1197],{"type":45,"tag":76,"props":1198,"children":1199},{"__ignoreMap":452},[1200,1231,1239],{"type":45,"tag":458,"props":1201,"children":1202},{"class":460,"line":461},[1203,1208,1213,1217,1222,1226],{"type":45,"tag":458,"props":1204,"children":1205},{"style":475},[1206],{"type":51,"value":1207},"grep",{"type":45,"tag":458,"props":1209,"children":1210},{"style":480},[1211],{"type":51,"value":1212}," -E",{"type":45,"tag":458,"props":1214,"children":1215},{"style":497},[1216],{"type":51,"value":575},{"type":45,"tag":458,"props":1218,"children":1219},{"style":480},[1220],{"type":51,"value":1221},"^MODE=",{"type":45,"tag":458,"props":1223,"children":1224},{"style":497},[1225],{"type":51,"value":585},{"type":45,"tag":458,"props":1227,"children":1228},{"style":480},[1229],{"type":51,"value":1230}," deploy\u002Fdocker\u002Fdeveloper-profiles\u002Fdev-profile-alerts\u002Fgenerated.env\n",{"type":45,"tag":458,"props":1232,"children":1233},{"class":460,"line":471},[1234],{"type":45,"tag":458,"props":1235,"children":1236},{"style":465},[1237],{"type":51,"value":1238},"# MODE=2d_cv   → CV mode (full superset)\n",{"type":45,"tag":458,"props":1240,"children":1241},{"class":460,"line":549},[1242],{"type":45,"tag":458,"props":1243,"children":1244},{"style":465},[1245],{"type":51,"value":1246},"# MODE=2d_vlm  → VLM real-time mode (vss-rtvi-vlm only; no vss-rtvi-cv)\n",{"type":45,"tag":402,"props":1248,"children":1249},{},[],{"type":45,"tag":46,"props":1251,"children":1253},{"id":1252},"step-2-route-by-deployed-mode",[1254],{"type":51,"value":1255},"Step 2 — Route by Deployed Mode",{"type":45,"tag":653,"props":1257,"children":1258},{},[1259,1280],{"type":45,"tag":657,"props":1260,"children":1261},{},[1262],{"type":45,"tag":661,"props":1263,"children":1264},{},[1265,1270,1275],{"type":45,"tag":665,"props":1266,"children":1267},{},[1268],{"type":51,"value":1269},"Deployed mode",{"type":45,"tag":665,"props":1271,"children":1272},{},[1273],{"type":51,"value":1274},"User asks about…",{"type":45,"tag":665,"props":1276,"children":1277},{},[1278],{"type":51,"value":1279},"Action",{"type":45,"tag":699,"props":1281,"children":1282},{},[1283,1315,1355,1376,1416,1453,1487],{"type":45,"tag":661,"props":1284,"children":1285},{},[1286,1294,1299],{"type":45,"tag":706,"props":1287,"children":1288},{},[1289],{"type":45,"tag":260,"props":1290,"children":1291},{},[1292],{"type":51,"value":1293},"VLM real-time",{"type":45,"tag":706,"props":1295,"children":1296},{},[1297],{"type":51,"value":1298},"Slack webhook setup\u002Fstatus\u002Ftest\u002Fstop",{"type":45,"tag":706,"props":1300,"children":1301},{},[1302,1307,1309],{"type":45,"tag":260,"props":1303,"children":1304},{},[1305],{"type":51,"value":1306},"Workflow E",{"type":51,"value":1308}," — ",{"type":45,"tag":76,"props":1310,"children":1312},{"className":1311},[],[1313],{"type":51,"value":1314},"references\u002Falert-notify.md",{"type":45,"tag":661,"props":1316,"children":1317},{},[1318,1325,1338],{"type":45,"tag":706,"props":1319,"children":1320},{},[1321],{"type":45,"tag":260,"props":1322,"children":1323},{},[1324],{"type":51,"value":1293},{"type":45,"tag":706,"props":1326,"children":1327},{},[1328,1330,1336],{"type":51,"value":1329},"rule CRUD, or a realtime alert on a sensor with a detection condition, or stop\u002Fdelete a named alert (by ",{"type":45,"tag":76,"props":1331,"children":1333},{"className":1332},[],[1334],{"type":51,"value":1335},"alert_type",{"type":51,"value":1337},"\u002Fcondition or rule ID)",{"type":45,"tag":706,"props":1339,"children":1340},{},[1341,1346,1347,1353],{"type":45,"tag":260,"props":1342,"children":1343},{},[1344],{"type":51,"value":1345},"Workflow D",{"type":51,"value":1308},{"type":45,"tag":76,"props":1348,"children":1350},{"className":1349},[],[1351],{"type":51,"value":1352},"references\u002Falert-subscriptions.md",{"type":51,"value":1354}," (incl. two-step stop\u002Fconfirm)",{"type":45,"tag":661,"props":1356,"children":1357},{},[1358,1366,1371],{"type":45,"tag":706,"props":1359,"children":1360},{},[1361],{"type":45,"tag":260,"props":1362,"children":1363},{},[1364],{"type":51,"value":1365},"CV verification",{"type":45,"tag":706,"props":1367,"children":1368},{},[1369],{"type":51,"value":1370},"subscription\u002Frule CRUD or Slack\u002Fnotification setup",{"type":45,"tag":706,"props":1372,"children":1373},{},[1374],{"type":51,"value":1375},"Refuse — see canonical refusal text below",{"type":45,"tag":661,"props":1377,"children":1378},{},[1379,1387,1399],{"type":45,"tag":706,"props":1380,"children":1381},{},[1382],{"type":45,"tag":260,"props":1383,"children":1384},{},[1385],{"type":51,"value":1386},"CV or VLM",{"type":45,"tag":706,"props":1388,"children":1389},{},[1390,1392,1397],{"type":51,"value":1391},"generic start\u002Fstop monitoring ",{"type":45,"tag":260,"props":1393,"children":1394},{},[1395],{"type":51,"value":1396},"without",{"type":51,"value":1398}," a detection condition",{"type":45,"tag":706,"props":1400,"children":1401},{},[1402,1407,1409,1414],{"type":45,"tag":260,"props":1403,"children":1404},{},[1405],{"type":51,"value":1406},"Workflow B (VLM)",{"type":51,"value":1408}," — call the VSS Agent; ",{"type":45,"tag":76,"props":1410,"children":1412},{"className":1411},[],[1413],{"type":51,"value":753},{"type":51,"value":1415}," runs in both modes",{"type":45,"tag":661,"props":1417,"children":1418},{},[1419,1426,1438],{"type":45,"tag":706,"props":1420,"children":1421},{},[1422],{"type":45,"tag":260,"props":1423,"children":1424},{},[1425],{"type":51,"value":1386},{"type":45,"tag":706,"props":1427,"children":1428},{},[1429,1431,1436],{"type":51,"value":1430},"incident lookup \u002F ",{"type":45,"tag":151,"props":1432,"children":1433},{},[1434],{"type":51,"value":1435},"what happened",{"type":51,"value":1437}," (recent alerts, time-range, casual \"any alerts today?\")",{"type":45,"tag":706,"props":1439,"children":1440},{},[1441,1446,1448],{"type":45,"tag":260,"props":1442,"children":1443},{},[1444],{"type":51,"value":1445},"Workflow C (Query)",{"type":51,"value":1447}," — works on both; ",{"type":45,"tag":260,"props":1449,"children":1450},{},[1451],{"type":51,"value":1452},"always run the query, never answer from memory",{"type":45,"tag":661,"props":1454,"children":1455},{},[1456,1464,1469],{"type":45,"tag":706,"props":1457,"children":1458},{},[1459],{"type":45,"tag":260,"props":1460,"children":1461},{},[1462],{"type":51,"value":1463},"CV",{"type":45,"tag":706,"props":1465,"children":1466},{},[1467],{"type":51,"value":1468},"static CV alert onboarding \u002F verdict-prompt customization",{"type":45,"tag":706,"props":1470,"children":1471},{},[1472,1477,1479,1485],{"type":45,"tag":260,"props":1473,"children":1474},{},[1475],{"type":51,"value":1476},"Workflow A (CV)",{"type":51,"value":1478}," — onboard RTSP via ",{"type":45,"tag":76,"props":1480,"children":1482},{"className":1481},[],[1483],{"type":51,"value":1484},"vss-manage-video-io-storage",{"type":51,"value":1486},"; pipeline auto-picks it up",{"type":45,"tag":661,"props":1488,"children":1489},{},[1490,1498,1503],{"type":45,"tag":706,"props":1491,"children":1492},{},[1493],{"type":45,"tag":260,"props":1494,"children":1495},{},[1496],{"type":51,"value":1497},"VLM",{"type":45,"tag":706,"props":1499,"children":1500},{},[1501],{"type":51,"value":1502},"a CV \u002F behavior-analytics \u002F PPE-rule alert needing the static CV pipeline",{"type":45,"tag":706,"props":1504,"children":1505},{},[1506,1511,1513],{"type":45,"tag":260,"props":1507,"children":1508},{},[1509],{"type":51,"value":1510},"Redeployment required",{"type":51,"value":1512}," — confirm first, then ",{"type":45,"tag":76,"props":1514,"children":1516},{"className":1515},[],[1517],{"type":51,"value":1518},"vss-deploy-profile -m verification",{"type":45,"tag":54,"props":1520,"children":1521},{},[1522,1527],{"type":45,"tag":260,"props":1523,"children":1524},{},[1525],{"type":51,"value":1526},"Always confirm before triggering a redeploy.",{"type":51,"value":1528}," A mode switch stops all currently-running monitoring and restarts services.",{"type":45,"tag":1530,"props":1531,"children":1533},"h3",{"id":1532},"intent-precedence-first-match-wins",[1534],{"type":51,"value":1535},"Intent precedence (first match wins)",{"type":45,"tag":1537,"props":1538,"children":1539},"ol",{},[1540,1598,1658,1688,1760],{"type":45,"tag":70,"props":1541,"children":1542},{},[1543,1548,1550,1555,1556,1562,1563,1568,1569,1575,1576,1582,1584,1590,1592,1596],{"type":45,"tag":260,"props":1544,"children":1545},{},[1546],{"type":51,"value":1547},"Workflow E (Slack)",{"type":51,"value":1549}," — Slack-specific keywords (",{"type":45,"tag":76,"props":1551,"children":1553},{"className":1552},[],[1554],{"type":51,"value":22},{"type":51,"value":130},{"type":45,"tag":76,"props":1557,"children":1559},{"className":1558},[],[1560],{"type":51,"value":1561},"webhook",{"type":51,"value":809},{"type":45,"tag":76,"props":1564,"children":1566},{"className":1565},[],[1567],{"type":51,"value":22},{"type":51,"value":130},{"type":45,"tag":76,"props":1570,"children":1572},{"className":1571},[],[1573],{"type":51,"value":1574},"bot token",{"type":51,"value":130},{"type":45,"tag":76,"props":1577,"children":1579},{"className":1578},[],[1580],{"type":51,"value":1581},"slack channel",{"type":51,"value":1583},"). ",{"type":45,"tag":76,"props":1585,"children":1587},{"className":1586},[],[1588],{"type":51,"value":1589},"notify",{"type":51,"value":1591}," alone is ",{"type":45,"tag":260,"props":1593,"children":1594},{},[1595],{"type":51,"value":897},{"type":51,"value":1597}," sufficient.",{"type":45,"tag":70,"props":1599,"children":1600},{},[1601,1606,1608,1613,1615,1621,1622,1628,1630,1635,1637,1642,1644,1648,1650,1656],{"type":45,"tag":260,"props":1602,"children":1603},{},[1604],{"type":51,"value":1605},"Workflow D (Subscriptions)",{"type":51,"value":1607}," — sensor ",{"type":45,"tag":260,"props":1609,"children":1610},{},[1611],{"type":51,"value":1612},"plus",{"type":51,"value":1614}," a detection condition, rule CRUD keywords (",{"type":45,"tag":76,"props":1616,"children":1618},{"className":1617},[],[1619],{"type":51,"value":1620},"rule",{"type":51,"value":130},{"type":45,"tag":76,"props":1623,"children":1625},{"className":1624},[],[1626],{"type":51,"value":1627},"subscription",{"type":51,"value":1629},", rule ID), ",{"type":45,"tag":260,"props":1631,"children":1632},{},[1633],{"type":51,"value":1634},"or stopping\u002Fdeleting a named alert by type\u002Fcondition",{"type":51,"value":1636}," (\"stop the PPE alert\", \"delete the collision rule\"). A named ",{"type":45,"tag":76,"props":1638,"children":1640},{"className":1639},[],[1641],{"type":51,"value":1335},{"type":51,"value":1643},"\u002Fcondition = an existing ",{"type":45,"tag":260,"props":1645,"children":1646},{},[1647],{"type":51,"value":1620},{"type":51,"value":1649}," → D's two-step stop protocol (",{"type":45,"tag":76,"props":1651,"children":1653},{"className":1652},[],[1654],{"type":51,"value":1655},"GET \u002Fapi\u002Fv1\u002Frealtime",{"type":51,"value":1657}," → yes\u002Fno confirm → delete), never Workflow B.",{"type":45,"tag":70,"props":1659,"children":1660},{},[1661,1666,1668,1673,1675,1679,1681,1686],{"type":45,"tag":260,"props":1662,"children":1663},{},[1664],{"type":51,"value":1665},"Workflow B (VLM monitoring)",{"type":51,"value":1667}," — generic start\u002Fstop on a sensor with ",{"type":45,"tag":260,"props":1669,"children":1670},{},[1671],{"type":51,"value":1672},"no",{"type":51,"value":1674}," detection condition and ",{"type":45,"tag":260,"props":1676,"children":1677},{},[1678],{"type":51,"value":1672},{"type":51,"value":1680}," alert-type qualifier (\"start\u002Fstop real-time alert for sensor X\"). A stop that names a type (\"stop the ",{"type":45,"tag":260,"props":1682,"children":1683},{},[1684],{"type":51,"value":1685},"PPE",{"type":51,"value":1687}," alert\") is a rule stop → Workflow D.",{"type":45,"tag":70,"props":1689,"children":1690},{},[1691,1695,1697,1701,1703,1709,1710,1716,1718,1723,1725,1730,1732,1737,1739,1744,1745,1751,1753,1758],{"type":45,"tag":260,"props":1692,"children":1693},{},[1694],{"type":51,"value":1445},{"type":51,"value":1696}," — incident lookup \u002F ",{"type":45,"tag":151,"props":1698,"children":1699},{},[1700],{"type":51,"value":1435},{"type":51,"value":1702}," (",{"type":45,"tag":76,"props":1704,"children":1706},{"className":1705},[],[1707],{"type":51,"value":1708},"show\u002Flist incidents",{"type":51,"value":130},{"type":45,"tag":76,"props":1711,"children":1713},{"className":1712},[],[1714],{"type":51,"value":1715},"recent alerts",{"type":51,"value":1717},", time-range queries, ",{"type":45,"tag":260,"props":1719,"children":1720},{},[1721],{"type":51,"value":1722},"and casual \"any alerts…?\" \u002F \"any alerts so far today?\" \u002F \"what's been triggered?\" phrasings",{"type":51,"value":1724},"). Bare ",{"type":45,"tag":76,"props":1726,"children":1728},{"className":1727},[],[1729],{"type":51,"value":420},{"type":51,"value":1731}," (without ",{"type":45,"tag":76,"props":1733,"children":1735},{"className":1734},[],[1736],{"type":51,"value":1620},{"type":51,"value":1738},"\u002F",{"type":45,"tag":76,"props":1740,"children":1742},{"className":1741},[],[1743],{"type":51,"value":1627},{"type":51,"value":1738},{"type":45,"tag":76,"props":1746,"children":1748},{"className":1747},[],[1749],{"type":51,"value":1750},"active rules",{"type":51,"value":1752},") means ",{"type":45,"tag":260,"props":1754,"children":1755},{},[1756],{"type":51,"value":1757},"incidents",{"type":51,"value":1759}," → Workflow C, never Workflow D.",{"type":45,"tag":70,"props":1761,"children":1762},{},[1763,1767],{"type":45,"tag":260,"props":1764,"children":1765},{},[1766],{"type":51,"value":1476},{"type":51,"value":1768}," — CV deployment handling for anything not matched above.",{"type":45,"tag":1770,"props":1771,"children":1772},"blockquote",{},[1773],{"type":45,"tag":54,"props":1774,"children":1775},{},[1776,1794,1799,1801,1806,1808,1814,1815,1820,1822,1826,1828,1833,1835,1840,1842,1848,1849,1854,1856,1861,1863,1869,1870,1875],{"type":45,"tag":260,"props":1777,"children":1778},{},[1779,1784,1786,1792],{"type":45,"tag":76,"props":1780,"children":1782},{"className":1781},[],[1783],{"type":51,"value":420},{"type":51,"value":1785}," vs ",{"type":45,"tag":76,"props":1787,"children":1789},{"className":1788},[],[1790],{"type":51,"value":1791},"alert rules",{"type":51,"value":1793}," (C vs D) — pick exactly one, never both:",{"type":45,"tag":151,"props":1795,"children":1796},{},[1797],{"type":51,"value":1798},"what happened \u002F has been triggered",{"type":51,"value":1800}," (incidents) → ",{"type":45,"tag":260,"props":1802,"children":1803},{},[1804],{"type":51,"value":1805},"Workflow C",{"type":51,"value":1807},"\n(",{"type":45,"tag":76,"props":1809,"children":1811},{"className":1810},[],[1812],{"type":51,"value":1813},"POST \u002Fgenerate",{"type":51,"value":1583},{"type":45,"tag":151,"props":1816,"children":1817},{},[1818],{"type":51,"value":1819},"What\nrules\u002Fsubscriptions are configured or active",{"type":51,"value":1821}," → ",{"type":45,"tag":260,"props":1823,"children":1824},{},[1825],{"type":51,"value":1345},{"type":51,"value":1827}," (the\n",{"type":45,"tag":260,"props":1829,"children":1830},{},[1831],{"type":51,"value":1832},"bare",{"type":51,"value":1834}," ",{"type":45,"tag":76,"props":1836,"children":1838},{"className":1837},[],[1839],{"type":51,"value":1655},{"type":51,"value":1841},", no ",{"type":45,"tag":76,"props":1843,"children":1845},{"className":1844},[],[1846],{"type":51,"value":1847},"\u002Fincidents",{"type":51,"value":1724},{"type":45,"tag":76,"props":1850,"children":1852},{"className":1851},[],[1853],{"type":51,"value":420},{"type":51,"value":1855}," =\nincidents (C); ",{"type":45,"tag":76,"props":1857,"children":1859},{"className":1858},[],[1860],{"type":51,"value":1791},{"type":51,"value":1862}," \u002F ",{"type":45,"tag":76,"props":1864,"children":1866},{"className":1865},[],[1867],{"type":51,"value":1868},"subscriptions",{"type":51,"value":1862},{"type":45,"tag":76,"props":1871,"children":1873},{"className":1872},[],[1874],{"type":51,"value":1750},{"type":51,"value":1876}," =\ninventory (D). Never answer from memory; run the one correct call —\nfull endpoint detail in Workflow C below.",{"type":45,"tag":54,"props":1878,"children":1879},{},[1880,1885],{"type":45,"tag":260,"props":1881,"children":1882},{},[1883],{"type":51,"value":1884},"Disambiguation (B vs D):",{"type":51,"value":1886}," if a sensor is named with start\u002Fmonitor language but the detection condition is unclear, ask:",{"type":45,"tag":1770,"props":1888,"children":1889},{},[1890],{"type":45,"tag":54,"props":1891,"children":1892},{},[1893],{"type":45,"tag":151,"props":1894,"children":1895},{},[1896],{"type":51,"value":1897},"\"Do you want me to (a) create a persistent alert rule on Alert Bridge that keeps running until you delete it, or (b) start a one-time monitoring session via the VSS Agent?\"",{"type":45,"tag":54,"props":1899,"children":1900},{},[1901,1906,1908,1913,1915,1920,1922,1927,1928,1932,1934,1939,1941,1946,1948,1952,1954,1959,1961,1965],{"type":45,"tag":260,"props":1902,"children":1903},{},[1904],{"type":51,"value":1905},"Stop routing (B vs D):",{"type":51,"value":1907}," \"Stop the ",{"type":45,"tag":260,"props":1909,"children":1910},{},[1911],{"type":51,"value":1912},"\u003Ctype>",{"type":51,"value":1914}," alert\" (names an ",{"type":45,"tag":76,"props":1916,"children":1918},{"className":1917},[],[1919],{"type":51,"value":1335},{"type":51,"value":1921},"\u002Fcondition like PPE, collision, fire) = stop a ",{"type":45,"tag":260,"props":1923,"children":1924},{},[1925],{"type":51,"value":1926},"subscription rule",{"type":51,"value":1821},{"type":45,"tag":260,"props":1929,"children":1930},{},[1931],{"type":51,"value":1345},{"type":51,"value":1933}," (find via ",{"type":45,"tag":76,"props":1935,"children":1937},{"className":1936},[],[1938],{"type":51,"value":1655},{"type":51,"value":1940},", then the two-step stop\u002Fconfirm protocol in ",{"type":45,"tag":76,"props":1942,"children":1944},{"className":1943},[],[1945],{"type":51,"value":1352},{"type":51,"value":1947},"; do ",{"type":45,"tag":260,"props":1949,"children":1950},{},[1951],{"type":51,"value":897},{"type":51,"value":1953}," call ",{"type":45,"tag":76,"props":1955,"children":1957},{"className":1956},[],[1958],{"type":51,"value":1813},{"type":51,"value":1960},"). A bare \"stop real-time alert \u002F stop monitoring on \u003Csensor>\" with ",{"type":45,"tag":260,"props":1962,"children":1963},{},[1964],{"type":51,"value":1672},{"type":51,"value":1966}," type qualifier = Workflow B.",{"type":45,"tag":54,"props":1968,"children":1969},{},[1970],{"type":51,"value":1971},"If a prompt mixes workflows (\"start monitoring and send to Slack\"), ask one clarifying question to split execution order.",{"type":45,"tag":1530,"props":1973,"children":1975},{"id":1974},"cv-mode-refusal-text-for-d-and-e-intents",[1976],{"type":51,"value":1977},"CV-mode refusal text for D and E intents",{"type":45,"tag":54,"props":1979,"children":1980},{},[1981],{"type":51,"value":1982},"When the deployed mode is CV verification and the user asks for an alert-subscription or Slack\u002Fnotification intent, refuse with this message verbatim:",{"type":45,"tag":1770,"props":1984,"children":1985},{},[1986],{"type":45,"tag":54,"props":1987,"children":1988},{},[1989,1991,1997,1999,2005],{"type":51,"value":1990},"\"Alert subscriptions and Slack notifications are only supported in VLM real-time mode. Your current deployment is ",{"type":45,"tag":76,"props":1992,"children":1994},{"className":1993},[],[1995],{"type":51,"value":1996},"\u003CCV verification | not deployed>",{"type":51,"value":1998},". To use these features, redeploy with ",{"type":45,"tag":76,"props":2000,"children":2002},{"className":2001},[],[2003],{"type":51,"value":2004},"\u002Fvss-deploy-profile -p alerts -m real-time",{"type":51,"value":2006}," (note: switching tears down current CV monitoring).\"",{"type":45,"tag":54,"props":2008,"children":2009},{},[2010],{"type":51,"value":2011},"No auto-redeploy. The user decides whether to switch modes.",{"type":45,"tag":402,"props":2013,"children":2014},{},[],{"type":45,"tag":46,"props":2016,"children":2018},{"id":2017},"prereq-for-either-mode-sensor-must-be-in-vios",[2019],{"type":51,"value":2020},"Prereq for Either Mode: Sensor Must Be in VIOS",{"type":45,"tag":54,"props":2022,"children":2023},{},[2024,2026,2031],{"type":51,"value":2025},"Both modes require the camera registered in VIOS first (via the ",{"type":45,"tag":76,"props":2027,"children":2029},{"className":2028},[],[2030],{"type":51,"value":1484},{"type":51,"value":2032}," skill):",{"type":45,"tag":66,"props":2034,"children":2035},{},[2036,2057],{"type":45,"tag":70,"props":2037,"children":2038},{},[2039,2041,2047,2049,2055],{"type":51,"value":2040},"RTSP URL \u002F IP camera → add it with ",{"type":45,"tag":76,"props":2042,"children":2044},{"className":2043},[],[2045],{"type":51,"value":2046},"POST \u002Fsensor\u002Fadd",{"type":51,"value":2048}," (that skill's Section 6); record the ",{"type":45,"tag":76,"props":2050,"children":2052},{"className":2051},[],[2053],{"type":51,"value":2054},"sensorId",{"type":51,"value":2056}," \u002F name.",{"type":45,"tag":70,"props":2058,"children":2059},{},[2060,2062,2068],{"type":51,"value":2061},"Named existing sensor → confirm it appears in ",{"type":45,"tag":76,"props":2063,"children":2065},{"className":2064},[],[2066],{"type":51,"value":2067},"GET \u002Fsensor\u002Flist",{"type":51,"value":2069}," before proceeding.",{"type":45,"tag":54,"props":2071,"children":2072},{},[2073,2075,2079,2081,2086,2088,2092],{"type":51,"value":2074},"On ",{"type":45,"tag":260,"props":2076,"children":2077},{},[2078],{"type":51,"value":1463},{"type":51,"value":2080},", adding the RTSP is the ",{"type":45,"tag":151,"props":2082,"children":2083},{},[2084],{"type":51,"value":2085},"entire",{"type":51,"value":2087}," onboarding step (pipeline auto-picks it up). On ",{"type":45,"tag":260,"props":2089,"children":2090},{},[2091],{"type":51,"value":1497},{"type":51,"value":2093},", it is a prerequisite to Workflow B.",{"type":45,"tag":402,"props":2095,"children":2096},{},[],{"type":45,"tag":46,"props":2098,"children":2100},{"id":2099},"the-agent-generate-endpoint",[2101,2103,2109],{"type":51,"value":2102},"The Agent ",{"type":45,"tag":76,"props":2104,"children":2106},{"className":2105},[],[2107],{"type":51,"value":2108},"\u002Fgenerate",{"type":51,"value":2110}," Endpoint",{"type":45,"tag":54,"props":2112,"children":2113},{},[2114],{"type":51,"value":2115},"All VLM-flow actions and all query actions go through the VSS Agent's natural-language endpoint:",{"type":45,"tag":447,"props":2117,"children":2119},{"className":449,"code":2118,"language":451,"meta":452,"style":452},"AGENT=\"http:\u002F\u002F\u003CAGENT_ENDPOINT>\"   # default http:\u002F\u002Flocalhost:8000 on the alerts profile\n\ncurl -s -X POST \"$AGENT\u002Fgenerate\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"input_message\": \"\u003Cnatural-language request>\"}' | jq .\n",[2120],{"type":45,"tag":76,"props":2121,"children":2122},{"__ignoreMap":452},[2123,2154,2161,2204,2229],{"type":45,"tag":458,"props":2124,"children":2125},{"class":460,"line":461},[2126,2131,2136,2140,2145,2149],{"type":45,"tag":458,"props":2127,"children":2128},{"style":513},[2129],{"type":51,"value":2130},"AGENT",{"type":45,"tag":458,"props":2132,"children":2133},{"style":497},[2134],{"type":51,"value":2135},"=",{"type":45,"tag":458,"props":2137,"children":2138},{"style":497},[2139],{"type":51,"value":531},{"type":45,"tag":458,"props":2141,"children":2142},{"style":480},[2143],{"type":51,"value":2144},"http:\u002F\u002F\u003CAGENT_ENDPOINT>",{"type":45,"tag":458,"props":2146,"children":2147},{"style":497},[2148],{"type":51,"value":531},{"type":45,"tag":458,"props":2150,"children":2151},{"style":465},[2152],{"type":51,"value":2153},"   # default http:\u002F\u002Flocalhost:8000 on the alerts profile\n",{"type":45,"tag":458,"props":2155,"children":2156},{"class":460,"line":471},[2157],{"type":45,"tag":458,"props":2158,"children":2159},{"emptyLinePlaceholder":992},[2160],{"type":51,"value":995},{"type":45,"tag":458,"props":2162,"children":2163},{"class":460,"line":549},[2164,2168,2173,2178,2183,2187,2192,2196,2200],{"type":45,"tag":458,"props":2165,"children":2166},{"style":475},[2167],{"type":51,"value":128},{"type":45,"tag":458,"props":2169,"children":2170},{"style":480},[2171],{"type":51,"value":2172}," -s",{"type":45,"tag":458,"props":2174,"children":2175},{"style":480},[2176],{"type":51,"value":2177}," -X",{"type":45,"tag":458,"props":2179,"children":2180},{"style":480},[2181],{"type":51,"value":2182}," POST",{"type":45,"tag":458,"props":2184,"children":2185},{"style":497},[2186],{"type":51,"value":500},{"type":45,"tag":458,"props":2188,"children":2189},{"style":513},[2190],{"type":51,"value":2191},"$AGENT",{"type":45,"tag":458,"props":2193,"children":2194},{"style":480},[2195],{"type":51,"value":2108},{"type":45,"tag":458,"props":2197,"children":2198},{"style":497},[2199],{"type":51,"value":531},{"type":45,"tag":458,"props":2201,"children":2202},{"style":513},[2203],{"type":51,"value":546},{"type":45,"tag":458,"props":2205,"children":2206},{"class":460,"line":592},[2207,2212,2216,2221,2225],{"type":45,"tag":458,"props":2208,"children":2209},{"style":480},[2210],{"type":51,"value":2211},"  -H",{"type":45,"tag":458,"props":2213,"children":2214},{"style":497},[2215],{"type":51,"value":500},{"type":45,"tag":458,"props":2217,"children":2218},{"style":480},[2219],{"type":51,"value":2220},"Content-Type: application\u002Fjson",{"type":45,"tag":458,"props":2222,"children":2223},{"style":497},[2224],{"type":51,"value":531},{"type":45,"tag":458,"props":2226,"children":2227},{"style":513},[2228],{"type":51,"value":546},{"type":45,"tag":458,"props":2230,"children":2231},{"class":460,"line":1006},[2232,2237,2241,2246,2250,2254,2259],{"type":45,"tag":458,"props":2233,"children":2234},{"style":480},[2235],{"type":51,"value":2236},"  -d",{"type":45,"tag":458,"props":2238,"children":2239},{"style":497},[2240],{"type":51,"value":575},{"type":45,"tag":458,"props":2242,"children":2243},{"style":480},[2244],{"type":51,"value":2245},"{\"input_message\": \"\u003Cnatural-language request>\"}",{"type":45,"tag":458,"props":2247,"children":2248},{"style":497},[2249],{"type":51,"value":585},{"type":45,"tag":458,"props":2251,"children":2252},{"style":497},[2253],{"type":51,"value":947},{"type":45,"tag":458,"props":2255,"children":2256},{"style":475},[2257],{"type":51,"value":2258}," jq",{"type":45,"tag":458,"props":2260,"children":2261},{"style":480},[2262],{"type":51,"value":2263}," .\n",{"type":45,"tag":54,"props":2265,"children":2266},{},[2267,2272],{"type":45,"tag":260,"props":2268,"children":2269},{},[2270],{"type":51,"value":2271},"Endpoint resolution:",{"type":51,"value":2273}," use the agent endpoint from the active VSS deployment context. If unavailable, ask the user. Do not discover via filesystem.",{"type":45,"tag":54,"props":2275,"children":2276},{},[2277,2282,2283,2289],{"type":45,"tag":260,"props":2278,"children":2279},{},[2280],{"type":51,"value":2281},"Availability check:",{"type":51,"value":1834},{"type":45,"tag":76,"props":2284,"children":2286},{"className":2285},[],[2287],{"type":51,"value":2288},"curl -sf --connect-timeout 5 \"$AGENT\u002Fdocs\"",{"type":51,"value":235},{"type":45,"tag":54,"props":2291,"children":2292},{},[2293,2295,2300,2302,2308,2309,2315,2317,2323],{"type":51,"value":2294},"Do not call the ",{"type":45,"tag":76,"props":2296,"children":2298},{"className":2297},[],[2299],{"type":51,"value":753},{"type":51,"value":2301}," microservice endpoints directly — always go through the agent. The agent internally dispatches to ",{"type":45,"tag":76,"props":2303,"children":2305},{"className":2304},[],[2306],{"type":51,"value":2307},"rtvi_vlm_alert",{"type":51,"value":130},{"type":45,"tag":76,"props":2310,"children":2312},{"className":2311},[],[2313],{"type":51,"value":2314},"rtvi_prompt_gen",{"type":51,"value":2316},", and ",{"type":45,"tag":76,"props":2318,"children":2320},{"className":2319},[],[2321],{"type":51,"value":2322},"video_analytics_mcp.get_incidents",{"type":51,"value":235},{"type":45,"tag":402,"props":2325,"children":2326},{},[],{"type":45,"tag":46,"props":2328,"children":2330},{"id":2329},"workflow-a-cv-mode-m-verification-mode2d_cv",[2331,2333,2338,2339,2344],{"type":51,"value":2332},"Workflow A — CV Mode (",{"type":45,"tag":76,"props":2334,"children":2336},{"className":2335},[],[2337],{"type":51,"value":722},{"type":51,"value":1862},{"type":45,"tag":76,"props":2340,"children":2342},{"className":2341},[],[2343],{"type":51,"value":731},{"type":51,"value":687},{"type":45,"tag":54,"props":2346,"children":2347},{},[2348,2350,2355],{"type":51,"value":2349},"CV alerts are ",{"type":45,"tag":260,"props":2351,"children":2352},{},[2353],{"type":51,"value":2354},"deployment-driven, not request-driven",{"type":51,"value":2356}," — there is no agent\ncall to \"create\" one.",{"type":45,"tag":1537,"props":2358,"children":2359},{},[2360,2385,2397,2408],{"type":45,"tag":70,"props":2361,"children":2362},{},[2363,2365,2370,2372,2377,2379,2384],{"type":51,"value":2364},"Check if the sensor is in VIOS via ",{"type":45,"tag":76,"props":2366,"children":2368},{"className":2367},[],[2369],{"type":51,"value":1484},{"type":51,"value":2371},"'s ",{"type":45,"tag":76,"props":2373,"children":2375},{"className":2374},[],[2376],{"type":51,"value":2067},{"type":51,"value":2378}," (idempotent — don't blindly ",{"type":45,"tag":76,"props":2380,"children":2382},{"className":2381},[],[2383],{"type":51,"value":2046},{"type":51,"value":99},{"type":45,"tag":70,"props":2386,"children":2387},{},[2388,2390,2395],{"type":51,"value":2389},"If missing, onboard via that skill's ",{"type":45,"tag":76,"props":2391,"children":2393},{"className":2392},[],[2394],{"type":51,"value":2046},{"type":51,"value":2396},". The CV pipeline auto-picks up the stream once registered and online.",{"type":45,"tag":70,"props":2398,"children":2399},{},[2400,2402],{"type":51,"value":2401},"Confirm online: ",{"type":45,"tag":76,"props":2403,"children":2405},{"className":2404},[],[2406],{"type":51,"value":2407},"curl -s \"http:\u002F\u002F\u003CVST_ENDPOINT>\u002Fvst\u002Fapi\u002Fv1\u002Fsensor\u002F\u003CsensorId>\u002Fstatus\" | jq .",{"type":45,"tag":70,"props":2409,"children":2410},{},[2411,2413,2418,2420,2426,2428,2432],{"type":51,"value":2412},"Alerts land in Elasticsearch (Behavior Analytics → ",{"type":45,"tag":76,"props":2414,"children":2416},{"className":2415},[],[2417],{"type":51,"value":742},{"type":51,"value":2419}," verification per ",{"type":45,"tag":76,"props":2421,"children":2423},{"className":2422},[],[2424],{"type":51,"value":2425},"alert_type_config.json",{"type":51,"value":2427},"). Query with ",{"type":45,"tag":260,"props":2429,"children":2430},{},[2431],{"type":51,"value":1805},{"type":51,"value":235},{"type":45,"tag":54,"props":2434,"children":2435},{},[2436],{"type":51,"value":2437},"A static-CV-pipeline alert on a VLM-only deployment is a mode mismatch — see the routing table above.",{"type":45,"tag":402,"props":2439,"children":2440},{},[],{"type":45,"tag":46,"props":2442,"children":2444},{"id":2443},"workflow-b-vlm-real-time-monitoring-cv-or-vlm-mode",[2445],{"type":51,"value":2446},"Workflow B — VLM Real-time Monitoring (CV or VLM mode)",{"type":45,"tag":54,"props":2448,"children":2449},{},[2450,2452,2457],{"type":51,"value":2451},"Generic start \u002F stop intents through the VSS Agent for a named sensor\nwithout a detection condition (if a condition is present, route to\nWorkflow D). ",{"type":45,"tag":76,"props":2453,"children":2455},{"className":2454},[],[2456],{"type":51,"value":753},{"type":51,"value":863},{"type":45,"tag":447,"props":2459,"children":2461},{"className":449,"code":2460,"language":451,"meta":452,"style":452},"# start: input_message = \"Start real-time alert for sensor \u003Cid>\"\n# stop:  input_message = \"Stop real-time alert for sensor \u003Cid>\"\ncurl -s -X POST \"$AGENT\u002Fgenerate\" -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"input_message\": \"\u003Cstart|stop> real-time alert for sensor \u003Cid>\"}' | jq .\n",[2462],{"type":45,"tag":76,"props":2463,"children":2464},{"__ignoreMap":452},[2465,2473,2481,2537],{"type":45,"tag":458,"props":2466,"children":2467},{"class":460,"line":461},[2468],{"type":45,"tag":458,"props":2469,"children":2470},{"style":465},[2471],{"type":51,"value":2472},"# start: input_message = \"Start real-time alert for sensor \u003Cid>\"\n",{"type":45,"tag":458,"props":2474,"children":2475},{"class":460,"line":471},[2476],{"type":45,"tag":458,"props":2477,"children":2478},{"style":465},[2479],{"type":51,"value":2480},"# stop:  input_message = \"Stop real-time alert for sensor \u003Cid>\"\n",{"type":45,"tag":458,"props":2482,"children":2483},{"class":460,"line":549},[2484,2488,2492,2496,2500,2504,2508,2512,2516,2521,2525,2529,2533],{"type":45,"tag":458,"props":2485,"children":2486},{"style":475},[2487],{"type":51,"value":128},{"type":45,"tag":458,"props":2489,"children":2490},{"style":480},[2491],{"type":51,"value":2172},{"type":45,"tag":458,"props":2493,"children":2494},{"style":480},[2495],{"type":51,"value":2177},{"type":45,"tag":458,"props":2497,"children":2498},{"style":480},[2499],{"type":51,"value":2182},{"type":45,"tag":458,"props":2501,"children":2502},{"style":497},[2503],{"type":51,"value":500},{"type":45,"tag":458,"props":2505,"children":2506},{"style":513},[2507],{"type":51,"value":2191},{"type":45,"tag":458,"props":2509,"children":2510},{"style":480},[2511],{"type":51,"value":2108},{"type":45,"tag":458,"props":2513,"children":2514},{"style":497},[2515],{"type":51,"value":531},{"type":45,"tag":458,"props":2517,"children":2518},{"style":480},[2519],{"type":51,"value":2520}," -H",{"type":45,"tag":458,"props":2522,"children":2523},{"style":497},[2524],{"type":51,"value":500},{"type":45,"tag":458,"props":2526,"children":2527},{"style":480},[2528],{"type":51,"value":2220},{"type":45,"tag":458,"props":2530,"children":2531},{"style":497},[2532],{"type":51,"value":531},{"type":45,"tag":458,"props":2534,"children":2535},{"style":513},[2536],{"type":51,"value":546},{"type":45,"tag":458,"props":2538,"children":2539},{"class":460,"line":592},[2540,2544,2548,2553,2557,2561,2565],{"type":45,"tag":458,"props":2541,"children":2542},{"style":480},[2543],{"type":51,"value":2236},{"type":45,"tag":458,"props":2545,"children":2546},{"style":497},[2547],{"type":51,"value":575},{"type":45,"tag":458,"props":2549,"children":2550},{"style":480},[2551],{"type":51,"value":2552},"{\"input_message\": \"\u003Cstart|stop> real-time alert for sensor \u003Cid>\"}",{"type":45,"tag":458,"props":2554,"children":2555},{"style":497},[2556],{"type":51,"value":585},{"type":45,"tag":458,"props":2558,"children":2559},{"style":497},[2560],{"type":51,"value":947},{"type":45,"tag":458,"props":2562,"children":2563},{"style":475},[2564],{"type":51,"value":2258},{"type":45,"tag":458,"props":2566,"children":2567},{"style":480},[2568],{"type":51,"value":2263},{"type":45,"tag":54,"props":2570,"children":2571},{},[2572,2574,2579,2580,2586,2588,2594,2595,2601,2603,2609],{"type":51,"value":2573},"Under the hood: ",{"type":45,"tag":76,"props":2575,"children":2577},{"className":2576},[],[2578],{"type":51,"value":2314},{"type":51,"value":1821},{"type":45,"tag":76,"props":2581,"children":2583},{"className":2582},[],[2584],{"type":51,"value":2585},"rtvi_vlm_alert action=\"start\"",{"type":51,"value":2587},".\nEvery chunk is captioned; a chunk whose VLM response contains ",{"type":45,"tag":76,"props":2589,"children":2591},{"className":2590},[],[2592],{"type":51,"value":2593},"yes",{"type":51,"value":1738},{"type":45,"tag":76,"props":2596,"children":2598},{"className":2597},[],[2599],{"type":51,"value":2600},"true",{"type":51,"value":2602},"\n(case-insensitive) publishes an incident to ",{"type":45,"tag":76,"props":2604,"children":2606},{"className":2605},[],[2607],{"type":51,"value":2608},"mdx-vlm-incidents",{"type":51,"value":2610},". Prompts\nmust force a Yes\u002FNo answer. A static-CV-pipeline request on a VLM-only\ndeployment is a mode mismatch — see the routing table.",{"type":45,"tag":402,"props":2612,"children":2613},{},[],{"type":45,"tag":46,"props":2615,"children":2617},{"id":2616},"workflow-d-alert-subscriptions-vlm-real-time-mode-only",[2618],{"type":51,"value":2619},"Workflow D — Alert Subscriptions (VLM real-time mode only)",{"type":45,"tag":54,"props":2621,"children":2622},{},[2623,2625,2630,2631,2636,2638,2643],{"type":51,"value":2624},"Create \u002F list \u002F delete persistent realtime alert rules on Alert Bridge.\nRoute here when the prompt has rule keywords (",{"type":45,"tag":76,"props":2626,"children":2628},{"className":2627},[],[2629],{"type":51,"value":1620},{"type":51,"value":130},{"type":45,"tag":76,"props":2632,"children":2634},{"className":2633},[],[2635],{"type":51,"value":1627},{"type":51,"value":2637},", a rule\nID) ",{"type":45,"tag":260,"props":2639,"children":2640},{},[2641],{"type":51,"value":2642},"or",{"type":51,"value":2644}," when it pairs a specific sensor with a specific detection\ncondition (e.g. \"Set up a realtime alert on warehouse-dock-1 for PPE\nviolations\", \"Watch sensor entrance-1 for tailgating\", \"Stop rule\n496aebd1-…\").",{"type":45,"tag":54,"props":2646,"children":2647},{},[2648,2653],{"type":45,"tag":260,"props":2649,"children":2650},{},[2651],{"type":51,"value":2652},"Not here:",{"type":51,"value":2654}," generic start\u002Fstop without a condition (→ Workflow B) or Slack\noperations (→ Workflow E).",{"type":45,"tag":54,"props":2656,"children":2657},{},[2658,2660,2665],{"type":51,"value":2659},"Load and follow ",{"type":45,"tag":76,"props":2661,"children":2663},{"className":2662},[],[2664],{"type":51,"value":1352},{"type":51,"value":2666}," as the authoritative\nplaybook for subscription CRUD. VLM real-time mode only; refuse with the\ncanonical refusal text on CV.",{"type":45,"tag":402,"props":2668,"children":2669},{},[],{"type":45,"tag":46,"props":2671,"children":2673},{"id":2672},"workflow-e-slack-notifications-vlm-real-time-mode-only",[2674],{"type":51,"value":2675},"Workflow E — Slack Notifications (VLM real-time mode only)",{"type":45,"tag":54,"props":2677,"children":2678},{},[2679,2681,2686,2688,2693,2694,2698],{"type":51,"value":2680},"Use when the user ",{"type":45,"tag":260,"props":2682,"children":2683},{},[2684],{"type":51,"value":2685},"explicitly mentions Slack or the webhook relay",{"type":51,"value":2687}," (start\u002Fstop webhook server, check status\u002Fhealth, send a test message, set Slack channel\u002Ftoken). The word ",{"type":45,"tag":76,"props":2689,"children":2691},{"className":2690},[],[2692],{"type":51,"value":1589},{"type":51,"value":1591},{"type":45,"tag":260,"props":2695,"children":2696},{},[2697],{"type":51,"value":897},{"type":51,"value":2699}," enough.",{"type":45,"tag":1770,"props":2701,"children":2702},{},[2703],{"type":45,"tag":54,"props":2704,"children":2705},{},[2706,2731,2733,2738],{"type":45,"tag":260,"props":2707,"children":2708},{},[2709,2715,2717,2723,2724,2730],{"type":45,"tag":76,"props":2710,"children":2712},{"className":2711},[],[2713],{"type":51,"value":2714},"alert-notify",{"type":51,"value":2716}," (port 9090) ≠ ",{"type":45,"tag":76,"props":2718,"children":2720},{"className":2719},[],[2721],{"type":51,"value":2722},"vss-alert-bridge",{"type":51,"value":1702},{"type":45,"tag":76,"props":2725,"children":2727},{"className":2726},[],[2728],{"type":51,"value":2729},"\u002Fapi\u002Fv1\u002Frealtime",{"type":51,"value":99},{"type":51,"value":2732},"\nDo NOT touch ",{"type":45,"tag":76,"props":2734,"children":2736},{"className":2735},[],[2737],{"type":51,"value":2722},{"type":51,"value":2739}," for Slack ops.",{"type":45,"tag":54,"props":2741,"children":2742},{},[2743,2745,2749],{"type":51,"value":2744},"Routes here: \"Set up Slack notifications\", \"Check if alert-notify is running\", \"Send a test alert to Slack\". Does ",{"type":45,"tag":260,"props":2746,"children":2747},{},[2748],{"type":51,"value":897},{"type":51,"value":2750}," route here: \"Notify me when someone enters the zone\" (→ D\u002FB), \"Alert and notify on my phone\" (ambiguous — ask).",{"type":45,"tag":54,"props":2752,"children":2753},{},[2754,2755,2760,2762,2768],{"type":51,"value":2659},{"type":45,"tag":76,"props":2756,"children":2758},{"className":2757},[],[2759],{"type":51,"value":1314},{"type":51,"value":2761},". Code lives in ",{"type":45,"tag":76,"props":2763,"children":2765},{"className":2764},[],[2766],{"type":51,"value":2767},"scripts\u002Falert-notify\u002F",{"type":51,"value":2769},". VLM real-time mode only.",{"type":45,"tag":402,"props":2771,"children":2772},{},[],{"type":45,"tag":46,"props":2774,"children":2776},{"id":2775},"workflow-c-query-list-alerts-works-on-either-mode",[2777],{"type":51,"value":2778},"Workflow C — Query \u002F List Alerts (works on either mode)",{"type":45,"tag":54,"props":2780,"children":2781},{},[2782,2784,2789,2791,2797,2799,2805,2806,2811],{"type":51,"value":2783},"Both CV- and VLM-generated alerts land in Elasticsearch and are\nqueryable via the agent's ",{"type":45,"tag":76,"props":2785,"children":2787},{"className":2786},[],[2788],{"type":51,"value":2322},{"type":51,"value":2790}," tool. POST\nnatural-language requests to ",{"type":45,"tag":76,"props":2792,"children":2794},{"className":2793},[],[2795],{"type":51,"value":2796},"$AGENT\u002Fgenerate",{"type":51,"value":2798}," — \"Show me recent alerts\nfor sensor X\", \"List confirmed alerts from the last hour\", \"Show\ncollision incidents from Camera_02 between ",{"type":45,"tag":76,"props":2800,"children":2802},{"className":2801},[],[2803],{"type":51,"value":2804},"\u003CISO>",{"type":51,"value":91},{"type":45,"tag":76,"props":2807,"children":2809},{"className":2808},[],[2810],{"type":51,"value":2804},{"type":51,"value":2812},"\".",{"type":45,"tag":54,"props":2814,"children":2815},{},[2816,2821,2823,2828,2830,2836,2838,2843,2845,2850],{"type":45,"tag":260,"props":2817,"children":2818},{},[2819],{"type":51,"value":2820},"Casual phrasings route here too.",{"type":51,"value":2822}," Questions like \"Any alerts so far\ntoday?\", \"Any alerts today?\", \"What's been triggered?\", or \"Anything\ndetected lately?\" are incident queries — issue a ",{"type":45,"tag":76,"props":2824,"children":2826},{"className":2825},[],[2827],{"type":51,"value":1813},{"type":51,"value":2829}," (e.g.\n",{"type":45,"tag":76,"props":2831,"children":2833},{"className":2832},[],[2834],{"type":51,"value":2835},"{\"input_message\": \"List alerts from today\"}",{"type":51,"value":2837},") and summarize the result.\n",{"type":45,"tag":260,"props":2839,"children":2840},{},[2841],{"type":51,"value":2842},"Never answer these from memory and never reply \"no alerts\" without\nrunning the query.",{"type":51,"value":2844}," A bare \"alerts\" question is ",{"type":45,"tag":151,"props":2846,"children":2847},{},[2848],{"type":51,"value":2849},"always",{"type":51,"value":2851}," an incident\nlookup (Workflow C), not a subscription-rule listing (Workflow D).",{"type":45,"tag":1770,"props":2853,"children":2854},{},[2855,2890],{"type":45,"tag":54,"props":2856,"children":2857},{},[2858,2863,2865,2869,2874,2876,2881,2883,2888],{"type":45,"tag":260,"props":2859,"children":2860},{},[2861],{"type":51,"value":2862},"Do NOT list subscription rules for an incident query.",{"type":51,"value":2864}," The ",{"type":45,"tag":260,"props":2866,"children":2867},{},[2868],{"type":51,"value":1832},{"type":45,"tag":76,"props":2870,"children":2872},{"className":2871},[],[2873],{"type":51,"value":1655},{"type":51,"value":2875}," (no ",{"type":45,"tag":76,"props":2877,"children":2879},{"className":2878},[],[2880],{"type":51,"value":1847},{"type":51,"value":2882},") lists ",{"type":45,"tag":151,"props":2884,"children":2885},{},[2886],{"type":51,"value":2887},"rules",{"type":51,"value":2889}," (Workflow D) and\nis wrong for \"what happened\" — never call\u002Fprobe it or load the Workflow\nD playbook for an incident query.",{"type":45,"tag":54,"props":2891,"children":2892},{},[2893,2898,2900,2905],{"type":45,"tag":260,"props":2894,"children":2895},{},[2896],{"type":51,"value":2897},"Empty result is a valid answer.",{"type":51,"value":2899}," If no incidents match (e.g. a\nfreshly deployed system with no activity yet), report that ",{"type":45,"tag":260,"props":2901,"children":2902},{},[2903],{"type":51,"value":2904},"none were\nfound \u002F the count is 0",{"type":51,"value":2906}," for the requested period and STOP — do not fall\nback to listing rules or hunting other endpoints.",{"type":45,"tag":54,"props":2908,"children":2909},{},[2910,2912,2923],{"type":51,"value":2911},"For\nricher \u002F non-natural-language filtering (sensor-level, time-series,\ncounts) use the ",{"type":45,"tag":260,"props":2913,"children":2914},{},[2915,2921],{"type":45,"tag":76,"props":2916,"children":2918},{"className":2917},[],[2919],{"type":51,"value":2920},"vss-query-analytics",{"type":51,"value":2922}," skill",{"type":51,"value":2924}," (VA-MCP on port 9901).",{"type":45,"tag":1530,"props":2926,"children":2928},{"id":2927},"verdict-interpretation-cv-verifier-prompts-cv-mode-only",[2929],{"type":51,"value":2930},"Verdict interpretation & CV verifier prompts (CV mode only)",{"type":45,"tag":54,"props":2932,"children":2933},{},[2934,2936,2942,2943,2949,2951,2957,2959,2964,2966,2971,2973,2979],{"type":51,"value":2935},"CV alerts carry a VLM verification verdict (",{"type":45,"tag":76,"props":2937,"children":2939},{"className":2938},[],[2940],{"type":51,"value":2941},"confirmed",{"type":51,"value":1862},{"type":45,"tag":76,"props":2944,"children":2946},{"className":2945},[],[2947],{"type":51,"value":2948},"rejected",{"type":51,"value":2950}," \u002F\n",{"type":45,"tag":76,"props":2952,"children":2954},{"className":2953},[],[2955],{"type":51,"value":2956},"unverified",{"type":51,"value":2958},"); VLM real-time incidents have no separate verdict (the\ntrigger is itself a Yes\u002FNo VLM answer). CV-path verifier prompts are\ncustomizable via ",{"type":45,"tag":76,"props":2960,"children":2962},{"className":2961},[],[2963],{"type":51,"value":2425},{"type":51,"value":2965}," (restart ",{"type":45,"tag":76,"props":2967,"children":2969},{"className":2968},[],[2970],{"type":51,"value":742},{"type":51,"value":2972}," to\napply). See ",{"type":45,"tag":76,"props":2974,"children":2976},{"className":2975},[],[2977],{"type":51,"value":2978},"references\u002Fcv-verifier-prompts.md",{"type":51,"value":2980}," for the verdict table,\nfield meanings, and the prompt-customization rules.",{"type":45,"tag":402,"props":2982,"children":2983},{},[],{"type":45,"tag":46,"props":2985,"children":2987},{"id":2986},"cross-skill-links",[2988],{"type":51,"value":2989},"Cross-Skill Links",{"type":45,"tag":653,"props":2991,"children":2992},{},[2993,3009],{"type":45,"tag":657,"props":2994,"children":2995},{},[2996],{"type":45,"tag":661,"props":2997,"children":2998},{},[2999,3004],{"type":45,"tag":665,"props":3000,"children":3001},{},[3002],{"type":51,"value":3003},"Task",{"type":45,"tag":665,"props":3005,"children":3006},{},[3007],{"type":51,"value":3008},"Skill",{"type":45,"tag":699,"props":3010,"children":3011},{},[3012,3038,3059,3080,3100],{"type":45,"tag":661,"props":3013,"children":3014},{},[3015,3020],{"type":45,"tag":706,"props":3016,"children":3017},{},[3018],{"type":51,"value":3019},"Deploy, redeploy, or switch alert mode",{"type":45,"tag":706,"props":3021,"children":3022},{},[3023,3031,3032],{"type":45,"tag":260,"props":3024,"children":3025},{},[3026],{"type":45,"tag":76,"props":3027,"children":3029},{"className":3028},[],[3030],{"type":51,"value":89},{"type":51,"value":1308},{"type":45,"tag":76,"props":3033,"children":3035},{"className":3034},[],[3036],{"type":51,"value":3037},"-p alerts -m {verification,real-time}",{"type":45,"tag":661,"props":3039,"children":3040},{},[3041,3046],{"type":45,"tag":706,"props":3042,"children":3043},{},[3044],{"type":51,"value":3045},"Add an RTSP\u002FIP camera, list sensors, snapshots, clips",{"type":45,"tag":706,"props":3047,"children":3048},{},[3049,3057],{"type":45,"tag":260,"props":3050,"children":3051},{},[3052],{"type":45,"tag":76,"props":3053,"children":3055},{"className":3054},[],[3056],{"type":51,"value":1484},{"type":51,"value":3058}," (Section 6 for Add Sensor)",{"type":45,"tag":661,"props":3060,"children":3061},{},[3062,3067],{"type":45,"tag":706,"props":3063,"children":3064},{},[3065],{"type":51,"value":3066},"Time-range incident \u002F occupancy \u002F PPE metrics from Elasticsearch",{"type":45,"tag":706,"props":3068,"children":3069},{},[3070,3078],{"type":45,"tag":260,"props":3071,"children":3072},{},[3073],{"type":45,"tag":76,"props":3074,"children":3076},{"className":3075},[],[3077],{"type":51,"value":2920},{"type":51,"value":3079}," (VA-MCP :9901)",{"type":45,"tag":661,"props":3081,"children":3082},{},[3083,3088],{"type":45,"tag":706,"props":3084,"children":3085},{},[3086],{"type":51,"value":3087},"Detailed incident report from an alert",{"type":45,"tag":706,"props":3089,"children":3090},{},[3091],{"type":45,"tag":260,"props":3092,"children":3093},{},[3094],{"type":45,"tag":76,"props":3095,"children":3097},{"className":3096},[],[3098],{"type":51,"value":3099},"vss-generate-video-report",{"type":45,"tag":661,"props":3101,"children":3102},{},[3103,3108],{"type":45,"tag":706,"props":3104,"children":3105},{},[3106],{"type":51,"value":3107},"Subscriptions \u002F Slack sub-workflows",{"type":45,"tag":706,"props":3109,"children":3110},{},[3111,3116,3117,3122,3124,3129],{"type":45,"tag":76,"props":3112,"children":3114},{"className":3113},[],[3115],{"type":51,"value":1352},{"type":51,"value":130},{"type":45,"tag":76,"props":3118,"children":3120},{"className":3119},[],[3121],{"type":51,"value":1314},{"type":51,"value":3123}," (code in ",{"type":45,"tag":76,"props":3125,"children":3127},{"className":3126},[],[3128],{"type":51,"value":2767},{"type":51,"value":687},{"type":45,"tag":402,"props":3131,"children":3132},{},[],{"type":45,"tag":46,"props":3134,"children":3136},{"id":3135},"gotchas",[3137],{"type":51,"value":3138},"Gotchas",{"type":45,"tag":66,"props":3140,"children":3141},{},[3142,3181,3191,3223,3233,3277],{"type":45,"tag":70,"props":3143,"children":3144},{},[3145,3160,3162,3167,3169,3174,3175,3180],{"type":45,"tag":260,"props":3146,"children":3147},{},[3148,3153,3154,3159],{"type":45,"tag":76,"props":3149,"children":3151},{"className":3150},[],[3152],{"type":51,"value":2714},{"type":51,"value":2716},{"type":45,"tag":76,"props":3155,"children":3157},{"className":3156},[],[3158],{"type":51,"value":2722},{"type":51,"value":235},{"type":51,"value":3161}," Slack ops → Workflow E (",{"type":45,"tag":76,"props":3163,"children":3165},{"className":3164},[],[3166],{"type":51,"value":2714},{"type":51,"value":3168},"); never route Slack to ",{"type":45,"tag":76,"props":3170,"children":3172},{"className":3171},[],[3173],{"type":51,"value":2722},{"type":51,"value":2371},{"type":45,"tag":76,"props":3176,"children":3178},{"className":3177},[],[3179],{"type":51,"value":2729},{"type":51,"value":235},{"type":45,"tag":70,"props":3182,"children":3183},{},[3184,3189],{"type":45,"tag":260,"props":3185,"children":3186},{},[3187],{"type":51,"value":3188},"Workflow scope by mode:",{"type":51,"value":3190}," A is CV-only; B and C work on either mode; D and E are VLM real-time only (refuse on CV with the canonical text).",{"type":45,"tag":70,"props":3192,"children":3193},{},[3194,3206,3208,3213,3215,3221],{"type":45,"tag":260,"props":3195,"children":3196},{},[3197,3199,3204],{"type":51,"value":3198},"Don't use ",{"type":45,"tag":76,"props":3200,"children":3202},{"className":3201},[],[3203],{"type":51,"value":890},{"type":51,"value":3205}," as a mode signal",{"type":51,"value":3207}," — it runs in both modes. Use ",{"type":45,"tag":76,"props":3209,"children":3211},{"className":3210},[],[3212],{"type":51,"value":1134},{"type":51,"value":3214}," (CV-only) or the ",{"type":45,"tag":76,"props":3216,"children":3218},{"className":3217},[],[3219],{"type":51,"value":3220},"MODE",{"type":51,"value":3222}," env var.",{"type":45,"tag":70,"props":3224,"children":3225},{},[3226,3231],{"type":45,"tag":260,"props":3227,"children":3228},{},[3229],{"type":51,"value":3230},"A mode switch tears down the current deployment",{"type":51,"value":3232}," — running VLM streams and un-persisted CV alert state are lost.",{"type":45,"tag":70,"props":3234,"children":3235},{},[3236,3246,3248,3253,3255,3261,3262,3268,3270,3275],{"type":45,"tag":260,"props":3237,"children":3238},{},[3239,3241],{"type":51,"value":3240},"Always go through ",{"type":45,"tag":76,"props":3242,"children":3244},{"className":3243},[],[3245],{"type":51,"value":2796},{"type":51,"value":3247}," — never call ",{"type":45,"tag":76,"props":3249,"children":3251},{"className":3250},[],[3252],{"type":51,"value":753},{"type":51,"value":3254}," directly. The VLM trigger is a ",{"type":45,"tag":76,"props":3256,"children":3258},{"className":3257},[],[3259],{"type":51,"value":3260},"\"yes\"",{"type":51,"value":1738},{"type":45,"tag":76,"props":3263,"children":3265},{"className":3264},[],[3266],{"type":51,"value":3267},"\"true\"",{"type":51,"value":3269}," token match (case-insensitive); ",{"type":45,"tag":76,"props":3271,"children":3273},{"className":3272},[],[3274],{"type":51,"value":2314},{"type":51,"value":3276}," enforces the Yes\u002FNo pattern, so don't hand-craft prompts that break it.",{"type":45,"tag":70,"props":3278,"children":3279},{},[3280,3285,3287,3292],{"type":45,"tag":260,"props":3281,"children":3282},{},[3283],{"type":51,"value":3284},"Sensor must already be in VIOS",{"type":51,"value":3286}," for either mode (use ",{"type":45,"tag":76,"props":3288,"children":3290},{"className":3289},[],[3291],{"type":51,"value":1484},{"type":51,"value":3293}," for RTSP-only inputs).",{"type":45,"tag":54,"props":3295,"children":3296},{},[3297],{"type":51,"value":3298},"bump:1",{"type":45,"tag":3300,"props":3301,"children":3302},"style",{},[3303],{"type":51,"value":3304},"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":3306,"total":3409},[3307,3324,3338,3352,3364,3381,3395],{"slug":3308,"name":3308,"fn":3309,"description":3310,"org":3311,"tags":3312,"stars":23,"repoUrl":24,"updatedAt":3323},"accelerated-computing-cudf","accelerate data processing with cuDF","Official NVIDIA-authored guidance for NVIDIA cuDF GPU DataFrames, pandas acceleration, dask-cuDF, ETL, joins, groupby, CSV\u002FParquet I\u002FO, nullable semantics, and multi-GPU DataFrame workloads.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3313,3316,3319,3320],{"name":3314,"slug":3315,"type":15},"Data Analysis","data-analysis",{"name":3317,"slug":3318,"type":15},"Data Engineering","data-engineering",{"name":9,"slug":8,"type":15},{"name":3321,"slug":3322,"type":15},"Performance","performance","2026-07-14T05:28:43.176466",{"slug":3325,"name":3325,"fn":3326,"description":3327,"org":3328,"tags":3329,"stars":23,"repoUrl":24,"updatedAt":3337},"aiq-deploy","deploy and manage NVIDIA AI-Q infrastructure","Use when asked to install, deploy, run, validate, troubleshoot, or stop NVIDIA AI-Q Blueprint infrastructure.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3330,3333,3336],{"name":3331,"slug":3332,"type":15},"Deployment","deployment",{"name":3334,"slug":3335,"type":15},"Infrastructure","infrastructure",{"name":9,"slug":8,"type":15},"2026-07-14T05:29:06.667109",{"slug":3339,"name":3339,"fn":3340,"description":3341,"org":3342,"tags":3343,"stars":23,"repoUrl":24,"updatedAt":3351},"aiq-research","conduct deep research with AI-Q","Use when asked to run deep research or AI-Q research through a reachable NVIDIA AI-Q Blueprint backend.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3344,3347,3348],{"name":3345,"slug":3346,"type":15},"Agents","agents",{"name":9,"slug":8,"type":15},{"name":3349,"slug":3350,"type":15},"Research","research","2026-07-14T05:28:06.816956",{"slug":3353,"name":3353,"fn":3354,"description":3355,"org":3356,"tags":3357,"stars":23,"repoUrl":24,"updatedAt":3363},"amc-run-sample-calibration","run AMC sample dataset calibration","Run end-to-end calibration on the shipped sample dataset (sdg_08_2_sample_data_010926.zip) against a running AMC microservice. Use when user says 'test sample dataset', 'run sample calibration', 'verify AMC install', or 'launch and test'.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3358,3359,3360],{"name":3314,"slug":3315,"type":15},{"name":9,"slug":8,"type":15},{"name":3361,"slug":3362,"type":15},"Testing","testing","2026-07-17T05:29:03.913266",{"slug":3365,"name":3365,"fn":3366,"description":3367,"org":3368,"tags":3369,"stars":23,"repoUrl":24,"updatedAt":3380},"amc-run-video-calibration","calibrate video datasets with AutoMagicCalib","Calibrate a new dataset from pre-recorded video files via the AutoMagicCalib REST API. Use when user has local MP4s and says 'calibrate my videos', 'run AMC on these videos', or similar. For RTSP\u002Flive streams, use amc-run-rtsp-calibration instead.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3370,3373,3376,3377],{"name":3371,"slug":3372,"type":15},"Automation","automation",{"name":3374,"slug":3375,"type":15},"Imaging","imaging",{"name":9,"slug":8,"type":15},{"name":3378,"slug":3379,"type":15},"Video","video","2026-07-17T05:28:53.905004",{"slug":3382,"name":3382,"fn":3383,"description":3384,"org":3385,"tags":3386,"stars":23,"repoUrl":24,"updatedAt":3394},"amc-setup-calibration-stack","deploy AutoMagicCalib microservice with Docker","Launch AutoMagicCalib microservice and web UI from NGC release images via Docker Compose. Use when user says 'deploy auto calibration', 'launch auto calibration', 'launch AMC', 'start MS+UI', or 'set up auto-magic-calib'. Requires NGC API key.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3387,3388,3390,3391],{"name":3331,"slug":3332,"type":15},{"name":3389,"slug":922,"type":15},"Docker",{"name":9,"slug":8,"type":15},{"name":3392,"slug":3393,"type":15},"Operations","operations","2026-07-17T05:28:56.913999",{"slug":3396,"name":3396,"fn":3397,"description":3398,"org":3399,"tags":3400,"stars":23,"repoUrl":24,"updatedAt":3408},"cudaq-guide","develop quantum applications with CUDA-Q","CUDA-Q onboarding guide for installation, test programs, GPU simulation, QPU hardware, and quantum applications.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":9},[3401,3402,3405],{"name":9,"slug":8,"type":15},{"name":3403,"slug":3404,"type":15},"Quantum Computing","quantum-computing",{"name":3406,"slug":3407,"type":15},"Simulation","simulation","2026-07-14T05:26:58.898253",305,{"items":3411,"total":3562},[3412,3430,3446,3457,3469,3483,3496,3510,3521,3530,3544,3553],{"slug":3413,"name":3413,"fn":3414,"description":3415,"org":3416,"tags":3417,"stars":3427,"repoUrl":3428,"updatedAt":3429},"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},[3418,3421,3424],{"name":3419,"slug":3420,"type":15},"Documentation","documentation",{"name":3422,"slug":3423,"type":15},"MCP","mcp",{"name":3425,"slug":3426,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":3431,"name":3431,"fn":3432,"description":3433,"org":3434,"tags":3435,"stars":3443,"repoUrl":3444,"updatedAt":3445},"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},[3436,3439,3440],{"name":3437,"slug":3438,"type":15},"Containers","containers",{"name":3331,"slug":3332,"type":15},{"name":3441,"slug":3442,"type":15},"Python","python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":3447,"name":3447,"fn":3448,"description":3449,"org":3450,"tags":3451,"stars":3443,"repoUrl":3444,"updatedAt":3456},"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},[3452,3455],{"name":3453,"slug":3454,"type":15},"CI\u002FCD","ci-cd",{"name":3331,"slug":3332,"type":15},"2026-07-14T05:25:59.97109",{"slug":3458,"name":3458,"fn":3459,"description":3460,"org":3461,"tags":3462,"stars":3443,"repoUrl":3444,"updatedAt":3468},"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},[3463,3464,3465],{"name":3453,"slug":3454,"type":15},{"name":3331,"slug":3332,"type":15},{"name":3466,"slug":3467,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":3470,"name":3470,"fn":3471,"description":3472,"org":3473,"tags":3474,"stars":3443,"repoUrl":3444,"updatedAt":3482},"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},[3475,3478,3479],{"name":3476,"slug":3477,"type":15},"Debugging","debugging",{"name":3466,"slug":3467,"type":15},{"name":3480,"slug":3481,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":3484,"name":3484,"fn":3485,"description":3486,"org":3487,"tags":3488,"stars":3443,"repoUrl":3444,"updatedAt":3495},"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},[3489,3492],{"name":3490,"slug":3491,"type":15},"Best Practices","best-practices",{"name":3493,"slug":3494,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":3497,"name":3497,"fn":3498,"description":3499,"org":3500,"tags":3501,"stars":3443,"repoUrl":3444,"updatedAt":3509},"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},[3502,3505,3508],{"name":3503,"slug":3504,"type":15},"Machine Learning","machine-learning",{"name":3506,"slug":3507,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":3511,"name":3511,"fn":3512,"description":3513,"org":3514,"tags":3515,"stars":3443,"repoUrl":3444,"updatedAt":3520},"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},[3516,3519],{"name":3517,"slug":3518,"type":15},"QA","qa",{"name":3361,"slug":3362,"type":15},"2026-07-14T05:25:53.673039",{"slug":3522,"name":3522,"fn":3523,"description":3524,"org":3525,"tags":3526,"stars":3443,"repoUrl":3444,"updatedAt":3529},"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},[3527,3528],{"name":3331,"slug":3332,"type":15},{"name":3334,"slug":3335,"type":15},"2026-07-14T05:25:49.362534",{"slug":3531,"name":3531,"fn":3532,"description":3533,"org":3534,"tags":3535,"stars":3443,"repoUrl":3444,"updatedAt":3543},"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},[3536,3539,3540],{"name":3537,"slug":3538,"type":15},"Code Review","code-review",{"name":3466,"slug":3467,"type":15},{"name":3541,"slug":3542,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":3545,"name":3545,"fn":3546,"description":3547,"org":3548,"tags":3549,"stars":3443,"repoUrl":3444,"updatedAt":3552},"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},[3550,3551],{"name":3517,"slug":3518,"type":15},{"name":3361,"slug":3362,"type":15},"2026-07-14T05:25:54.928983",{"slug":3554,"name":3554,"fn":3555,"description":3556,"org":3557,"tags":3558,"stars":3443,"repoUrl":3444,"updatedAt":3561},"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},[3559,3560],{"name":3371,"slug":3372,"type":15},{"name":3453,"slug":3454,"type":15},"2026-07-30T05:29:03.275638",496]