[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7CSZ31JSAMTCMN5GA727ZP8":3,"skill-same:01M7CSZ31JSAMTCMN5GA727ZP8":96},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":29,"commitSha":30,"skillDirectory":31,"forksCount":32,"repositoryHtmlUrl":33,"repositoryHomepageUrl":34,"ownerHtmlUrl":35,"ownerBlogUrl":6,"ownerDescription":36,"updatedAt":37,"install":38,"resources":51},"01M7CSZ31JSAMTCMN5GA727ZP8","vss-deploy-video-embedding",null,"Deploy, operate, and integrate the VSS 3.2 GA RT-Embed Video Embedding microservice. Covers Docker Compose bring-up, GPU and storage prerequisites, the `\u002Fv1` REST API (file uploads, text and video embeddings, live RTSP streams, health and metrics), Redis\u002FKafka\u002FOTel integration, common failure modes, and teardown.","YYC-Cube\u002FYYC3-Knowledge-Base","YYC-Cube","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F235006543?v=4","01M79J2PH4SWD2X0825X6PN748","yyc3","01M79J2PHVK3F6ZBYT8K2SCZCW",1,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FYYC-Cube\u002FYYC3-Knowledge-Base\u002Fblob\u002Fmain\u002FYYC3-Skills-技能包\u002FYYC3-Skills-技能包-skills\u002Fskills\u002Fvss-deploy-video-embedding\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: vss-deploy-video-embedding\ndescription: >\n  Deploy, operate, and integrate the VSS 3.2 GA RT-Embed Video Embedding\n  microservice. Covers Docker Compose bring-up,\n  GPU and storage prerequisites, the `\u002Fv1` REST API (file uploads,\n  text and video embeddings, live RTSP streams, health and metrics),\n  Redis\u002FKafka\u002FOTel integration, common failure modes, and teardown.\nlicense: Apache-2.0\nmetadata:\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\"\n---\n\n# VSS Video Embedding (RT-Embed)\n\nUse this skill when you need to:\n\n- Deploy the VSS Video Embedding microservice from a Docker Compose file.\n- Generate text or video embeddings against the Cosmos-Embed1-448p model.\n- Embed an uploaded file, an HTTP\u002FS3\u002Ffile\u002Fdata URL, or a live RTSP stream.\n- Wire the service into a VSS deployment alongside Redis, Kafka, and OpenTelemetry.\n- Triage readiness, model-download, GPU, or stream-reconnection failures.\n\n**Trigger phrases:** `vss-deploy-video-embedding`, `RT-Embed`, `rtvi-embed`, `video embedding service`, `Cosmos-Embed1`, `embed live stream`, `embed video file`, `generate video embeddings`, `text embedding for video search`.\n\n## Service Snapshot\n\n- **VSS 3.2 GA skill:** `vss-deploy-video-embedding`.\n- **Legacy 3.1 name:** RT-Embed.\n- **Compose service:** `rtvi-embed`.\n- **Container name:** `vss-rtvi-embed`.\n- **Image:** `nvcr.io\u002Fnvstaging\u002Fvss-core\u002Fvss-rt-embed` (override with `RTVI_EMBED_IMAGE`).\n- **Default tag:** `3.2.0-26.05.4` (override with `RTVI_EMBED_TAG`).\n- **Profile:** `bp_developer_search_2d`.\n- **Container port:** `8000` (host-side `${RTVI_EMBED_PORT}`).\n- **Default model:** `cosmos-embed1-448p` from `nvidia\u002FCosmos-Embed1-448p`.\n- **Health endpoint:** `GET \u002Fv1\u002Fready`.\n- **Healthcheck startup grace:** `1200s` (20 minutes) on first boot.\n\n## Prerequisites\n\nBefore bringing the service up:\n\n1. NVIDIA driver + NVIDIA Container Toolkit installed; default runtime set to `nvidia`.\n2. Docker Engine and Docker Compose plugin recent enough to support `${VAR:+value}` conditional volume substitution.\n3. `docker login nvcr.io` completed with `$oauthtoken` and a valid NGC API key.\n4. Host environment provides at minimum: `RTVI_EMBED_PORT`, `VSS_DATA_DIR`, `NGC_API_KEY`, and optionally `HF_TOKEN` to avoid Hugging Face 429 rate-limit errors during the Cosmos-Embed1 weights download.\n5. Free disk space for persistent caches: `rtvi-hf-cache`, `rtvi-ngc-model-cache`, `rtvi-triton-model-repo` (multi-GB).\n\nSee `references\u002Fdeploy-vss-deploy-video-embedding.md` for the full prerequisite list and `references\u002Fenvironment.md` for the variable matrix.\n\n## Deploy\n\nFor **standalone RT-Embed**, work from the service directory:\n\n```bash\ncd \"{{repo_root}}\u002Fdeploy\u002Fdocker\u002Fservices\u002Frtvi\u002Frtvi-embed\"\n```\n\nDo **not** use `\u002Fvss-deploy-profile` or `scripts\u002Fdev-profile.sh` for this standalone deployment.\n\nSet a minimal standalone environment before `docker compose up`:\n\n```bash\nexport RTVI_EMBED_PORT=8017\nexport VSS_DATA_DIR=\"${VSS_DATA_DIR:-$(pwd)\u002F.standalone-data}\"\nexport NGC_API_KEY=\"\u003Cyour-ngc-api-key>\"\nexport HOST_IP=\"$(hostname -I | awk '{print $1}')\"\nexport HF_TOKEN=\"${HF_TOKEN:-}\"  # optional, but recommended to avoid HF 429s\nmkdir -p \"${VSS_DATA_DIR}\u002Fdata_log\u002Fvst\u002Fclip_storage\"\nexport RTVI_EMBED_KAFKA_ENABLED=false\nexport ENABLE_REDIS_ERROR_MESSAGES=false\n```\n\nThis avoids mounting `\u002Fdata_log\u002Fvst\u002Fclip_storage` from filesystem root when `VSS_DATA_DIR` is unset, and prevents startup stalls from missing Kafka\u002FRedis peers in standalone mode.\n\n```bash\n# Bring up the service under the required Compose profile.\ndocker compose -f rtvi-embed-docker-compose.yml \\\n  --profile bp_developer_search_2d up -d rtvi-embed\n\n# Watch logs while the model downloads and Triton repo builds.\ndocker compose -f rtvi-embed-docker-compose.yml logs -f rtvi-embed\n```\n\nFirst-boot startup may take 20 minutes for the Cosmos-Embed1 download and Triton model repository build. Do not shorten the `start_period: 1200s` healthcheck during the first boot or the container will be marked unhealthy while still warming up.\n\n### Verify\n\n```bash\nBASE_URL=\"http:\u002F\u002Flocalhost:${RTVI_EMBED_PORT}\"\n\ncurl -fsS \"$BASE_URL\u002Fv1\u002Fready\"               # 200 when warm.\ncurl -fsS \"$BASE_URL\u002Fv1\u002Fready?detailed=true\" # Component-level status.\ncurl -fsS \"$BASE_URL\u002Fv1\u002Fversion\"\nMODELS_JSON=$(curl -fsS \"$BASE_URL\u002Fv1\u002Fmodels\")\necho \"$MODELS_JSON\"                          # Confirms cosmos-embed1-448p is loaded.\n\nMODEL_ID=\"$(echo \"$MODELS_JSON\" | jq -r '.data[0].id \u002F\u002F empty')\"\ntest -n \"$MODEL_ID\" || { echo \"ERROR: \u002Fv1\u002Fmodels has no model id — wait until \u002Fv1\u002Fready is 200\" >&2; exit 1; }\n```\n\nThe sections below that call the API reuse `$BASE_URL` and `$MODEL_ID` from this block.\n\n## Common Operations\n\n### Generate video embeddings from an uploaded file\n\n```bash\nFILE_ID=$(curl -fsS -X POST \"$BASE_URL\u002Fv1\u002Ffiles\" \\\n  -F purpose=vision \\\n  -F media_type=video \\\n  -F file=@\u002Fpath\u002Fto\u002Fclip.mp4 | jq -r .id)\n\ncurl -fsS -X POST \"$BASE_URL\u002Fv1\u002Fgenerate_video_embeddings\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d \"{\n    \\\"id\\\": \\\"$FILE_ID\\\",\n    \\\"model\\\": \\\"$MODEL_ID\\\",\n    \\\"chunk_duration\\\": 60,\n    \\\"chunk_overlap_duration\\\": 10\n  }\"\n```\n\n### Generate text embeddings (for text-to-video search)\n\n```bash\ncurl -fsS -X POST \"$BASE_URL\u002Fv1\u002Fgenerate_text_embeddings\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d \"{\\\"text_input\\\":\\\"a forklift moving pallets\\\",\\\"model\\\":\\\"${MODEL_ID}\\\"}\"\n```\n\n### Embed a live RTSP stream\n\nLive streams **require** `stream: true` and `chunk_duration > 0`. A synchronous call returns `400 BadParameters: \"Only streaming output is supported for live-streams\"`, and the `chunk_duration: 0` returned by `streams\u002Fadd` is a placeholder — it must be overridden on the embed request or you get `400 BadParameter: \"chunk_duration must be greater than 0\"`.\n\n`POST \u002Fv1\u002Fstreams\u002Fadd` does **not** deduplicate by `liveStreamUrl` — submitting the same URL twice mints two distinct `stream_id`s. Before adding, call `GET \u002Fv1\u002Fstreams\u002Fget-stream-info` and reuse any existing registration for that URL to avoid orphaned entries.\n\n```bash\nSTREAM_ID=$(curl -fsS -X POST \"$BASE_URL\u002Fv1\u002Fstreams\u002Fadd\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"streams\":[{\"liveStreamUrl\":\"rtsp:\u002F\u002Fhost:port\u002Flive\u002Fvideo\",\"description\":\"camera-001\"}]}' \\\n  | jq -r '.results[0].id')\n\ncurl -N -X POST \"$BASE_URL\u002Fv1\u002Fgenerate_video_embeddings\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"Accept: text\u002Fevent-stream\" \\\n  -d \"{\n    \\\"id\\\": \\\"$STREAM_ID\\\",\n    \\\"model\\\": \\\"$MODEL_ID\\\",\n    \\\"stream\\\": true,\n    \\\"chunk_duration\\\": 10,\n    \\\"chunk_overlap_duration\\\": 2\n  }\"\n\n# List registered live streams (use this to recover stream_ids across sessions).\ncurl -fsS \"$BASE_URL\u002Fv1\u002Fstreams\u002Fget-stream-info\"\n\n# Stop embedding for the stream when done (terminates SSE with data: [DONE]).\ncurl -fsS -X DELETE \"$BASE_URL\u002Fv1\u002Fgenerate_video_embeddings\u002F$STREAM_ID\"\n```\n\nSee `references\u002Frest-api.md` for the full endpoint catalog, SSE streaming, and single-stream control-plane patterns.\n\n## Logs, Metrics, And Status\n\n```bash\ndocker compose -f rtvi-embed-docker-compose.yml ps\ndocker compose -f rtvi-embed-docker-compose.yml logs -f rtvi-embed\ndocker stats vss-rtvi-embed\n\ncurl -fsS \"$BASE_URL\u002Fv1\u002Fmetrics\"          # Prometheus.\ncurl -fsS \"$BASE_URL\u002Fv1\u002Fassets\u002Fstats\"     # Asset storage counts and TTL.\n```\n\nIf `RTVI_EMBED_LOG_DIR` is bound to a host directory, log files are also available at `\u002Fopt\u002Fnvidia\u002Frtvi\u002Flog\u002Frtvi\u002F` on the host.\n\n## Integration Surface\n\n- **Inputs:** REST API on `:${RTVI_EMBED_PORT}` (`POST \u002Fv1\u002Ffiles`, `POST \u002Fv1\u002Fgenerate_text_embeddings`, `POST \u002Fv1\u002Fgenerate_video_embeddings`, live-stream control endpoints).\n- **Outputs:** Synchronous REST responses, optional SSE for chunked video embeddings, optional Kafka messages on the topics named by `RTVI_EMBED_KAFKA_TOPIC` (container `KAFKA_TOPIC`) and `RTVI_EMBED_ERROR_MESSAGE_TOPIC` (container `ERROR_MESSAGE_TOPIC`) when Kafka is enabled (host: `RTVI_EMBED_KAFKA_ENABLED=true`, which Compose maps to container `KAFKA_ENABLED`).\n- **Optional peers:** Redis (`ENABLE_REDIS_ERROR_MESSAGES=true`), Kafka (host: `RTVI_EMBED_KAFKA_ENABLED=true` → container `KAFKA_ENABLED`), OpenTelemetry collector (host: `RTVI_EMBED_ENABLE_OTEL_MONITORING=true` → container `ENABLE_OTEL_MONITORING`).\n\n`references\u002Fintegrate-vss-deploy-video-embedding.md` documents the full integration contract.\n\n## Troubleshooting\n\nFor common failure patterns and resolutions, see `references\u002Ftroubleshooting.md`. Frequent issues:\n\n- `\u002Fv1\u002Fready` stuck at 503 → check for missing `NGC_API_KEY`, Hugging Face 429 rate-limit failures during the first-boot model download (set `HF_TOKEN` to avoid), or unreachable Redis\u002FKafka peers when those flags are enabled.\n- Healthcheck flipping unhealthy in the first 20 minutes → restore `start_period: 1200s`.\n- Permission errors on bind-mounted cache directories → `chown -R 1001:1001` on the host paths.\n\n## Upgrade And Rollback\n\n1. Update `RTVI_EMBED_IMAGE` and `RTVI_EMBED_TAG` to the target build.\n2. `docker compose -f rtvi-embed-docker-compose.yml pull rtvi-embed`.\n3. `docker compose -f rtvi-embed-docker-compose.yml --profile bp_developer_search_2d up -d rtvi-embed`.\n4. Watch `\u002Fv1\u002Fready` until it returns 200.\n5. To roll back, re-pin `RTVI_EMBED_TAG` to the previous build and repeat. Named volumes persist across the swap.\n\n## Tear Down\n\n```bash\n# Preserve caches (named volumes survive).\ndocker compose -f rtvi-embed-docker-compose.yml down\n\n# WARNING: removes rtvi-hf-cache, rtvi-ngc-model-cache, rtvi-triton-model-repo.\n# Next start will re-download the model and rebuild the Triton repo (20+ min).\ndocker compose -f rtvi-embed-docker-compose.yml down -v\n```\n\n## References\n\n| File | When to read |\n|---|---|\n| [references\u002FREADME.md](references\u002FREADME.md) | Table of contents for all reference files. |\n| [references\u002Fdeploy-vss-deploy-video-embedding.md](references\u002Fdeploy-vss-deploy-video-embedding.md) | Build Vision Agent deployment reference: image, GPU, storage, startup, prerequisites, known issues. |\n| [references\u002Fintegrate-vss-deploy-video-embedding.md](references\u002Fintegrate-vss-deploy-video-embedding.md) | Build Vision Agent integration reference: peers, inputs\u002Foutputs, env vars, network, example Compose snippet. |\n| [references\u002Frest-api.md](references\u002Frest-api.md) | Full REST endpoint catalog with worked `curl` examples for file uploads, video\u002Ftext embeddings, live streams, and health\u002Fmetrics. |\n| [references\u002Fenvironment.md](references\u002Fenvironment.md) | Complete environment-variable matrix, including host-to-container renames and secret-sensitive variables. |\n| [references\u002Ftroubleshooting.md](references\u002Ftroubleshooting.md) | Operational diagnostics for startup, model\u002Fcache, runtime, and observability issues. |\n\n","# VSS Video Embedding (RT-Embed)\n\nUse this skill when you need to:\n\n- Deploy the VSS Video Embedding microservice from a Docker Compose file.\n- Generate text or video embeddings against the Cosmos-Embed1-448p model.\n- Embed an uploaded file, an HTTP\u002FS3\u002Ffile\u002Fdata URL, or a live RTSP stream.\n- Wire the service into a VSS deployment alongside Redis, Kafka, and OpenTelemetry.\n- Triage readiness, model-download, GPU, or stream-reconnection failures.\n\n**Trigger phrases:** `vss-deploy-video-embedding`, `RT-Embed`, `rtvi-embed`, `video embedding service`, `Cosmos-Embed1`, `embed live stream`, `embed video file`, `generate video embeddings`, `text embedding for video search`.\n\n## Service Snapshot\n\n- **VSS 3.2 GA skill:** `vss-deploy-video-embedding`.\n- **Legacy 3.1 name:** RT-Embed.\n- **Compose service:** `rtvi-embed`.\n- **Container name:** `vss-rtvi-embed`.\n- **Image:** `nvcr.io\u002Fnvstaging\u002Fvss-core\u002Fvss-rt-embed` (override with `RTVI_EMBED_IMAGE`).\n- **Default tag:** `3.2.0-26.05.4` (override with `RTVI_EMBED_TAG`).\n- **Profile:** `bp_developer_search_2d`.\n- **Container port:** `8000` (host-side `${RTVI_EMBED_PORT}`).\n- **Default model:** `cosmos-embed1-448p` from `nvidia\u002FCosmos-Embed1-448p`.\n- **Health endpoint:** `GET \u002Fv1\u002Fready`.\n- **Healthcheck startup grace:** `1200s` (20 minutes) on first boot.\n\n## Prerequisites\n\nBefore bringing the service up:\n\n1. NVIDIA driver + NVIDIA Container Toolkit installed; default runtime set to `nvidia`.\n2. Docker Engine and Docker Compose plugin recent enough to support `${VAR:+value}` conditional volume substitution.\n3. `docker login nvcr.io` completed with `$oauthtoken` and a valid NGC API key.\n4. Host environment provides at minimum: `RTVI_EMBED_PORT`, `VSS_DATA_DIR`, `NGC_API_KEY`, and optionally `HF_TOKEN` to avoid Hugging Face 429 rate-limit errors during the Cosmos-Embed1 weights download.\n5. Free disk space for persistent caches: `rtvi-hf-cache`, `rtvi-ngc-model-cache`, `rtvi-triton-model-repo` (multi-GB).\n\nSee `references\u002Fdeploy-vss-deploy-video-embedding.md` for the full prerequisite list and `references\u002Fenvironment.md` for the variable matrix.\n\n## Deploy\n\nFor **standalone RT-Embed**, work from the service directory:\n\n```bash\ncd \"{{repo_root}}\u002Fdeploy\u002Fdocker\u002Fservices\u002Frtvi\u002Frtvi-embed\"\n```\n\nDo **not** use `\u002Fvss-deploy-profile` or `scripts\u002Fdev-profile.sh` for this standalone deployment.\n\nSet a minimal standalone environment before `docker compose up`:\n\n```bash\nexport RTVI_EMBED_PORT=8017\nexport VSS_DATA_DIR=\"${VSS_DATA_DIR:-$(pwd)\u002F.standalone-data}\"\nexport NGC_API_KEY=\"\u003Cyour-ngc-api-key>\"\nexport HOST_IP=\"$(hostname -I | awk '{print $1}')\"\nexport HF_TOKEN=\"${HF_TOKEN:-}\"  # optional, but recommended to avoid HF 429s\nmkdir -p \"${VSS_DATA_DIR}\u002Fdata_log\u002Fvst\u002Fclip_storage\"\nexport RTVI_EMBED_KAFKA_ENABLED=false\nexport ENABLE_REDIS_ERROR_MESSAGES=false\n```\n\nThis avoids mounting `\u002Fdata_log\u002Fvst\u002Fclip_storage` from filesystem root when `VSS_DATA_DIR` is unset, and prevents startup stalls from missing Kafka\u002FRedis peers in standalone mode.\n\n```bash\n# Bring up the service under the required Compose profile.\ndocker compose -f rtvi-embed-docker-compose.yml \\\n  --profile bp_developer_search_2d up -d rtvi-embed\n\n# Watch logs while the model downloads and Triton repo builds.\ndocker compose -f rtvi-embed-docker-compose.yml logs -f rtvi-embed\n```\n\nFirst-boot startup may take 20 minutes for the Cosmos-Embed1 download and Triton model repository build. Do not shorten the `start_period: 1200s` healthcheck during the first boot or the container will be marked unhealthy while still warming up.\n\n### Verify\n\n```bash\nBASE_URL=\"http:\u002F\u002Flocalhost:${RTVI_EMBED_PORT}\"\n\ncurl -fsS \"$BASE_URL\u002Fv1\u002Fready\"               # 200 when warm.\ncurl -fsS \"$BASE_URL\u002Fv1\u002Fready?detailed=true\" # Component-level status.\ncurl -fsS \"$BASE_URL\u002Fv1\u002Fversion\"\nMODELS_JSON=$(curl -fsS \"$BASE_URL\u002Fv1\u002Fmodels\")\necho \"$MODELS_JSON\"                          # Confirms cosmos-embed1-448p is loaded.\n\nMODEL_ID=\"$(echo \"$MODELS_JSON\" | jq -r '.data[0].id \u002F\u002F empty')\"\ntest -n \"$MODEL_ID\" || { echo \"ERROR: \u002Fv1\u002Fmodels has no model id — wait until \u002Fv1\u002Fready is 200\" >&2; exit 1; }\n```\n\nThe sections below that call the API reuse `$BASE_URL` and `$MODEL_ID` from this block.\n\n## Common Operations\n\n### Generate video embeddings from an uploaded file\n\n```bash\nFILE_ID=$(curl -fsS -X POST \"$BASE_URL\u002Fv1\u002Ffiles\" \\\n  -F purpose=vision \\\n  -F media_type=video \\\n  -F file=@\u002Fpath\u002Fto\u002Fclip.mp4 | jq -r .id)\n\ncurl -fsS -X POST \"$BASE_URL\u002Fv1\u002Fgenerate_video_embeddings\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d \"{\n    \\\"id\\\": \\\"$FILE_ID\\\",\n    \\\"model\\\": \\\"$MODEL_ID\\\",\n    \\\"chunk_duration\\\": 60,\n    \\\"chunk_overlap_duration\\\": 10\n  }\"\n```\n\n### Generate text embeddings (for text-to-video search)\n\n```bash\ncurl -fsS -X POST \"$BASE_URL\u002Fv1\u002Fgenerate_text_embeddings\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d \"{\\\"text_input\\\":\\\"a forklift moving pallets\\\",\\\"model\\\":\\\"${MODEL_ID}\\\"}\"\n```\n\n### Embed a live RTSP stream\n\nLive streams **require** `stream: true` and `chunk_duration > 0`. A synchronous call returns `400 BadParameters: \"Only streaming output is supported for live-streams\"`, and the `chunk_duration: 0` returned by `streams\u002Fadd` is a placeholder — it must be overridden on the embed request or you get `400 BadParameter: \"chunk_duration must be greater than 0\"`.\n\n`POST \u002Fv1\u002Fstreams\u002Fadd` does **not** deduplicate by `liveStreamUrl` — submitting the same URL twice mints two distinct `stream_id`s. Before adding, call `GET \u002Fv1\u002Fstreams\u002Fget-stream-info` and reuse any existing registration for that URL to avoid orphaned entries.\n\n```bash\nSTREAM_ID=$(curl -fsS -X POST \"$BASE_URL\u002Fv1\u002Fstreams\u002Fadd\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"streams\":[{\"liveStreamUrl\":\"rtsp:\u002F\u002Fhost:port\u002Flive\u002Fvideo\",\"description\":\"camera-001\"}]}' \\\n  | jq -r '.results[0].id')\n\ncurl -N -X POST \"$BASE_URL\u002Fv1\u002Fgenerate_video_embeddings\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"Accept: text\u002Fevent-stream\" \\\n  -d \"{\n    \\\"id\\\": \\\"$STREAM_ID\\\",\n    \\\"model\\\": \\\"$MODEL_ID\\\",\n    \\\"stream\\\": true,\n    \\\"chunk_duration\\\": 10,\n    \\\"chunk_overlap_duration\\\": 2\n  }\"\n\n# List registered live streams (use this to recover stream_ids across sessions).\ncurl -fsS \"$BASE_URL\u002Fv1\u002Fstreams\u002Fget-stream-info\"\n\n# Stop embedding for the stream when done (terminates SSE with data: [DONE]).\ncurl -fsS -X DELETE \"$BASE_URL\u002Fv1\u002Fgenerate_video_embeddings\u002F$STREAM_ID\"\n```\n\nSee `references\u002Frest-api.md` for the full endpoint catalog, SSE streaming, and single-stream control-plane patterns.\n\n## Logs, Metrics, And Status\n\n```bash\ndocker compose -f rtvi-embed-docker-compose.yml ps\ndocker compose -f rtvi-embed-docker-compose.yml logs -f rtvi-embed\ndocker stats vss-rtvi-embed\n\ncurl -fsS \"$BASE_URL\u002Fv1\u002Fmetrics\"          # Prometheus.\ncurl -fsS \"$BASE_URL\u002Fv1\u002Fassets\u002Fstats\"     # Asset storage counts and TTL.\n```\n\nIf `RTVI_EMBED_LOG_DIR` is bound to a host directory, log files are also available at `\u002Fopt\u002Fnvidia\u002Frtvi\u002Flog\u002Frtvi\u002F` on the host.\n\n## Integration Surface\n\n- **Inputs:** REST API on `:${RTVI_EMBED_PORT}` (`POST \u002Fv1\u002Ffiles`, `POST \u002Fv1\u002Fgenerate_text_embeddings`, `POST \u002Fv1\u002Fgenerate_video_embeddings`, live-stream control endpoints).\n- **Outputs:** Synchronous REST responses, optional SSE for chunked video embeddings, optional Kafka messages on the topics named by `RTVI_EMBED_KAFKA_TOPIC` (container `KAFKA_TOPIC`) and `RTVI_EMBED_ERROR_MESSAGE_TOPIC` (container `ERROR_MESSAGE_TOPIC`) when Kafka is enabled (host: `RTVI_EMBED_KAFKA_ENABLED=true`, which Compose maps to container `KAFKA_ENABLED`).\n- **Optional peers:** Redis (`ENABLE_REDIS_ERROR_MESSAGES=true`), Kafka (host: `RTVI_EMBED_KAFKA_ENABLED=true` → container `KAFKA_ENABLED`), OpenTelemetry collector (host: `RTVI_EMBED_ENABLE_OTEL_MONITORING=true` → container `ENABLE_OTEL_MONITORING`).\n\n`references\u002Fintegrate-vss-deploy-video-embedding.md` documents the full integration contract.\n\n## Troubleshooting\n\nFor common failure patterns and resolutions, see `references\u002Ftroubleshooting.md`. Frequent issues:\n\n- `\u002Fv1\u002Fready` stuck at 503 → check for missing `NGC_API_KEY`, Hugging Face 429 rate-limit failures during the first-boot model download (set `HF_TOKEN` to avoid), or unreachable Redis\u002FKafka peers when those flags are enabled.\n- Healthcheck flipping unhealthy in the first 20 minutes → restore `start_period: 1200s`.\n- Permission errors on bind-mounted cache directories → `chown -R 1001:1001` on the host paths.\n\n## Upgrade And Rollback\n\n1. Update `RTVI_EMBED_IMAGE` and `RTVI_EMBED_TAG` to the target build.\n2. `docker compose -f rtvi-embed-docker-compose.yml pull rtvi-embed`.\n3. `docker compose -f rtvi-embed-docker-compose.yml --profile bp_developer_search_2d up -d rtvi-embed`.\n4. Watch `\u002Fv1\u002Fready` until it returns 200.\n5. To roll back, re-pin `RTVI_EMBED_TAG` to the previous build and repeat. Named volumes persist across the swap.\n\n## Tear Down\n\n```bash\n# Preserve caches (named volumes survive).\ndocker compose -f rtvi-embed-docker-compose.yml down\n\n# WARNING: removes rtvi-hf-cache, rtvi-ngc-model-cache, rtvi-triton-model-repo.\n# Next start will re-download the model and rebuild the Triton repo (20+ min).\ndocker compose -f rtvi-embed-docker-compose.yml down -v\n```\n\n## References\n\n| File | When to read |\n|---|---|\n| [references\u002FREADME.md](references\u002FREADME.md) | Table of contents for all reference files. |\n| [references\u002Fdeploy-vss-deploy-video-embedding.md](references\u002Fdeploy-vss-deploy-video-embedding.md) | Build Vision Agent deployment reference: image, GPU, storage, startup, prerequisites, known issues. |\n| [references\u002Fintegrate-vss-deploy-video-embedding.md](references\u002Fintegrate-vss-deploy-video-embedding.md) | Build Vision Agent integration reference: peers, inputs\u002Foutputs, env vars, network, example Compose snippet. |\n| [references\u002Frest-api.md](references\u002Frest-api.md) | Full REST endpoint catalog with worked `curl` examples for file uploads, video\u002Ftext embeddings, live streams, and health\u002Fmetrics. |\n| [references\u002Fenvironment.md](references\u002Fenvironment.md) | Complete environment-variable matrix, including host-to-container renames and secret-sensitive variables. |\n| [references\u002Ftroubleshooting.md](references\u002Ftroubleshooting.md) | Operational diagnostics for startup, model\u002Fcache, runtime, and observability issues. |\n\n",{"name":5,"license":15,"metadata":24,"description":28},{"tags":25,"version":26,"github-url":27},"nvidia blueprint operational deployment","3.2.0","https:\u002F\u002Fgithub.com\u002FNVIDIA-AI-Blueprints\u002Fvideo-search-and-summarization","Deploy, operate, and integrate the VSS 3.2 GA RT-Embed Video Embedding microservice. Covers Docker Compose bring-up, GPU and storage prerequisites, the `\u002Fv1` REST API (file uploads, text and video embeddings, live RTSP streams, health and metrics), Redis\u002FKafka\u002FOTel integration, common failure modes, and teardown.\n","main","87afe6ce96220accf50a345dea46784c8c9f210e","YYC3-Skills-技能包\u002FYYC3-Skills-技能包-skills\u002Fskills\u002Fvss-deploy-video-embedding",0,"https:\u002F\u002Fgithub.com\u002FYYC-Cube\u002FYYC3-Knowledge-Base","https:\u002F\u002Fkb.yyc3.top\u002F","https:\u002F\u002Fgithub.com\u002FYYC-Cube","万象归元于云枢 | 深栈智启新纪元","2026-11-10 10:37:32",{"source":8,"skillName":5,"commands":39,"prompt":49,"zipAvailable":50},[40,43,46],{"tool":41,"command":42},"npx","npx skills add YYC-Cube\u002FYYC3-Knowledge-Base --skill vss-deploy-video-embedding",{"tool":44,"command":45},"bunx","bunx skills add YYC-Cube\u002FYYC3-Knowledge-Base --skill vss-deploy-video-embedding",{"tool":47,"command":48},"pnpm","pnpm dlx skills add YYC-Cube\u002FYYC3-Knowledge-Base --skill vss-deploy-video-embedding","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FYYC-Cube\u002FYYC3-Knowledge-Base\u002Fblob\u002Fmain\u002FYYC3-Skills-技能包\u002FYYC3-Skills-技能包-skills\u002Fskills\u002Fvss-deploy-video-embedding\u002FSKILL.md",true,[52,58,62,66,70,74,78,82,86,90],{"path":53,"resourceType":54,"resourceTypeDesc":55,"sizeBytes":56,"sourceHtmlUrl":57},"BENCHMARK.md","REFERENCE","参考文档",1378,"https:\u002F\u002Fgithub.com\u002FYYC-Cube\u002FYYC3-Knowledge-Base\u002Fblob\u002Fmain\u002FYYC3-Skills-技能包\u002FYYC3-Skills-技能包-skills\u002Fskills\u002Fvss-deploy-video-embedding\u002FBENCHMARK.md",{"path":59,"resourceType":54,"resourceTypeDesc":55,"sizeBytes":60,"sourceHtmlUrl":61},"evals\u002Fstandalone_deploy.json",4094,"https:\u002F\u002Fgithub.com\u002FYYC-Cube\u002FYYC3-Knowledge-Base\u002Fblob\u002Fmain\u002FYYC3-Skills-技能包\u002FYYC3-Skills-技能包-skills\u002Fskills\u002Fvss-deploy-video-embedding\u002Fevals\u002Fstandalone_deploy.json",{"path":63,"resourceType":54,"resourceTypeDesc":55,"sizeBytes":64,"sourceHtmlUrl":65},"references\u002Fdeploy-vss-deploy-video-embedding.md",11322,"https:\u002F\u002Fgithub.com\u002FYYC-Cube\u002FYYC3-Knowledge-Base\u002Fblob\u002Fmain\u002FYYC3-Skills-技能包\u002FYYC3-Skills-技能包-skills\u002Fskills\u002Fvss-deploy-video-embedding\u002Freferences\u002Fdeploy-vss-deploy-video-embedding.md",{"path":67,"resourceType":54,"resourceTypeDesc":55,"sizeBytes":68,"sourceHtmlUrl":69},"references\u002Fenvironment.md",6385,"https:\u002F\u002Fgithub.com\u002FYYC-Cube\u002FYYC3-Knowledge-Base\u002Fblob\u002Fmain\u002FYYC3-Skills-技能包\u002FYYC3-Skills-技能包-skills\u002Fskills\u002Fvss-deploy-video-embedding\u002Freferences\u002Fenvironment.md",{"path":71,"resourceType":54,"resourceTypeDesc":55,"sizeBytes":72,"sourceHtmlUrl":73},"references\u002Fintegrate-vss-deploy-video-embedding.md",16524,"https:\u002F\u002Fgithub.com\u002FYYC-Cube\u002FYYC3-Knowledge-Base\u002Fblob\u002Fmain\u002FYYC3-Skills-技能包\u002FYYC3-Skills-技能包-skills\u002Fskills\u002Fvss-deploy-video-embedding\u002Freferences\u002Fintegrate-vss-deploy-video-embedding.md",{"path":75,"resourceType":54,"resourceTypeDesc":55,"sizeBytes":76,"sourceHtmlUrl":77},"references\u002FREADME.md",1535,"https:\u002F\u002Fgithub.com\u002FYYC-Cube\u002FYYC3-Knowledge-Base\u002Fblob\u002Fmain\u002FYYC3-Skills-技能包\u002FYYC3-Skills-技能包-skills\u002Fskills\u002Fvss-deploy-video-embedding\u002Freferences\u002FREADME.md",{"path":79,"resourceType":54,"resourceTypeDesc":55,"sizeBytes":80,"sourceHtmlUrl":81},"references\u002Frest-api.md",12895,"https:\u002F\u002Fgithub.com\u002FYYC-Cube\u002FYYC3-Knowledge-Base\u002Fblob\u002Fmain\u002FYYC3-Skills-技能包\u002FYYC3-Skills-技能包-skills\u002Fskills\u002Fvss-deploy-video-embedding\u002Freferences\u002Frest-api.md",{"path":83,"resourceType":54,"resourceTypeDesc":55,"sizeBytes":84,"sourceHtmlUrl":85},"references\u002Ftroubleshooting.md",7214,"https:\u002F\u002Fgithub.com\u002FYYC-Cube\u002FYYC3-Knowledge-Base\u002Fblob\u002Fmain\u002FYYC3-Skills-技能包\u002FYYC3-Skills-技能包-skills\u002Fskills\u002Fvss-deploy-video-embedding\u002Freferences\u002Ftroubleshooting.md",{"path":87,"resourceType":54,"resourceTypeDesc":55,"sizeBytes":88,"sourceHtmlUrl":89},"skill-card.md",2274,"https:\u002F\u002Fgithub.com\u002FYYC-Cube\u002FYYC3-Knowledge-Base\u002Fblob\u002Fmain\u002FYYC3-Skills-技能包\u002FYYC3-Skills-技能包-skills\u002Fskills\u002Fvss-deploy-video-embedding\u002Fskill-card.md",{"path":91,"resourceType":92,"resourceTypeDesc":93,"sizeBytes":94,"sourceHtmlUrl":95},"skill.oms.sig","OTHER","其他",5881,"https:\u002F\u002Fgithub.com\u002FYYC-Cube\u002FYYC3-Knowledge-Base\u002Fblob\u002Fmain\u002FYYC3-Skills-技能包\u002FYYC3-Skills-技能包-skills\u002Fskills\u002Fvss-deploy-video-embedding\u002Fskill.oms.sig",[97,105,112,119,126,133],{"skillNo":98,"name":99,"nameZh":6,"description":100,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":101,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":104,"publishedAt":19},"01M7CTDWHERCXPQCP0K03A86AS","vercel-sandbox","Run agent-browser + Chrome inside Vercel Sandbox microVMs for browser automation from any Vercel-deployed app. Use when the user needs browser automation in a Vercel app (Next.js, SvelteKit, Nuxt, Remix, Astro, etc.), wants to run headless Chrome without binary size limits, needs persistent browser sessions across commands, or wants ephemeral isolated browser environments. Triggers include \"Vercel Sandbox browser\", \"microVM Chrome\", \"agent-browser in sandbox\", \"browser automation on Vercel\", or any task requiring Chrome in a Vercel Sandbox.","MIT","https:\u002F\u002Fgithub.com\u002FYYC-Cube\u002FYYC3-Knowledge-Base\u002Fblob\u002Fmain\u002FYYC3-WebSpec-Web标准\u002FYYC3-WebSpec-Web标准-standards\u002Fbrowser-agent\u002Fskills\u002Fvercel-sandbox\u002FSKILL.md",[],[],{"skillNo":106,"name":107,"nameZh":6,"description":108,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":101,"licenseFileUrl":6,"sourceHtmlUrl":109,"categories":110,"keywords":111,"publishedAt":19},"01M7CTD8D2BNJY54S65M47HEJA","slack","Interact with Slack workspaces using browser automation. Use when the user needs to check unread channels, navigate Slack, send messages, extract data, find information, search conversations, or automate any Slack task. Triggers include \"check my Slack\", \"what channels have unreads\", \"send a message to\", \"search Slack for\", \"extract from Slack\", \"find who said\", or any task requiring programmatic Slack interaction.","https:\u002F\u002Fgithub.com\u002FYYC-Cube\u002FYYC3-Knowledge-Base\u002Fblob\u002Fmain\u002FYYC3-WebSpec-Web标准\u002FYYC3-WebSpec-Web标准-standards\u002Fbrowser-agent\u002Fskills\u002Fslack\u002FSKILL.md",[],[],{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":101,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":118,"publishedAt":19},"01M7CTCSSB8ZP3Q58C3YZDZK1W","electron","Automate Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify, etc.) using agent-browser via Chrome DevTools Protocol. Use when the user needs to interact with an Electron app, automate a desktop app, connect to a running app, control a native app, or test an Electron application. Triggers include \"automate Slack app\", \"control VS Code\", \"interact with Discord app\", \"test this Electron app\", \"connect to desktop app\", or any task requiring automation of a native Electron application.","https:\u002F\u002Fgithub.com\u002FYYC-Cube\u002FYYC3-Knowledge-Base\u002Fblob\u002Fmain\u002FYYC3-WebSpec-Web标准\u002FYYC3-WebSpec-Web标准-standards\u002Fbrowser-agent\u002Fskills\u002Felectron\u002FSKILL.md",[],[],{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":101,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":125,"publishedAt":19},"01M7CTCBJY76688V4DCZGWFHGQ","dogfood","Systematically explore and test a web application to find bugs, UX issues, and other problems. Use when asked to \"dogfood\", \"QA\", \"exploratory test\", \"find issues\", \"bug hunt\", \"test this app\u002Fsite\u002Fplatform\", or review the quality of a web application. Produces a structured report with full reproduction evidence -- step-by-step screenshots, repro videos, and detailed repro steps for every issue -- so findings can be handed directly to the responsible teams.","https:\u002F\u002Fgithub.com\u002FYYC-Cube\u002FYYC3-Knowledge-Base\u002Fblob\u002Fmain\u002FYYC3-WebSpec-Web标准\u002FYYC3-WebSpec-Web标准-standards\u002Fbrowser-agent\u002Fskills\u002Fdogfood\u002FSKILL.md",[],[],{"skillNo":127,"name":128,"nameZh":6,"description":129,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":101,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":132,"publishedAt":19},"01M7CTC4H0FFGVEAQR9PA4GA1A","agent-browser","Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to \"open a website\", \"fill out a form\", \"click a button\", \"take a screenshot\", \"scrape data from a page\", \"test this web app\", \"login to a site\", \"automate browser actions\", or any task requiring programmatic web interaction.","https:\u002F\u002Fgithub.com\u002FYYC-Cube\u002FYYC3-Knowledge-Base\u002Fblob\u002Fmain\u002FYYC3-WebSpec-Web标准\u002FYYC3-WebSpec-Web标准-standards\u002Fbrowser-agent\u002Fskills\u002Fagent-browser\u002FSKILL.md",[],[],{"skillNo":134,"name":135,"nameZh":6,"description":136,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":101,"licenseFileUrl":6,"sourceHtmlUrl":137,"categories":138,"keywords":139,"publishedAt":19},"01M7CTBKVFYBG78FDSABSDJTTQ","shadcn","Manages shadcn components and projects — adding, searching, fixing, debugging, styling, and composing UI, including chat interfaces. Provides project context, component docs, and usage examples. Applies when working with shadcn\u002Fui, component registries, presets, --preset codes, or any project with a components.json file. Also triggers for \"shadcn init\", \"create an app with --preset\", \"switch to --preset\", and for building a design system or applying a DESIGN.md or brand spec to shadcn\u002Fui.","https:\u002F\u002Fgithub.com\u002FYYC-Cube\u002FYYC3-Knowledge-Base\u002Fblob\u002Fmain\u002FYYC3-UI-界面组件\u002FYYC3-UI-界面组件-ui\u002Fskills\u002Fshadcn\u002FSKILL.md",[],[]]