[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-nvidia-vss-setup-video-analytics-api":3,"mdc--el1nml-key":34,"related-repo-nvidia-vss-setup-video-analytics-api":1304,"related-org-nvidia-vss-setup-video-analytics-api":1407},{"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-setup-video-analytics-api","deploy video analytics REST API","Use to deploy the vss-video-analytics-api REST service standalone (config-source, data-log bind, Elasticsearch, optional Kafka). Not for full warehouse deploy.",{"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,22],{"name":13,"slug":14,"type":15},"Observability","observability","tag",{"name":17,"slug":18,"type":15},"Deployment","deployment",{"name":20,"slug":21,"type":15},"REST API","rest-api",{"name":9,"slug":8,"type":15},2473,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002Fskills","2026-07-14T05:29:05.42017","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-setup-video-analytics-api","---\nname: vss-setup-video-analytics-api\ndescription: Use to deploy the vss-video-analytics-api REST service standalone (config-source, data-log bind, Elasticsearch, optional Kafka). Not for full warehouse deploy.\nlicense: Apache-2.0\nmetadata:\n  author: \"NVIDIA Video Search and Summarization team\"\n  version: \"3.2.0\"\n  github-url: \"https:\u002F\u002Fgithub.com\u002FNVIDIA-AI-Blueprints\u002Fvideo-search-and-summarization\"\n  tags: \"nvidia blueprint operational deployment video-analytics-api rest-api\"\n---\n## Purpose\n\nDeploy the video-analytics-api REST service standalone with the user's chosen config, data-log bind, and Elasticsearch \u002F Kafka connectivity.\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`.\n\n## Examples\n\nWorked end-to-end examples are kept under `evals\u002F` (each `*.json` manifest\ncontains a runnable scenario). Run a Tier-3 evaluation to replay them:\n\n```bash\nnv-base validate skills\u002Fvss-setup-video-analytics-api --agent-eval\n```\n\nA minimal standalone bring-up looks like:\n\n```bash\ncd $REPO\u002Fdeploy\u002Fdocker\nexport VSS_APPS_DIR=$(pwd)\nexport VSS_DATA_DIR=${VSS_DATA_DIR:-\u002Ftmp\u002Fvss-data}\nmkdir -p \"$VSS_DATA_DIR\u002Fdata_log\u002Fvss_video_analytics_api\"\ndocker compose -f services\u002Fanalytics\u002Fvideo-analytics-api\u002Fcompose.yml up -d vss-video-analytics-api\ncurl -sf http:\u002F\u002Flocalhost:8081\u002Flivez\n```\n\nFollow [`references\u002Fdeploy-video-analytics-api-service.md`](references\u002Fdeploy-video-analytics-api-service.md) for the full\nworkflow (config source, data-log bind, infrastructure dependencies, REST endpoints).\nFor the field-by-field JSON config reference, see [`references\u002Fconfiguration.md`](references\u002Fconfiguration.md).\n\n## Limitations\n\n- Requires the matching VSS profile \u002F microservice to be deployed and reachable from the caller.\n- NGC-hosted models and NIMs may be subject to rate-limits, GPU memory requirements, and license restrictions.\n- Concurrency, GPU memory, and storage limits depend on the host hardware and the profile's compose file.\n\n## Troubleshooting\n\n- **Error**: REST call returns connection refused. **Cause**: target microservice not running. **Solution**: probe `\u002Fdocs` or `\u002Fhealth`; redeploy via `vss-deploy-profile` or the matching `vss-deploy-*` skill.\n- **Error**: HTTP 401\u002F403 from NGC pulls. **Cause**: missing\u002Fexpired `NGC_CLI_API_KEY`. **Solution**: `docker login nvcr.io` and re-export the key before retrying.\n- **Error**: container OOM or model fails to load. **Cause**: insufficient GPU memory for the selected profile. **Solution**: switch to a smaller variant or free GPUs via `docker compose down`.\n\n# VSS Setup Video Analytics API — Standalone\n\nDeploy **just** the `vss-video-analytics-api` container (the Node.js REST API from the upstream `video-analytics-api` repo), not as part of the full warehouse blueprint stack.\n\nThe full operational walkthrough — config-source options, data-log volume behavior, infrastructure dependencies, REST API endpoints, deploy + verify, troubleshooting — lives in [`references\u002Fdeploy-video-analytics-api-service.md`](references\u002Fdeploy-video-analytics-api-service.md). The field-by-field JSON config reference lives in [`references\u002Fconfiguration.md`](references\u002Fconfiguration.md). This SKILL.md only handles routing and prerequisites.\n\n## When to use\n\n- \"Deploy video analytics api\" \u002F \"run video-analytics-api standalone\"\n- \"I just want to run the REST API, not the full stack\"\n- \"Use my own video-analytics-api config\"\n- \"Point the API at a different Elasticsearch \u002F Kafka\"\n- \"Start the API without Kafka\" \u002F \"run the API broker-less\"\n- \"Check what REST endpoints are available\"\n\n## Prerequisites\n\n1. **Repo checkout** with `$VSS_APPS_DIR` pointing at `\u003Crepo>\u002Fdeploy\u002Fdocker\u002F`. Required by the service compose's volume binds.\n2. **NGC credentials** — `$NGC_CLI_API_KEY` set so docker can pull the image. See [`references\u002Fngc-api-key-registry-login.md`](references\u002Fngc-api-key-registry-login.md).\n\n   > **Secure-handling note for `NGC_CLI_API_KEY`**: this key is a\n   > long-lived credential that pulls all NVIDIA private images\n   > available to your NGC org. Never commit the key, never paste it\n   > into chat, never store it in `\u002Ftmp`. Read it interactively\n   > (`read -rs NGC_CLI_API_KEY`) or load it from your secret manager\n   > (Vault, AWS Secrets Manager, sealed-secrets) at deploy time.\n   > Write any derived `.env` files with `umask 077` + `chmod 600`,\n   > add them to `.gitignore`, and rotate the key on a defined\n   > cadence and after every host decommission. If it has ever been\n   > exposed (host snapshot, shared screen, ticket attachment),\n   > rotate immediately.\n3. **Docker runtime** — Docker Engine **28.3.3** with Docker Compose plugin **v2.39.1+**. Verify with `docker --version` and `docker compose version`.\n4. **Elasticsearch** — must be reachable at the URL configured in `elasticsearch.node`. The server pings ES on startup; if unreachable, it exits (and `restart: always` brings it back). If you need to bring up ES too, use the infra compose: `docker compose -f services\u002Finfra\u002Fcompose.yml up -d elasticsearch`.\n5. **Optional Kafka broker**. The API can run without Kafka. If you want a quiet broker-less deployment, use the image-baked config or a custom config with `kafka.brokers: []`; the service-shipped compose config points at `localhost:9092`, so Kafka-dependent features (dynamic config, dynamic calibration, RTLS\u002FAMR) will fail until a broker is reachable.\n6. **`$VSS_DATA_DIR` for the default compose.** The base compose bind-mounts `$VSS_DATA_DIR\u002Fdata_log\u002Fvss_video_analytics_api` for multipart upload handling and file-backed assets such as calibration images. Set the directory to a writable host path and pre-create it, or remove that mount if image uploads are not needed.\n\nIf any required prerequisite fails, surface the gap before going further.\n\n## Workflow\n\nHand the user [`references\u002Fdeploy-video-analytics-api-service.md`](references\u002Fdeploy-video-analytics-api-service.md) and walk them through its steps in order:\n\n1. Choose a config — image-baked default, service-shipped, or custom.\n2. Decide whether a data-log volume is needed for file uploads.\n3. Confirm infrastructure dependencies — Elasticsearch (required), Kafka (optional).\n4. Deploy + verify with `docker compose up` and health check.\n\nThe compose-file edits, config options, deploy + verify commands, REST API endpoint table, and troubleshooting table all live in that reference — don't duplicate them here.\n\n## Endpoint Reference\n\nUse [`references\u002Fdeploy-video-analytics-api-service.md`](references\u002Fdeploy-video-analytics-api-service.md) for the REST endpoint table and runtime dependency notes.\n\n## Kafka-dependent features (runtime, requires broker)\n\nOnce the container is up **and a Kafka broker is reachable**, three additional capabilities are available:\n\n### Dynamic config\n\nThe API acts as the **producer** for dynamic config updates. When an operator POSTs to `\u002Fconfig`, the API publishes an `upsert` message to the `mdx-notification` topic with Kafka key `behavior-analytics-config`. The downstream `behavior-analytics` container consumes this and ACKs back. The API also handles the bootstrap flow — when `behavior-analytics` starts, it publishes a `request-config` message, and the API replies with `upsert-all` containing the latest verified config from Elasticsearch.\n\nConsumer-side validation, ACK semantics, and the full wire contract are documented in the `vss-setup-behavior-analytics` dynamic-config reference.\n\n### Dynamic calibration\n\nThe API produces calibration update notifications on `mdx-notification` with Kafka key `calibration`. Supports `upsert-all` (full snapshot), `upsert` (per-sensor merge), and `delete` (per-sensor removal). The downstream `behavior-analytics` container consumes these and applies them to the live calibration.\n\nConsumer-side validation and per-action policy are documented in the `vss-setup-behavior-analytics` dynamic-calibration reference.\n\n### RTLS \u002F AMR\n\nThe API consumes real-time location (`mdx-rtls`) and AMR (`mdx-amr`) messages from Kafka and exposes them via REST endpoints.\n\n## Routing rules\n\n- If the user wants \"the full stack\" (UI \u002F agent \u002F perception): hand off to `vss-deploy-profile` with profile `warehouse` (or `alerts`). Don't run this skill in parallel.\n- If the user wants to deploy the analytics pipeline (behavior creation, incident detection): hand off to `vss-setup-behavior-analytics`.\n- If the user wants to publish a runtime config \u002F calibration update through the REST API: confirm Kafka is reachable, then use the `\u002Fconfig` or calibration endpoints and point them at the behavior-analytics dynamic-update references for the consumer wire contract.\n- If the user wants to understand the dynamic config \u002F dynamic calibration wire contract from the **consumer** (behavior-analytics) side: point them at the `vss-setup-behavior-analytics` dynamic-config and dynamic-calibration references.\n- If the user wants to query or interact with the REST API endpoints: the deploy reference endpoint table covers what's available. For the full OpenAPI spec, see `src\u002Fapp\u002Fspecification\u002Fopenapi.json` in the `video-analytics-api` repo.\n\n\nbump:1\n",{"data":35,"body":41},{"name":4,"description":6,"license":26,"metadata":36},{"author":37,"version":38,"github-url":39,"tags":40},"NVIDIA Video Search and Summarization team","3.2.0","https:\u002F\u002Fgithub.com\u002FNVIDIA-AI-Blueprints\u002Fvideo-search-and-summarization","nvidia blueprint operational deployment video-analytics-api rest-api",{"type":42,"children":43},"root",[44,53,59,65,101,107,128,167,172,370,397,403,423,429,554,561,589,614,620,653,659,905,910,915,930,961,966,972,987,993,1005,1012,1087,1100,1106,1155,1167,1173,1194,1200,1293,1298],{"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},"Deploy the video-analytics-api REST service standalone with the user's chosen config, data-log bind, and Elasticsearch \u002F Kafka connectivity.",{"type":45,"tag":46,"props":60,"children":62},{"id":61},"instructions",[63],{"type":51,"value":64},"Instructions",{"type":45,"tag":54,"props":66,"children":67},{},[68,70,76,78,83,85,90,92,99],{"type":51,"value":69},"Follow the routing tables and step-by-step workflows below. Each section that ends in ",{"type":45,"tag":71,"props":72,"children":73},"em",{},[74],{"type":51,"value":75},"workflow",{"type":51,"value":77},", ",{"type":45,"tag":71,"props":79,"children":80},{},[81],{"type":51,"value":82},"quick start",{"type":51,"value":84},", or ",{"type":45,"tag":71,"props":86,"children":87},{},[88],{"type":51,"value":89},"flow",{"type":51,"value":91}," is intended to be executed top-to-bottom. Detailed reference material lives in ",{"type":45,"tag":93,"props":94,"children":96},"code",{"className":95},[],[97],{"type":51,"value":98},"references\u002F",{"type":51,"value":100},".",{"type":45,"tag":46,"props":102,"children":104},{"id":103},"examples",[105],{"type":51,"value":106},"Examples",{"type":45,"tag":54,"props":108,"children":109},{},[110,112,118,120,126],{"type":51,"value":111},"Worked end-to-end examples are kept under ",{"type":45,"tag":93,"props":113,"children":115},{"className":114},[],[116],{"type":51,"value":117},"evals\u002F",{"type":51,"value":119}," (each ",{"type":45,"tag":93,"props":121,"children":123},{"className":122},[],[124],{"type":51,"value":125},"*.json",{"type":51,"value":127}," manifest\ncontains a runnable scenario). Run a Tier-3 evaluation to replay them:",{"type":45,"tag":129,"props":130,"children":135},"pre",{"className":131,"code":132,"language":133,"meta":134,"style":134},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","nv-base validate skills\u002Fvss-setup-video-analytics-api --agent-eval\n","bash","",[136],{"type":45,"tag":93,"props":137,"children":138},{"__ignoreMap":134},[139],{"type":45,"tag":140,"props":141,"children":144},"span",{"class":142,"line":143},"line",1,[145,151,157,162],{"type":45,"tag":140,"props":146,"children":148},{"style":147},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[149],{"type":51,"value":150},"nv-base",{"type":45,"tag":140,"props":152,"children":154},{"style":153},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[155],{"type":51,"value":156}," validate",{"type":45,"tag":140,"props":158,"children":159},{"style":153},[160],{"type":51,"value":161}," skills\u002Fvss-setup-video-analytics-api",{"type":45,"tag":140,"props":163,"children":164},{"style":153},[165],{"type":51,"value":166}," --agent-eval\n",{"type":45,"tag":54,"props":168,"children":169},{},[170],{"type":51,"value":171},"A minimal standalone bring-up looks like:",{"type":45,"tag":129,"props":173,"children":175},{"className":131,"code":174,"language":133,"meta":134,"style":134},"cd $REPO\u002Fdeploy\u002Fdocker\nexport VSS_APPS_DIR=$(pwd)\nexport VSS_DATA_DIR=${VSS_DATA_DIR:-\u002Ftmp\u002Fvss-data}\nmkdir -p \"$VSS_DATA_DIR\u002Fdata_log\u002Fvss_video_analytics_api\"\ndocker compose -f services\u002Fanalytics\u002Fvideo-analytics-api\u002Fcompose.yml up -d vss-video-analytics-api\ncurl -sf http:\u002F\u002Flocalhost:8081\u002Flivez\n",[176],{"type":45,"tag":93,"props":177,"children":178},{"__ignoreMap":134},[179,199,230,278,312,351],{"type":45,"tag":140,"props":180,"children":181},{"class":142,"line":143},[182,188,194],{"type":45,"tag":140,"props":183,"children":185},{"style":184},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[186],{"type":51,"value":187},"cd",{"type":45,"tag":140,"props":189,"children":191},{"style":190},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[192],{"type":51,"value":193}," $REPO",{"type":45,"tag":140,"props":195,"children":196},{"style":153},[197],{"type":51,"value":198},"\u002Fdeploy\u002Fdocker\n",{"type":45,"tag":140,"props":200,"children":202},{"class":142,"line":201},2,[203,209,214,220,225],{"type":45,"tag":140,"props":204,"children":206},{"style":205},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[207],{"type":51,"value":208},"export",{"type":45,"tag":140,"props":210,"children":211},{"style":190},[212],{"type":51,"value":213}," VSS_APPS_DIR",{"type":45,"tag":140,"props":215,"children":217},{"style":216},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[218],{"type":51,"value":219},"=$(",{"type":45,"tag":140,"props":221,"children":222},{"style":184},[223],{"type":51,"value":224},"pwd",{"type":45,"tag":140,"props":226,"children":227},{"style":216},[228],{"type":51,"value":229},")\n",{"type":45,"tag":140,"props":231,"children":233},{"class":142,"line":232},3,[234,238,243,248,253,258,263,268,273],{"type":45,"tag":140,"props":235,"children":236},{"style":205},[237],{"type":51,"value":208},{"type":45,"tag":140,"props":239,"children":240},{"style":190},[241],{"type":51,"value":242}," VSS_DATA_DIR",{"type":45,"tag":140,"props":244,"children":245},{"style":216},[246],{"type":51,"value":247},"=${",{"type":45,"tag":140,"props":249,"children":250},{"style":190},[251],{"type":51,"value":252},"VSS_DATA_DIR",{"type":45,"tag":140,"props":254,"children":255},{"style":216},[256],{"type":51,"value":257},":-\u002F",{"type":45,"tag":140,"props":259,"children":260},{"style":190},[261],{"type":51,"value":262},"tmp",{"type":45,"tag":140,"props":264,"children":265},{"style":216},[266],{"type":51,"value":267},"\u002F",{"type":45,"tag":140,"props":269,"children":270},{"style":190},[271],{"type":51,"value":272},"vss-data",{"type":45,"tag":140,"props":274,"children":275},{"style":216},[276],{"type":51,"value":277},"}\n",{"type":45,"tag":140,"props":279,"children":281},{"class":142,"line":280},4,[282,287,292,297,302,307],{"type":45,"tag":140,"props":283,"children":284},{"style":147},[285],{"type":51,"value":286},"mkdir",{"type":45,"tag":140,"props":288,"children":289},{"style":153},[290],{"type":51,"value":291}," -p",{"type":45,"tag":140,"props":293,"children":294},{"style":216},[295],{"type":51,"value":296}," \"",{"type":45,"tag":140,"props":298,"children":299},{"style":190},[300],{"type":51,"value":301},"$VSS_DATA_DIR",{"type":45,"tag":140,"props":303,"children":304},{"style":153},[305],{"type":51,"value":306},"\u002Fdata_log\u002Fvss_video_analytics_api",{"type":45,"tag":140,"props":308,"children":309},{"style":216},[310],{"type":51,"value":311},"\"\n",{"type":45,"tag":140,"props":313,"children":315},{"class":142,"line":314},5,[316,321,326,331,336,341,346],{"type":45,"tag":140,"props":317,"children":318},{"style":147},[319],{"type":51,"value":320},"docker",{"type":45,"tag":140,"props":322,"children":323},{"style":153},[324],{"type":51,"value":325}," compose",{"type":45,"tag":140,"props":327,"children":328},{"style":153},[329],{"type":51,"value":330}," -f",{"type":45,"tag":140,"props":332,"children":333},{"style":153},[334],{"type":51,"value":335}," services\u002Fanalytics\u002Fvideo-analytics-api\u002Fcompose.yml",{"type":45,"tag":140,"props":337,"children":338},{"style":153},[339],{"type":51,"value":340}," up",{"type":45,"tag":140,"props":342,"children":343},{"style":153},[344],{"type":51,"value":345}," -d",{"type":45,"tag":140,"props":347,"children":348},{"style":153},[349],{"type":51,"value":350}," vss-video-analytics-api\n",{"type":45,"tag":140,"props":352,"children":354},{"class":142,"line":353},6,[355,360,365],{"type":45,"tag":140,"props":356,"children":357},{"style":147},[358],{"type":51,"value":359},"curl",{"type":45,"tag":140,"props":361,"children":362},{"style":153},[363],{"type":51,"value":364}," -sf",{"type":45,"tag":140,"props":366,"children":367},{"style":153},[368],{"type":51,"value":369}," http:\u002F\u002Flocalhost:8081\u002Flivez\n",{"type":45,"tag":54,"props":371,"children":372},{},[373,375,385,387,396],{"type":51,"value":374},"Follow ",{"type":45,"tag":376,"props":377,"children":379},"a",{"href":378},"references\u002Fdeploy-video-analytics-api-service.md",[380],{"type":45,"tag":93,"props":381,"children":383},{"className":382},[],[384],{"type":51,"value":378},{"type":51,"value":386}," for the full\nworkflow (config source, data-log bind, infrastructure dependencies, REST endpoints).\nFor the field-by-field JSON config reference, see ",{"type":45,"tag":376,"props":388,"children":390},{"href":389},"references\u002Fconfiguration.md",[391],{"type":45,"tag":93,"props":392,"children":394},{"className":393},[],[395],{"type":51,"value":389},{"type":51,"value":100},{"type":45,"tag":46,"props":398,"children":400},{"id":399},"limitations",[401],{"type":51,"value":402},"Limitations",{"type":45,"tag":404,"props":405,"children":406},"ul",{},[407,413,418],{"type":45,"tag":408,"props":409,"children":410},"li",{},[411],{"type":51,"value":412},"Requires the matching VSS profile \u002F microservice to be deployed and reachable from the caller.",{"type":45,"tag":408,"props":414,"children":415},{},[416],{"type":51,"value":417},"NGC-hosted models and NIMs may be subject to rate-limits, GPU memory requirements, and license restrictions.",{"type":45,"tag":408,"props":419,"children":420},{},[421],{"type":51,"value":422},"Concurrency, GPU memory, and storage limits depend on the host hardware and the profile's compose file.",{"type":45,"tag":46,"props":424,"children":426},{"id":425},"troubleshooting",[427],{"type":51,"value":428},"Troubleshooting",{"type":45,"tag":404,"props":430,"children":431},{},[432,489,526],{"type":45,"tag":408,"props":433,"children":434},{},[435,441,443,448,450,455,457,463,465,471,473,479,481,487],{"type":45,"tag":436,"props":437,"children":438},"strong",{},[439],{"type":51,"value":440},"Error",{"type":51,"value":442},": REST call returns connection refused. ",{"type":45,"tag":436,"props":444,"children":445},{},[446],{"type":51,"value":447},"Cause",{"type":51,"value":449},": target microservice not running. ",{"type":45,"tag":436,"props":451,"children":452},{},[453],{"type":51,"value":454},"Solution",{"type":51,"value":456},": probe ",{"type":45,"tag":93,"props":458,"children":460},{"className":459},[],[461],{"type":51,"value":462},"\u002Fdocs",{"type":51,"value":464}," or ",{"type":45,"tag":93,"props":466,"children":468},{"className":467},[],[469],{"type":51,"value":470},"\u002Fhealth",{"type":51,"value":472},"; redeploy via ",{"type":45,"tag":93,"props":474,"children":476},{"className":475},[],[477],{"type":51,"value":478},"vss-deploy-profile",{"type":51,"value":480}," or the matching ",{"type":45,"tag":93,"props":482,"children":484},{"className":483},[],[485],{"type":51,"value":486},"vss-deploy-*",{"type":51,"value":488}," skill.",{"type":45,"tag":408,"props":490,"children":491},{},[492,496,498,502,504,510,512,516,518,524],{"type":45,"tag":436,"props":493,"children":494},{},[495],{"type":51,"value":440},{"type":51,"value":497},": HTTP 401\u002F403 from NGC pulls. ",{"type":45,"tag":436,"props":499,"children":500},{},[501],{"type":51,"value":447},{"type":51,"value":503},": missing\u002Fexpired ",{"type":45,"tag":93,"props":505,"children":507},{"className":506},[],[508],{"type":51,"value":509},"NGC_CLI_API_KEY",{"type":51,"value":511},". ",{"type":45,"tag":436,"props":513,"children":514},{},[515],{"type":51,"value":454},{"type":51,"value":517},": ",{"type":45,"tag":93,"props":519,"children":521},{"className":520},[],[522],{"type":51,"value":523},"docker login nvcr.io",{"type":51,"value":525}," and re-export the key before retrying.",{"type":45,"tag":408,"props":527,"children":528},{},[529,533,535,539,541,545,547,553],{"type":45,"tag":436,"props":530,"children":531},{},[532],{"type":51,"value":440},{"type":51,"value":534},": container OOM or model fails to load. ",{"type":45,"tag":436,"props":536,"children":537},{},[538],{"type":51,"value":447},{"type":51,"value":540},": insufficient GPU memory for the selected profile. ",{"type":45,"tag":436,"props":542,"children":543},{},[544],{"type":51,"value":454},{"type":51,"value":546},": switch to a smaller variant or free GPUs via ",{"type":45,"tag":93,"props":548,"children":550},{"className":549},[],[551],{"type":51,"value":552},"docker compose down",{"type":51,"value":100},{"type":45,"tag":555,"props":556,"children":558},"h1",{"id":557},"vss-setup-video-analytics-api-standalone",[559],{"type":51,"value":560},"VSS Setup Video Analytics API — Standalone",{"type":45,"tag":54,"props":562,"children":563},{},[564,566,571,573,579,581,587],{"type":51,"value":565},"Deploy ",{"type":45,"tag":436,"props":567,"children":568},{},[569],{"type":51,"value":570},"just",{"type":51,"value":572}," the ",{"type":45,"tag":93,"props":574,"children":576},{"className":575},[],[577],{"type":51,"value":578},"vss-video-analytics-api",{"type":51,"value":580}," container (the Node.js REST API from the upstream ",{"type":45,"tag":93,"props":582,"children":584},{"className":583},[],[585],{"type":51,"value":586},"video-analytics-api",{"type":51,"value":588}," repo), not as part of the full warehouse blueprint stack.",{"type":45,"tag":54,"props":590,"children":591},{},[592,594,602,604,612],{"type":51,"value":593},"The full operational walkthrough — config-source options, data-log volume behavior, infrastructure dependencies, REST API endpoints, deploy + verify, troubleshooting — lives in ",{"type":45,"tag":376,"props":595,"children":596},{"href":378},[597],{"type":45,"tag":93,"props":598,"children":600},{"className":599},[],[601],{"type":51,"value":378},{"type":51,"value":603},". The field-by-field JSON config reference lives in ",{"type":45,"tag":376,"props":605,"children":606},{"href":389},[607],{"type":45,"tag":93,"props":608,"children":610},{"className":609},[],[611],{"type":51,"value":389},{"type":51,"value":613},". This SKILL.md only handles routing and prerequisites.",{"type":45,"tag":46,"props":615,"children":617},{"id":616},"when-to-use",[618],{"type":51,"value":619},"When to use",{"type":45,"tag":404,"props":621,"children":622},{},[623,628,633,638,643,648],{"type":45,"tag":408,"props":624,"children":625},{},[626],{"type":51,"value":627},"\"Deploy video analytics api\" \u002F \"run video-analytics-api standalone\"",{"type":45,"tag":408,"props":629,"children":630},{},[631],{"type":51,"value":632},"\"I just want to run the REST API, not the full stack\"",{"type":45,"tag":408,"props":634,"children":635},{},[636],{"type":51,"value":637},"\"Use my own video-analytics-api config\"",{"type":45,"tag":408,"props":639,"children":640},{},[641],{"type":51,"value":642},"\"Point the API at a different Elasticsearch \u002F Kafka\"",{"type":45,"tag":408,"props":644,"children":645},{},[646],{"type":51,"value":647},"\"Start the API without Kafka\" \u002F \"run the API broker-less\"",{"type":45,"tag":408,"props":649,"children":650},{},[651],{"type":51,"value":652},"\"Check what REST endpoints are available\"",{"type":45,"tag":46,"props":654,"children":656},{"id":655},"prerequisites",[657],{"type":51,"value":658},"Prerequisites",{"type":45,"tag":660,"props":661,"children":662},"ol",{},[663,689,784,823,856,882],{"type":45,"tag":408,"props":664,"children":665},{},[666,671,673,679,681,687],{"type":45,"tag":436,"props":667,"children":668},{},[669],{"type":51,"value":670},"Repo checkout",{"type":51,"value":672}," with ",{"type":45,"tag":93,"props":674,"children":676},{"className":675},[],[677],{"type":51,"value":678},"$VSS_APPS_DIR",{"type":51,"value":680}," pointing at ",{"type":45,"tag":93,"props":682,"children":684},{"className":683},[],[685],{"type":51,"value":686},"\u003Crepo>\u002Fdeploy\u002Fdocker\u002F",{"type":51,"value":688},". Required by the service compose's volume binds.",{"type":45,"tag":408,"props":690,"children":691},{},[692,697,699,705,707,716,717],{"type":45,"tag":436,"props":693,"children":694},{},[695],{"type":51,"value":696},"NGC credentials",{"type":51,"value":698}," — ",{"type":45,"tag":93,"props":700,"children":702},{"className":701},[],[703],{"type":51,"value":704},"$NGC_CLI_API_KEY",{"type":51,"value":706}," set so docker can pull the image. See ",{"type":45,"tag":376,"props":708,"children":710},{"href":709},"references\u002Fngc-api-key-registry-login.md",[711],{"type":45,"tag":93,"props":712,"children":714},{"className":713},[],[715],{"type":51,"value":709},{"type":51,"value":100},{"type":45,"tag":718,"props":719,"children":720},"blockquote",{},[721],{"type":45,"tag":54,"props":722,"children":723},{},[724,734,736,742,744,750,752,758,760,766,768,774,776,782],{"type":45,"tag":436,"props":725,"children":726},{},[727,729],{"type":51,"value":728},"Secure-handling note for ",{"type":45,"tag":93,"props":730,"children":732},{"className":731},[],[733],{"type":51,"value":509},{"type":51,"value":735},": this key is a\nlong-lived credential that pulls all NVIDIA private images\navailable to your NGC org. Never commit the key, never paste it\ninto chat, never store it in ",{"type":45,"tag":93,"props":737,"children":739},{"className":738},[],[740],{"type":51,"value":741},"\u002Ftmp",{"type":51,"value":743},". Read it interactively\n(",{"type":45,"tag":93,"props":745,"children":747},{"className":746},[],[748],{"type":51,"value":749},"read -rs NGC_CLI_API_KEY",{"type":51,"value":751},") or load it from your secret manager\n(Vault, AWS Secrets Manager, sealed-secrets) at deploy time.\nWrite any derived ",{"type":45,"tag":93,"props":753,"children":755},{"className":754},[],[756],{"type":51,"value":757},".env",{"type":51,"value":759}," files with ",{"type":45,"tag":93,"props":761,"children":763},{"className":762},[],[764],{"type":51,"value":765},"umask 077",{"type":51,"value":767}," + ",{"type":45,"tag":93,"props":769,"children":771},{"className":770},[],[772],{"type":51,"value":773},"chmod 600",{"type":51,"value":775},",\nadd them to ",{"type":45,"tag":93,"props":777,"children":779},{"className":778},[],[780],{"type":51,"value":781},".gitignore",{"type":51,"value":783},", and rotate the key on a defined\ncadence and after every host decommission. If it has ever been\nexposed (host snapshot, shared screen, ticket attachment),\nrotate immediately.",{"type":45,"tag":408,"props":785,"children":786},{},[787,792,794,799,801,806,808,814,816,822],{"type":45,"tag":436,"props":788,"children":789},{},[790],{"type":51,"value":791},"Docker runtime",{"type":51,"value":793}," — Docker Engine ",{"type":45,"tag":436,"props":795,"children":796},{},[797],{"type":51,"value":798},"28.3.3",{"type":51,"value":800}," with Docker Compose plugin ",{"type":45,"tag":436,"props":802,"children":803},{},[804],{"type":51,"value":805},"v2.39.1+",{"type":51,"value":807},". Verify with ",{"type":45,"tag":93,"props":809,"children":811},{"className":810},[],[812],{"type":51,"value":813},"docker --version",{"type":51,"value":815}," and ",{"type":45,"tag":93,"props":817,"children":819},{"className":818},[],[820],{"type":51,"value":821},"docker compose version",{"type":51,"value":100},{"type":45,"tag":408,"props":824,"children":825},{},[826,831,833,839,841,847,849,855],{"type":45,"tag":436,"props":827,"children":828},{},[829],{"type":51,"value":830},"Elasticsearch",{"type":51,"value":832}," — must be reachable at the URL configured in ",{"type":45,"tag":93,"props":834,"children":836},{"className":835},[],[837],{"type":51,"value":838},"elasticsearch.node",{"type":51,"value":840},". The server pings ES on startup; if unreachable, it exits (and ",{"type":45,"tag":93,"props":842,"children":844},{"className":843},[],[845],{"type":51,"value":846},"restart: always",{"type":51,"value":848}," brings it back). If you need to bring up ES too, use the infra compose: ",{"type":45,"tag":93,"props":850,"children":852},{"className":851},[],[853],{"type":51,"value":854},"docker compose -f services\u002Finfra\u002Fcompose.yml up -d elasticsearch",{"type":51,"value":100},{"type":45,"tag":408,"props":857,"children":858},{},[859,864,866,872,874,880],{"type":45,"tag":436,"props":860,"children":861},{},[862],{"type":51,"value":863},"Optional Kafka broker",{"type":51,"value":865},". The API can run without Kafka. If you want a quiet broker-less deployment, use the image-baked config or a custom config with ",{"type":45,"tag":93,"props":867,"children":869},{"className":868},[],[870],{"type":51,"value":871},"kafka.brokers: []",{"type":51,"value":873},"; the service-shipped compose config points at ",{"type":45,"tag":93,"props":875,"children":877},{"className":876},[],[878],{"type":51,"value":879},"localhost:9092",{"type":51,"value":881},", so Kafka-dependent features (dynamic config, dynamic calibration, RTLS\u002FAMR) will fail until a broker is reachable.",{"type":45,"tag":408,"props":883,"children":884},{},[885,895,897,903],{"type":45,"tag":436,"props":886,"children":887},{},[888,893],{"type":45,"tag":93,"props":889,"children":891},{"className":890},[],[892],{"type":51,"value":301},{"type":51,"value":894}," for the default compose.",{"type":51,"value":896}," The base compose bind-mounts ",{"type":45,"tag":93,"props":898,"children":900},{"className":899},[],[901],{"type":51,"value":902},"$VSS_DATA_DIR\u002Fdata_log\u002Fvss_video_analytics_api",{"type":51,"value":904}," for multipart upload handling and file-backed assets such as calibration images. Set the directory to a writable host path and pre-create it, or remove that mount if image uploads are not needed.",{"type":45,"tag":54,"props":906,"children":907},{},[908],{"type":51,"value":909},"If any required prerequisite fails, surface the gap before going further.",{"type":45,"tag":46,"props":911,"children":912},{"id":75},[913],{"type":51,"value":914},"Workflow",{"type":45,"tag":54,"props":916,"children":917},{},[918,920,928],{"type":51,"value":919},"Hand the user ",{"type":45,"tag":376,"props":921,"children":922},{"href":378},[923],{"type":45,"tag":93,"props":924,"children":926},{"className":925},[],[927],{"type":51,"value":378},{"type":51,"value":929}," and walk them through its steps in order:",{"type":45,"tag":660,"props":931,"children":932},{},[933,938,943,948],{"type":45,"tag":408,"props":934,"children":935},{},[936],{"type":51,"value":937},"Choose a config — image-baked default, service-shipped, or custom.",{"type":45,"tag":408,"props":939,"children":940},{},[941],{"type":51,"value":942},"Decide whether a data-log volume is needed for file uploads.",{"type":45,"tag":408,"props":944,"children":945},{},[946],{"type":51,"value":947},"Confirm infrastructure dependencies — Elasticsearch (required), Kafka (optional).",{"type":45,"tag":408,"props":949,"children":950},{},[951,953,959],{"type":51,"value":952},"Deploy + verify with ",{"type":45,"tag":93,"props":954,"children":956},{"className":955},[],[957],{"type":51,"value":958},"docker compose up",{"type":51,"value":960}," and health check.",{"type":45,"tag":54,"props":962,"children":963},{},[964],{"type":51,"value":965},"The compose-file edits, config options, deploy + verify commands, REST API endpoint table, and troubleshooting table all live in that reference — don't duplicate them here.",{"type":45,"tag":46,"props":967,"children":969},{"id":968},"endpoint-reference",[970],{"type":51,"value":971},"Endpoint Reference",{"type":45,"tag":54,"props":973,"children":974},{},[975,977,985],{"type":51,"value":976},"Use ",{"type":45,"tag":376,"props":978,"children":979},{"href":378},[980],{"type":45,"tag":93,"props":981,"children":983},{"className":982},[],[984],{"type":51,"value":378},{"type":51,"value":986}," for the REST endpoint table and runtime dependency notes.",{"type":45,"tag":46,"props":988,"children":990},{"id":989},"kafka-dependent-features-runtime-requires-broker",[991],{"type":51,"value":992},"Kafka-dependent features (runtime, requires broker)",{"type":45,"tag":54,"props":994,"children":995},{},[996,998,1003],{"type":51,"value":997},"Once the container is up ",{"type":45,"tag":436,"props":999,"children":1000},{},[1001],{"type":51,"value":1002},"and a Kafka broker is reachable",{"type":51,"value":1004},", three additional capabilities are available:",{"type":45,"tag":1006,"props":1007,"children":1009},"h3",{"id":1008},"dynamic-config",[1010],{"type":51,"value":1011},"Dynamic config",{"type":45,"tag":54,"props":1013,"children":1014},{},[1015,1017,1022,1024,1030,1032,1038,1040,1046,1048,1054,1056,1062,1064,1069,1071,1077,1079,1085],{"type":51,"value":1016},"The API acts as the ",{"type":45,"tag":436,"props":1018,"children":1019},{},[1020],{"type":51,"value":1021},"producer",{"type":51,"value":1023}," for dynamic config updates. When an operator POSTs to ",{"type":45,"tag":93,"props":1025,"children":1027},{"className":1026},[],[1028],{"type":51,"value":1029},"\u002Fconfig",{"type":51,"value":1031},", the API publishes an ",{"type":45,"tag":93,"props":1033,"children":1035},{"className":1034},[],[1036],{"type":51,"value":1037},"upsert",{"type":51,"value":1039}," message to the ",{"type":45,"tag":93,"props":1041,"children":1043},{"className":1042},[],[1044],{"type":51,"value":1045},"mdx-notification",{"type":51,"value":1047}," topic with Kafka key ",{"type":45,"tag":93,"props":1049,"children":1051},{"className":1050},[],[1052],{"type":51,"value":1053},"behavior-analytics-config",{"type":51,"value":1055},". The downstream ",{"type":45,"tag":93,"props":1057,"children":1059},{"className":1058},[],[1060],{"type":51,"value":1061},"behavior-analytics",{"type":51,"value":1063}," container consumes this and ACKs back. The API also handles the bootstrap flow — when ",{"type":45,"tag":93,"props":1065,"children":1067},{"className":1066},[],[1068],{"type":51,"value":1061},{"type":51,"value":1070}," starts, it publishes a ",{"type":45,"tag":93,"props":1072,"children":1074},{"className":1073},[],[1075],{"type":51,"value":1076},"request-config",{"type":51,"value":1078}," message, and the API replies with ",{"type":45,"tag":93,"props":1080,"children":1082},{"className":1081},[],[1083],{"type":51,"value":1084},"upsert-all",{"type":51,"value":1086}," containing the latest verified config from Elasticsearch.",{"type":45,"tag":54,"props":1088,"children":1089},{},[1090,1092,1098],{"type":51,"value":1091},"Consumer-side validation, ACK semantics, and the full wire contract are documented in the ",{"type":45,"tag":93,"props":1093,"children":1095},{"className":1094},[],[1096],{"type":51,"value":1097},"vss-setup-behavior-analytics",{"type":51,"value":1099}," dynamic-config reference.",{"type":45,"tag":1006,"props":1101,"children":1103},{"id":1102},"dynamic-calibration",[1104],{"type":51,"value":1105},"Dynamic calibration",{"type":45,"tag":54,"props":1107,"children":1108},{},[1109,1111,1116,1118,1124,1126,1131,1133,1138,1140,1146,1148,1153],{"type":51,"value":1110},"The API produces calibration update notifications on ",{"type":45,"tag":93,"props":1112,"children":1114},{"className":1113},[],[1115],{"type":51,"value":1045},{"type":51,"value":1117}," with Kafka key ",{"type":45,"tag":93,"props":1119,"children":1121},{"className":1120},[],[1122],{"type":51,"value":1123},"calibration",{"type":51,"value":1125},". Supports ",{"type":45,"tag":93,"props":1127,"children":1129},{"className":1128},[],[1130],{"type":51,"value":1084},{"type":51,"value":1132}," (full snapshot), ",{"type":45,"tag":93,"props":1134,"children":1136},{"className":1135},[],[1137],{"type":51,"value":1037},{"type":51,"value":1139}," (per-sensor merge), and ",{"type":45,"tag":93,"props":1141,"children":1143},{"className":1142},[],[1144],{"type":51,"value":1145},"delete",{"type":51,"value":1147}," (per-sensor removal). The downstream ",{"type":45,"tag":93,"props":1149,"children":1151},{"className":1150},[],[1152],{"type":51,"value":1061},{"type":51,"value":1154}," container consumes these and applies them to the live calibration.",{"type":45,"tag":54,"props":1156,"children":1157},{},[1158,1160,1165],{"type":51,"value":1159},"Consumer-side validation and per-action policy are documented in the ",{"type":45,"tag":93,"props":1161,"children":1163},{"className":1162},[],[1164],{"type":51,"value":1097},{"type":51,"value":1166}," dynamic-calibration reference.",{"type":45,"tag":1006,"props":1168,"children":1170},{"id":1169},"rtls-amr",[1171],{"type":51,"value":1172},"RTLS \u002F AMR",{"type":45,"tag":54,"props":1174,"children":1175},{},[1176,1178,1184,1186,1192],{"type":51,"value":1177},"The API consumes real-time location (",{"type":45,"tag":93,"props":1179,"children":1181},{"className":1180},[],[1182],{"type":51,"value":1183},"mdx-rtls",{"type":51,"value":1185},") and AMR (",{"type":45,"tag":93,"props":1187,"children":1189},{"className":1188},[],[1190],{"type":51,"value":1191},"mdx-amr",{"type":51,"value":1193},") messages from Kafka and exposes them via REST endpoints.",{"type":45,"tag":46,"props":1195,"children":1197},{"id":1196},"routing-rules",[1198],{"type":51,"value":1199},"Routing rules",{"type":45,"tag":404,"props":1201,"children":1202},{},[1203,1231,1242,1254,1273],{"type":45,"tag":408,"props":1204,"children":1205},{},[1206,1208,1213,1215,1221,1223,1229],{"type":51,"value":1207},"If the user wants \"the full stack\" (UI \u002F agent \u002F perception): hand off to ",{"type":45,"tag":93,"props":1209,"children":1211},{"className":1210},[],[1212],{"type":51,"value":478},{"type":51,"value":1214}," with profile ",{"type":45,"tag":93,"props":1216,"children":1218},{"className":1217},[],[1219],{"type":51,"value":1220},"warehouse",{"type":51,"value":1222}," (or ",{"type":45,"tag":93,"props":1224,"children":1226},{"className":1225},[],[1227],{"type":51,"value":1228},"alerts",{"type":51,"value":1230},"). Don't run this skill in parallel.",{"type":45,"tag":408,"props":1232,"children":1233},{},[1234,1236,1241],{"type":51,"value":1235},"If the user wants to deploy the analytics pipeline (behavior creation, incident detection): hand off to ",{"type":45,"tag":93,"props":1237,"children":1239},{"className":1238},[],[1240],{"type":51,"value":1097},{"type":51,"value":100},{"type":45,"tag":408,"props":1243,"children":1244},{},[1245,1247,1252],{"type":51,"value":1246},"If the user wants to publish a runtime config \u002F calibration update through the REST API: confirm Kafka is reachable, then use the ",{"type":45,"tag":93,"props":1248,"children":1250},{"className":1249},[],[1251],{"type":51,"value":1029},{"type":51,"value":1253}," or calibration endpoints and point them at the behavior-analytics dynamic-update references for the consumer wire contract.",{"type":45,"tag":408,"props":1255,"children":1256},{},[1257,1259,1264,1266,1271],{"type":51,"value":1258},"If the user wants to understand the dynamic config \u002F dynamic calibration wire contract from the ",{"type":45,"tag":436,"props":1260,"children":1261},{},[1262],{"type":51,"value":1263},"consumer",{"type":51,"value":1265}," (behavior-analytics) side: point them at the ",{"type":45,"tag":93,"props":1267,"children":1269},{"className":1268},[],[1270],{"type":51,"value":1097},{"type":51,"value":1272}," dynamic-config and dynamic-calibration references.",{"type":45,"tag":408,"props":1274,"children":1275},{},[1276,1278,1284,1286,1291],{"type":51,"value":1277},"If the user wants to query or interact with the REST API endpoints: the deploy reference endpoint table covers what's available. For the full OpenAPI spec, see ",{"type":45,"tag":93,"props":1279,"children":1281},{"className":1280},[],[1282],{"type":51,"value":1283},"src\u002Fapp\u002Fspecification\u002Fopenapi.json",{"type":51,"value":1285}," in the ",{"type":45,"tag":93,"props":1287,"children":1289},{"className":1288},[],[1290],{"type":51,"value":586},{"type":51,"value":1292}," repo.",{"type":45,"tag":54,"props":1294,"children":1295},{},[1296],{"type":51,"value":1297},"bump:1",{"type":45,"tag":1299,"props":1300,"children":1301},"style",{},[1302],{"type":51,"value":1303},"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":1305,"total":1406},[1306,1323,1335,1349,1361,1378,1392],{"slug":1307,"name":1307,"fn":1308,"description":1309,"org":1310,"tags":1311,"stars":23,"repoUrl":24,"updatedAt":1322},"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},[1312,1315,1318,1319],{"name":1313,"slug":1314,"type":15},"Data Analysis","data-analysis",{"name":1316,"slug":1317,"type":15},"Data Engineering","data-engineering",{"name":9,"slug":8,"type":15},{"name":1320,"slug":1321,"type":15},"Performance","performance","2026-07-14T05:28:43.176466",{"slug":1324,"name":1324,"fn":1325,"description":1326,"org":1327,"tags":1328,"stars":23,"repoUrl":24,"updatedAt":1334},"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},[1329,1330,1333],{"name":17,"slug":18,"type":15},{"name":1331,"slug":1332,"type":15},"Infrastructure","infrastructure",{"name":9,"slug":8,"type":15},"2026-07-14T05:29:06.667109",{"slug":1336,"name":1336,"fn":1337,"description":1338,"org":1339,"tags":1340,"stars":23,"repoUrl":24,"updatedAt":1348},"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},[1341,1344,1345],{"name":1342,"slug":1343,"type":15},"Agents","agents",{"name":9,"slug":8,"type":15},{"name":1346,"slug":1347,"type":15},"Research","research","2026-07-14T05:28:06.816956",{"slug":1350,"name":1350,"fn":1351,"description":1352,"org":1353,"tags":1354,"stars":23,"repoUrl":24,"updatedAt":1360},"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},[1355,1356,1357],{"name":1313,"slug":1314,"type":15},{"name":9,"slug":8,"type":15},{"name":1358,"slug":1359,"type":15},"Testing","testing","2026-07-17T05:29:03.913266",{"slug":1362,"name":1362,"fn":1363,"description":1364,"org":1365,"tags":1366,"stars":23,"repoUrl":24,"updatedAt":1377},"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},[1367,1370,1373,1374],{"name":1368,"slug":1369,"type":15},"Automation","automation",{"name":1371,"slug":1372,"type":15},"Imaging","imaging",{"name":9,"slug":8,"type":15},{"name":1375,"slug":1376,"type":15},"Video","video","2026-07-17T05:28:53.905004",{"slug":1379,"name":1379,"fn":1380,"description":1381,"org":1382,"tags":1383,"stars":23,"repoUrl":24,"updatedAt":1391},"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},[1384,1385,1387,1388],{"name":17,"slug":18,"type":15},{"name":1386,"slug":320,"type":15},"Docker",{"name":9,"slug":8,"type":15},{"name":1389,"slug":1390,"type":15},"Operations","operations","2026-07-17T05:28:56.913999",{"slug":1393,"name":1393,"fn":1394,"description":1395,"org":1396,"tags":1397,"stars":23,"repoUrl":24,"updatedAt":1405},"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},[1398,1399,1402],{"name":9,"slug":8,"type":15},{"name":1400,"slug":1401,"type":15},"Quantum Computing","quantum-computing",{"name":1403,"slug":1404,"type":15},"Simulation","simulation","2026-07-14T05:26:58.898253",305,{"items":1408,"total":1559},[1409,1427,1443,1454,1466,1480,1493,1507,1518,1527,1541,1550],{"slug":1410,"name":1410,"fn":1411,"description":1412,"org":1413,"tags":1414,"stars":1424,"repoUrl":1425,"updatedAt":1426},"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},[1415,1418,1421],{"name":1416,"slug":1417,"type":15},"Documentation","documentation",{"name":1419,"slug":1420,"type":15},"MCP","mcp",{"name":1422,"slug":1423,"type":15},"Search","search",21777,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FNemoClaw","2026-07-20T06:00:01.461044",{"slug":1428,"name":1428,"fn":1429,"description":1430,"org":1431,"tags":1432,"stars":1440,"repoUrl":1441,"updatedAt":1442},"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},[1433,1436,1437],{"name":1434,"slug":1435,"type":15},"Containers","containers",{"name":17,"slug":18,"type":15},{"name":1438,"slug":1439,"type":15},"Python","python",17049,"https:\u002F\u002Fgithub.com\u002FNVIDIA\u002FMegatron-LM","2026-07-27T06:06:11.249662",{"slug":1444,"name":1444,"fn":1445,"description":1446,"org":1447,"tags":1448,"stars":1440,"repoUrl":1441,"updatedAt":1453},"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},[1449,1452],{"name":1450,"slug":1451,"type":15},"CI\u002FCD","ci-cd",{"name":17,"slug":18,"type":15},"2026-07-14T05:25:59.97109",{"slug":1455,"name":1455,"fn":1456,"description":1457,"org":1458,"tags":1459,"stars":1440,"repoUrl":1441,"updatedAt":1465},"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},[1460,1461,1462],{"name":1450,"slug":1451,"type":15},{"name":17,"slug":18,"type":15},{"name":1463,"slug":1464,"type":15},"GitHub","github","2026-07-27T06:06:12.278222",{"slug":1467,"name":1467,"fn":1468,"description":1469,"org":1470,"tags":1471,"stars":1440,"repoUrl":1441,"updatedAt":1479},"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},[1472,1475,1476],{"name":1473,"slug":1474,"type":15},"Debugging","debugging",{"name":1463,"slug":1464,"type":15},{"name":1477,"slug":1478,"type":15},"Triage","triage","2026-07-14T05:25:57.442089",{"slug":1481,"name":1481,"fn":1482,"description":1483,"org":1484,"tags":1485,"stars":1440,"repoUrl":1441,"updatedAt":1492},"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},[1486,1489],{"name":1487,"slug":1488,"type":15},"Best Practices","best-practices",{"name":1490,"slug":1491,"type":15},"Code Analysis","code-analysis","2026-07-14T05:25:56.18433",{"slug":1494,"name":1494,"fn":1495,"description":1496,"org":1497,"tags":1498,"stars":1440,"repoUrl":1441,"updatedAt":1506},"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},[1499,1502,1505],{"name":1500,"slug":1501,"type":15},"Machine Learning","machine-learning",{"name":1503,"slug":1504,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:11.777011",{"slug":1508,"name":1508,"fn":1509,"description":1510,"org":1511,"tags":1512,"stars":1440,"repoUrl":1441,"updatedAt":1517},"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},[1513,1516],{"name":1514,"slug":1515,"type":15},"QA","qa",{"name":1358,"slug":1359,"type":15},"2026-07-14T05:25:53.673039",{"slug":1519,"name":1519,"fn":1520,"description":1521,"org":1522,"tags":1523,"stars":1440,"repoUrl":1441,"updatedAt":1526},"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},[1524,1525],{"name":17,"slug":18,"type":15},{"name":1331,"slug":1332,"type":15},"2026-07-14T05:25:49.362534",{"slug":1528,"name":1528,"fn":1529,"description":1530,"org":1531,"tags":1532,"stars":1440,"repoUrl":1441,"updatedAt":1540},"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},[1533,1536,1537],{"name":1534,"slug":1535,"type":15},"Code Review","code-review",{"name":1463,"slug":1464,"type":15},{"name":1538,"slug":1539,"type":15},"Pull Requests","pull-requests","2026-07-14T05:26:01.226578",{"slug":1542,"name":1542,"fn":1543,"description":1544,"org":1545,"tags":1546,"stars":1440,"repoUrl":1441,"updatedAt":1549},"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},[1547,1548],{"name":1514,"slug":1515,"type":15},{"name":1358,"slug":1359,"type":15},"2026-07-14T05:25:54.928983",{"slug":1551,"name":1551,"fn":1552,"description":1553,"org":1554,"tags":1555,"stars":1440,"repoUrl":1441,"updatedAt":1558},"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},[1556,1557],{"name":1368,"slug":1369,"type":15},{"name":1450,"slug":1451,"type":15},"2026-07-30T05:29:03.275638",496]