Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions packs/nvidia-vss-core-3.1.18/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# NVIDIA VSS Core (vss-agent + VST vios)

NVIDIA VSS 3.x core — the decomposed VSS application microservices: vss-agent (orchestrator), vss-agent-ui (web UI), the VST vios sensor and stream-processing/decode microservices, and the VST MCP gateway. Manifest-only pack; references the ngc-pull-secret / hf-token-secret created by the data-infrastructure pack and reaches the LLM (vllm pack) and VLM/embed (nims pack) by in-cluster Service DNS. vss-vios-sensor and vss-vios-streamprocessing have a 3.1.0-sbsa variant (DGX-SPARK); vss-agent/ui/mcp are multiarch 3.1.0. install-priority 15. Part of the VSS 3.x five-pack set (data-infrastructure + nims + vllm + core + ingress); all five belong in every profile.
Binary file not shown.
Binary file added packs/nvidia-vss-core-3.1.18/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
48 changes: 48 additions & 0 deletions packs/nvidia-vss-core-3.1.18/pack.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
{
"addonType": "system app",
"annotations": {
"source": "community",
"contributor": "spectrocloud",
"docsURL": "https://docs.nvidia.com/vss/latest/index.html",
"description": "NVIDIA VSS 3.x core — the decomposed VSS application microservices: vss-agent (orchestrator), vss-agent-ui (web UI), the VST vios sensor and stream-processing/decode microservices, and the VST MCP gateway. Manifest-only pack; references the ngc-pull-secret / hf-token-secret created by the data-infrastructure pack and reaches the LLM (vllm pack) and VLM/embed (nims pack) by in-cluster Service DNS. vss-vios-sensor and vss-vios-streamprocessing have a 3.1.0-sbsa variant (DGX-SPARK); vss-agent/ui/mcp are multiarch 3.1.0. install-priority 15. Part of the VSS 3.x five-pack set (data-infrastructure + nims + vllm + core + ingress); all five belong in every profile.",
"title": "NVIDIA VSS Core (vss-agent + VST vios)"
},
"cloudTypes": [
"all"
],
"displayName": "NVIDIA VSS Core (vss-agent + VST vios)",
"layer": "addon",
"name": "nvidia-vss-core",
"version": "3.1.18",
"constraints": {
"dependencies": [
{
"packName": "nvidia-vss-data-infrastructure",
"layer": "addon",
"minVersion": "3.1.0",
"type": "required"
},
{
"packName": "nvidia-vss-nims",
"layer": "addon",
"minVersion": "3.1.0",
"type": "required"
},
{
"packName": "nvidia-vss-vllm",
"layer": "addon",
"minVersion": "3.1.0",
"type": "required"
},
{
"packName": "nvidia-vss-ingress",
"layer": "addon",
"minVersion": "3.1.0",
"type": "optional"
}
]
},
"charts": [
"charts/nvidia-vss-core-3.1.11.tgz"
]
}
98 changes: 98 additions & 0 deletions packs/nvidia-vss-core-3.1.18/presets.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
# VSS Platform profiles for the VSS 3.x core (vss-agent + VST vios) microservices.
#
# ⚠️ OPERATOR CONTRACT: in 3.x ALL FIVE packs (data-infrastructure + nims + vllm +
# core + ingress) are in EVERY profile — there is no include/omit hazard. You MUST
# select the SAME "VSS Platform" preset in every VSS 3.x pack of the profile so the
# image arch (-sbsa vs multiarch) and platform tweaks line up. The data-infra pack
# records the chosen platform in the in-cluster vss-platform ConfigMap for audit.
# See P1-P5-IMPLEMENTATION.md.
#
# What this pack's presets flip: only the imageTag of the two services that ship a
# -sbsa variant — vss-vios-sensor (sensor-ms) and vss-vios-streamprocessing
# (streamprocessing-ms). vss-agent / vss-agent-ui / vss-vios-mcp are multiarch 3.1.0
# with no -sbsa variant, so their tag is constant and is NOT set by any preset.
#
# DGX-SPARK is the default and the only migration target; every other row is
# (unvalidated) — verify NGC image tags on the target hardware before use.
presets:
# ── DGX-SPARK (GB10, arm64/SBSA, sm_121) — migration target (UNVALIDATED). -sbsa flip. ──
- name: "DGX-SPARK"
displayName: "DGX Spark (GB10, arm64/SBSA, sm_121) — vss-core 3.1.0-sbsa"
group: "VSS Platform"
remove: []
add: |
vssViosSensor:
imageTag: "3.1.0-sbsa"
vssViosStreamprocessing:
imageTag: "3.1.0-sbsa"

# ── OTHER — generic single-GPU dGPU x86/arm64 multiarch. UNVALIDATED. ───────────
- name: "OTHER"
displayName: "Other / generic single GPU — vss-core 3.1.0 (unvalidated)"
group: "VSS Platform"
remove: []
add: |
vssViosSensor:
imageTag: "3.1.0"
vssViosStreamprocessing:
imageTag: "3.1.0"

# ── H100 (x86 dGPU). UNVALIDATED. ───────────────────────────────────────────────
- name: "H100"
displayName: "H100 (x86 dGPU) — vss-core 3.1.0 (unvalidated)"
group: "VSS Platform"
remove: []
add: |
vssViosSensor:
imageTag: "3.1.0"
vssViosStreamprocessing:
imageTag: "3.1.0"

# ── L40S (x86 dGPU). UNVALIDATED. ───────────────────────────────────────────────
- name: "L40S"
displayName: "L40S (x86 dGPU) — vss-core 3.1.0 (unvalidated)"
group: "VSS Platform"
remove: []
add: |
vssViosSensor:
imageTag: "3.1.0"
vssViosStreamprocessing:
imageTag: "3.1.0"

# ── RTX PRO 6000 Blackwell (sm_120) workstation. UNVALIDATED. ───────────────────
- name: "RTXPRO6000BW"
displayName: "RTX PRO 6000 Blackwell — vss-core 3.1.0 (unvalidated)"
group: "VSS Platform"
remove: []
add: |
vssViosSensor:
imageTag: "3.1.0"
vssViosStreamprocessing:
imageTag: "3.1.0"

# ── Jetson AGX Thor (arm64 Tegra/iGPU). UNVALIDATED. ────────────────────────────
# Multiarch 3.1.0 image (no -sbsa). Thor needs runtimeClassName nvidia on the GPU
# pods (sensor + streamprocessing) so the NVIDIA container runtime injects L4T libs.
# TODO(verify): these manifests do NOT expose an extraPodSpecs/runtimeClassName value
# key, so the preset cannot set it — the runtimeClassName must be added by a manifest
# edit (or nvidia made the node's default containerd runtime) before a Thor deploy.
- name: "AGX-THOR"
displayName: "Jetson AGX Thor (arm64, iGPU) — vss-core 3.1.0 + runtimeClassName (unvalidated)"
group: "VSS Platform"
remove: []
add: |
vssViosSensor:
imageTag: "3.1.0"
vssViosStreamprocessing:
imageTag: "3.1.0"

# ── IGX + Thor iGPU (arm64 Tegra). UNVALIDATED. Same Thor runtimeClassName note. ──
- name: "IGX-THOR"
displayName: "IGX + Thor iGPU (arm64) — vss-core 3.1.0 + runtimeClassName (unvalidated)"
group: "VSS Platform"
remove: []
add: |
vssViosSensor:
imageTag: "3.1.0"
vssViosStreamprocessing:
imageTag: "3.1.0"
34 changes: 34 additions & 0 deletions packs/nvidia-vss-core-3.1.18/schema.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Pack value constraints for the VSS 3.x core microservices.
# Keys are full dotted paths into values.yaml. (No keys with embedded dots/slashes.)

# ── image tags (sensor + streamprocessing have a -sbsa variant; set by preset) ──
vssViosSensor.imageTag:
schema: '{{ format "${string}" | hints "vss-vios-sensor image tag: 3.1.0-sbsa on DGX-SPARK, 3.1.0 elsewhere." }}'
vssViosStreamprocessing.imageTag:
schema: '{{ format "${string}" | hints "vss-vios-streamprocessing image tag: 3.1.0-sbsa on DGX-SPARK, 3.1.0 elsewhere." }}'
vssAgent.imageTag:
schema: '{{ format "${string}" | hints "vss-agent image tag (multiarch, no -sbsa variant): 3.1.0." }}'
vssAgentUi.imageTag:
schema: '{{ format "${string}" | hints "vss-agent-ui image tag (multiarch): 3.1.0." }}'
vssViosMcp.imageTag:
schema: '{{ format "${string}" | hints "vss-vios-mcp image tag (multiarch): 3.1.0." }}'

# ── vss-agent LLM/VLM wiring (keep in lockstep with the vllm + nims packs) ──
vssAgent.llmName:
schema: '{{ format "${string}" | hints "OpenAI served-model name of the LLM; must match the vllm pack servedModelName." }}'
vssAgent.llmBaseUrl:
schema: '{{ format "${string}" | hints "LLM OpenAI base URL (vllm pack Service, e.g. http://llm-nim-svc:8000/v1)." }}'
vssAgent.vlmName:
schema: '{{ format "${string}" | hints "VLM model name served by the cosmos NIM (nims pack)." }}'
vssAgent.vlmBaseUrl:
schema: '{{ format "${string}" | hints "VLM base URL (nims pack cosmos NIM Service)." }}'

# ── browser-facing / node-reachable addresses (must be set per deployment) ──
vssAgent.externalIp:
schema: '{{ format "${string}" | hints "Node-reachable EXTERNAL_IP for URL rewriting (not the ClusterIP)." }}'
vssAgentUi.wsAgentUrl:
schema: '{{ format "${string}" | hints "Browser-facing websocket chat-completion URL to the vss-agent (NodePort/ingress address)." }}'
vssAgentUi.httpAgentUrl:
schema: '{{ format "${string}" | hints "Browser-facing HTTP chat-completion URL to the vss-agent (NodePort/ingress address)." }}'
vssAgentUi.vstApiUrl:
schema: '{{ format "${string}" | hints "Browser-facing VST API URL (NodePort/ingress address)." }}'
138 changes: 138 additions & 0 deletions packs/nvidia-vss-core-3.1.18/values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
# spectrocloud.com/enabled-presets: VSS Platform:DGX-SPARK
#
# ┌─ VSS 3.x PLATFORM MATRIX (canonical — keep identical across all VSS 3.x packs) ─
# │ Set ONE profile variable VSS_PLATFORM and select the matching "VSS Platform"
# │ preset in every VSS 3.x pack. In 3.x ALL FIVE packs are in every profile
# │ (data-infrastructure + nims + vllm + core + ingress) — the vLLM pack is the LLM
# │ for all platforms (no NIM-LLM in 3.x), so there is no include/omit hazard.
# │ 3.x decode is NATIVE (VIOS/rt-cv); there is NO --disable-decoding.
# │
# │ Platform LLM (vLLM model) VLM decode vss-core tags
# │ DGX-SPARK nemotron-nano-9b-v2-fp8 cosmos NIM dGPU 3.1.0-sbsa
# │ OTHER nemotron-nano-9b-v2-fp8 cosmos NIM dGPU 3.1.0
# │ H100 nemotron-nano-9b-v2-fp8 cosmos NIM dGPU 3.1.0 (x86)
# │ L40S nemotron-nano-9b-v2-fp8 cosmos NIM dGPU 3.1.0 (x86)
# │ RTXPRO6000BW nemotron-nano-9b-v2-fp8 cosmos NIM dGPU 3.1.0 (x86)
# │ AGX-THOR/IGX-THOR nano-9b-fp8 (jetson img) rt-vlm Tegra* 3.1.0 + runtimeClassName
# │ * Tegra: runtimeClassName nvidia via extraPodSpecs; NVIDIA container runtime injects L4T.
# │ Only DGX-SPARK is the migration target; all rows UNVALIDATED (no hardware, unverified tags).
# └──────────────────────────────────────────────────────────────────────────────
#
# NVIDIA VSS 3.x core — decomposed application microservices (manifest-only pack).
# Manifests are Go-templated against the top-level value keys below
# (.Values.namespace, .Values.vssAgent.*, .Values.vssAgentUi.*,
# .Values.vssViosSensor.*, .Values.vssViosStreamprocessing.*, .Values.vssViosMcp.*).
#
# install-priority 15 → after data-infrastructure (5, creates hf-token-secret),
# nims (10), and vllm (12), before ingress (18). The "VSS Platform" presets flip
# the imageTag of the two services that ship a -sbsa variant (vss-vios-sensor +
# vss-vios-streamprocessing) to 3.1.0-sbsa on DGX-SPARK; vss-agent/ui/mcp are
# multiarch 3.1.0 (no -sbsa) so their tag is constant across platforms.

pack:
namespace: nvidia-vss
spectrocloud.com/install-priority: "15"
content:
images:
# BUILD-ON-DEPLOY (0/0): only public wolfi-base is pack content. All 7 gated nvcr
# vss-core images are crane-fetched as runtime DATA at deploy and run on wolfi-base
# via the matched-ld swap (CPU services GB10-validated: nat/node/python; GPU VST
# services author-equivalent, live validation pending a free GPU slot).
- image: cgr.dev/chainguard/wolfi-base:latest

# Shared namespace (every manifest renders metadata.namespace from this).
namespace: nvidia-vss

# Public 0/0 base that crane-fetches + runs the gated vss-core binaries at deploy.
baseImage: cgr.dev/chainguard/wolfi-base:latest

# ── vss-agent — orchestrator (Service "vss-agent":8000) ───────────────────────────
vssAgent:
gatedImage: nvcr.io/nvidia/vss-core/vss-agent:3.1.0
# Multiarch image, no -sbsa variant.
imageTag: "3.1.0"
# Path the agent reads its config from (mountPath/config.yml). The compose value
# was a host path under MDX_SAMPLE_APPS_DIR (dev-profile-base/vss-agent/configs/config.yml).
# TODO(verify): confirm the in-cluster VSS_AGENT_CONFIG_FILE path for the edge/k8s deploy.
configFile: "/vss-agent/configs/config.yml"
configDir: "/vss-agent/configs"
# URL rewriting / NAT. EXTERNAL_IP is the node's browser-reachable address; on a
# single-node edge box this is the node IP. TODO(verify): set to the node's reachable
# IP (or an ingress address) at deploy time — ClusterIP DNS is not browser-reachable.
externalIp: ""
hostIp: ""
llmMode: "openai"
vlmMode: "nim"
llmModelType: "openai"
vlmModelType: "nim"
# Phoenix telemetry — data-infra ClusterIP "phoenix":6006.
phoenixEndpoint: "http://phoenix:6006"
# VST endpoints — in-cluster Service DNS (this pack's services + ingress pack).
# TODO(verify): VST_INTERNAL_URL was the VST ingress data plane in compose; confirm
# it targets the ingress pack's vst service (e.g. http://vss-vios-ingress:30888) vs sensor.
vstInternalUrl: "http://vss-vios-ingress:30888"
vstMcpUrl: "http://vst-mcp:8001"
# LLM endpoint — vllm pack (Service llm-nim-svc:8000, OpenAI API). vLLM advertises
# the model id EXACTLY as the vllm pack's hfModel (no --served-model-name override),
# so this MUST match nvidia-vss-vllm-3.1.0 manifests.llm-vllm.hfModel verbatim.
llmName: "nvidia/NVIDIA-Nemotron-Nano-9B-v2-FP8"
llmBaseUrl: "http://llm-nim-svc:8000"
# VLM endpoint — nims pack cosmos NIM (Service cosmos-reason2-8b, port servicePort=30082).
vlmName: "nvidia/cosmos-reason2-8b"
vlmBaseUrl: "http://cosmos-reason2-8b:30082"
# rtvi VLM base URL (rt-vlm path; not in base — rtvi-embed is SEARCH-only/disabled).
# Points at the rtvi-embed Service port (8017). TODO(verify): rt-vlm vs rt-embed target.
rtviVlmBaseUrl: "http://rtvi-embed:8017/v1"
# 3.x agent object store default is in_memory (no MinIO in the 3.x data layer).
objectStoreType: "local_object_store"
streamMode: "other"

# ── vss-agent-ui — web UI (Service "vss-agent-ui":3000) ───────────────────────────
vssAgentUi:
gatedImage: nvcr.io/nvidia/vss-core/vss-agent-ui:3.1.0
# Multiarch image, no -sbsa variant.
imageTag: "3.1.0"
appTitle: "NVIDIA VSS"
appSubtitle: "Video Search and Summarization"
# Browser-facing endpoints. In compose these used EXTERNAL_IP (node IP). In k8s they
# must resolve from the user's browser, so they need a NodePort/LoadBalancer/ingress
# address — NOT ClusterIP service DNS.
# TODO(verify): set these to the node-reachable agent + VST addresses at deploy time.
wsAgentUrl: ""
httpAgentUrl: ""
agentApiUrlBase: ""
vstApiUrl: ""

# ── vss-vios-sensor — VST sensor microservice (Service "sensor-ms":30000) ─────────
# HAS a -sbsa variant: DGX-SPARK preset flips imageTag to 3.1.0-sbsa.
vssViosSensor:
gatedImage: nvcr.io/nvidia/vss-core/vss-vios-sensor:3.1.0-sbsa
imageTag: "3.1.0-sbsa"
# Stream processor module endpoint — compose pointed at http://HOST_IP:10000; here
# the in-cluster streamprocessing Service. TODO(verify): port — compose used 10000,
# the streamprocessing Service exposes 30001; confirm which the sensor expects.
streamProcessorModuleEndpoint: "http://streamprocessing-ms:30001"

# ── vss-vios-streamprocessing — NVDEC/DeepStream decode (Service "streamprocessing-ms":30001/30554) ─
# HAS a -sbsa variant: DGX-SPARK preset flips imageTag to 3.1.0-sbsa.
vssViosStreamprocessing:
gatedImage: nvcr.io/nvidia/vss-core/vss-vios-streamprocessing:3.1.0-sbsa
imageTag: "3.1.0-sbsa"
sensorModuleEndpoint: "http://sensor-ms:30000"
# VST ingress data plane — ingress pack. TODO(verify): confirm the ingress Service/port.
vstIngressEndpoint: "http://vss-vios-ingress:30888"

# ── vss-vios-mcp — VST MCP gateway (Service "vst-mcp":8001) ───────────────────────
# Multiarch, no -sbsa variant (tag kept for uniformity).
vssViosMcp:
gatedImage: nvcr.io/nvidia/vss-core/vss-vios-mcp:3.1.0
imageTag: "3.1.0"
# CPP API base → VST ingress data plane (/vst on 30888). TODO(verify): confirm target.
cppApiBaseUrl: "http://vss-vios-ingress:30888"

# NOTE: the vst-config ConfigMap (mounted by sensor + streamprocessing) and the
# vss-agent-config ConfigMap (config.yml) are NOT fabricated here — the manifests
# carry placeholder/optional ConfigMaps. The real VST configs tree (vst_config_*.json)
# and the agent config.yml / config_edge.yml must be populated from the upstream
# NVIDIA-AI-Blueprints/video-search-and-summarization repo before a working deploy.
# TODO(verify): inline those blobs (see the TODO notes in each manifest).
Loading