npx skills add ...
npx skills add nvidia/k8s-nim-operator --skill nim-operator-install
Install NVIDIA NIM Operator on Kubernetes with prerequisite checks, optional NVIDIA GPU Operator dependency installation, public or local Helm chart selection, optional Dynamo support, and optional KServe compatibility verification. Use when a customer wants to install or upgrade the NIM Operator itself, with or without Dynamo and KServe, but does not want to deploy a NIM inference model yet.
npx skills add nvidia/k8s-nim-operator --skill nim-operator-install
Use this skill to install or upgrade the NVIDIA NIM Operator on an existing Kubernetes cluster. The skill installs the operator and its CRDs only. Do not deploy NIMService, NIMCache, NIMPipeline, or NeMo service custom resources unless the user explicitly asks for that as a separate task.
This is the canonical, agent-neutral skill folder. If another agent framework needs a specific discovery path, create a thin adapter or symlink to this folder instead of duplicating the workflow.
Assume commands run from the root of the k8s-nim-operator repository unless the user gives another working directory. Before using repo-relative paths such as .agents/skills/... or deployments/helm/k8s-nim-operator, verify the current directory:
If these checks fail, ask for the correct repository root or cd to it before continuing.
Run read-only discovery before proposing any cluster-changing command. Before running any mutating command, print the exact commands, summarize the expected impact, and ask for confirmation.
Read-only examples: kubectl get, kubectl describe, kubectl auth can-i, helm version, helm list, helm search repo, helm status, helm get values.
Mutating examples: helm repo add, helm repo update, helm dependency update, helm upgrade --install, kubectl create, kubectl apply, kubectl patch, kubectl delete.
nim-operatornim-operatornvidiahttps://helm.ngc.nvidia.com/nvidiadeployments/helm/k8s-nim-operatorgpu-operatorreferences/validation.md..agents/skills/nim-operator-install/scripts/validate-nim-operator-install.sh.End users do not need to know the internal file layout. They should ask the agent for the outcome they want. Recognize and support these prompt patterns:
Dry run only:
Install latest public chart:
Install a specific version:
Install from the local chart:
Install with Dynamo:
Validate an existing install:
Upgrade:
Remote cluster through SSH:
This section is for humans, CI jobs, and reviewers who want to run the same workflow without an agent. Run local commands from the repository root and ensure kubectl points at the target cluster before running any Helm command.
Validation only:
Validation with overrides:
Public chart install or upgrade:
To dry-run instead of installing, add --dry-run --debug to the helm upgrade --install command. To enable Dynamo, append --set dynamo.enabled=true and only add Dynamo sub-options if they are intentionally selected.
Local chart install or upgrade:
Remote SSH usage if the skill folder has been copied to the remote host:
Ask only for missing choices that materially affect the install:
If the user wants a quick default install, use public repo, latest available chart version, namespace nim-operator, release nim-operator, Dynamo disabled, KServe verification disabled, and GPU Operator install only if the user approves after the prerequisite check. Tell the user which version will be installed and ask whether they want a different version before running Helm.
For public chart installs and upgrades, never leave <selected-version> unresolved. Discover versions first:
Use the first version returned by helm search repo ... --versions as the latest candidate, then ask:
If the user accepts the latest version, set selected_version=<latest-version>. If the user provides another version, verify that version appears in the helm search repo output before using it. If it does not appear, stop and ask the user to choose one of the available versions.
For local chart installs and upgrades, inspect the local chart:
Tell the user the local chart version and appVersion, then ask whether to proceed with that local chart or switch to the public chart flow.
When the user asks for a dry run or demo, do not install anything. Start by calling the bundled validation helper so preflight evidence is captured before chart discovery or Helm rendering. Use this sequence:
Before rendering or dry-running Helm, resolve <selected-version> through the Version Selection flow and replace <approved-values> with the exact values the user approved, such as --set operator.admissionController.enabled=false or --set dynamo.enabled=true.
Start prerequisite discovery by calling the bundled validation helper:
This is the canonical preflight call site for the skill. It checks client tools, cluster access, RBAC, nodes, GPU availability, GPU Operator status, cert-manager status, KServe presence, current NIM Operator state, and NIM Operator CRDs.
If the helper is unavailable or a narrower manual check is needed, run these read-only checks before proposing install commands:
Interpret the results:
nvidia.com/gpu capacity and allocatable resources.cert-manager is required when operator.admissionController.enabled=true and operator.admissionController.tls.mode=cert-manager, which are NIM Operator chart defaults. If cert-manager is absent, either stop and ask the user to install it, or propose --set operator.admissionController.enabled=false only if the customer accepts disabling the admission controller.For KServe verification, also run:
If KServe is absent, do not install it. Tell the user KServe-backed NIMService resources will not work until KServe is installed.
If GPU Operator is already installed and clusterpolicies.nvidia.com reports ready, do not reinstall it.
If GPU Operator is absent, ask before installing it. Use the public NVIDIA Helm repo unless the user provides a different source:
After installing GPU Operator, verify:
Treat confidential computing, MIG partitioning, DRA, driver preinstallation, proxy settings, and air-gapped installation as advanced GPU Operator scenarios. Pause and ask for the customer's desired mode before adding chart values for those cases.
Build one command block for the selected path, then ask before executing.
Discover available versions first:
Tell the user which chart version appears latest and ask whether to use it or a specific version.
For local chart installs, read the local chart version and app version:
Tell the user the local chart version and ask whether to proceed with the local checkout or use the public chart instead.
These local chart commands assume the shell is running from the repository root.
If local install uses Dynamo, run this first because Dynamo is a chart dependency:
For basic Dynamo support, append:
Expose these Dynamo sub-options only when the customer asks for advanced Dynamo configuration:
Do not enable Dynamo or its sub-options by default.
If cert-manager is missing and the user wants to proceed without it, append:
Make it clear that this disables the NIM Operator admission controller. Do not silently add this flag.
After install or upgrade, call the bundled validation helper again to collect post-change evidence:
Then run rollout-specific verification:
Do not hardcode the deployment name. Helm renders it from the release name and chart name, so the default release usually creates nim-operator-k8s-nim-operator.
Verify these NIM Operator CRDs are present:
nimservices.apps.nvidia.comnimcaches.apps.nvidia.comnimpipelines.apps.nvidia.comnimbuilds.apps.nvidia.comnemodatastores.apps.nvidia.comnemoentitystores.apps.nvidia.comnemocustomizers.apps.nvidia.comnemoevaluators.apps.nvidia.comnemoguardrails.apps.nvidia.comIf Dynamo is enabled, also verify:
If KServe compatibility was requested, repeat:
Use the same helm upgrade --install command for both fresh installs and upgrades. Before upgrading, call the validation helper to capture the pre-upgrade baseline:
Then inspect the current release and available target versions:
Then explain:
For public chart upgrades, include --version <selected-version>. For local chart upgrades, use the local chart path. Preserve user-approved values such as --set operator.admissionController.enabled=false or --set dynamo.enabled=true unless the user asks to change them.
After the upgrade, run the normal verification flow and compare the new Helm status and controller rollout with the pre-upgrade state.
helm search repo nvidia/<chart-name> --versions after helm repo update and ask whether to use an available version.kubectl describe node; do not proceed to model deployment.NIMService resources using spec.inferencePlatform: kserve need KServe installed first.helm upgrade --install and keep operator.upgradeCRD=true unless the user requests otherwise.Use the NIM Operator install skill to install NIM Operator from the public NVIDIA Helm repo. Check prerequisites first, ask me which chart version to use, and do not run mutating commands until I approve.Use the NIM Operator install skill to install NIM Operator version <version>. Verify that version exists in the NVIDIA Helm repo before installing.Use the NIM Operator install skill to install from the local chart in this repo. Show me the local chart version and ask before installing.Use the NIM Operator install skill to install NIM Operator with Dynamo enabled. Ask before enabling any Dynamo sub-options.Use the NIM Operator install skill to validate the current NIM Operator installation. Run only read-only checks and summarize release, pods, CRDs, GPU Operator, cert-manager, and KServe status.Use the NIM Operator install skill to upgrade my existing NIM Operator release. Show the current version, available versions, selected target version, preserved Helm values, and ask before upgrading.Use the NIM Operator install skill against my remote Kubernetes host <user>@<host>. Run commands over SSH, show every command before running it, and do not install until I approve..agents/skills/nim-operator-install/scripts/validate-nim-operator-install.sh.agents/skills/nim-operator-install/scripts/validate-nim-operator-install.sh.agents/skills/nim-operator-install/scripts/validate-nim-operator-install.sh.agents/skills/nim-operator-install/scripts/validate-nim-operator-install.shNIM_OPERATOR_RELEASE=nim-operator \
NIM_OPERATOR_NAMESPACE=nim-operator \
GPU_OPERATOR_NAMESPACE=gpu-operator \
.agents/skills/nim-operator-install/scripts/validate-nim-operator-install.shhelm repo add nvidia https://helm.ngc.nvidia.com/nvidia
helm repo update
helm search repo nvidia/k8s-nim-operator --versions
selected_version="REPLACE_WITH_VERSION_FROM_SEARCH_OUTPUT"
.agents/skills/nim-operator-install/scripts/validate-nim-operator-install.sh
helm upgrade --install nim-operator nvidia/k8s-nim-operator \
--namespace nim-operator \
--create-namespace \
--version "${selected_version}" \
--set operator.admissionController.enabled=false
.agents/skills/nim-operator-install/scripts/validate-nim-operator-install.shhelm show chart deployments/helm/k8s-nim-operator
.agents/skills/nim-operator-install/scripts/validate-nim-operator-install.sh
helm upgrade --install nim-operator deployments/helm/k8s-nim-operator \
--namespace nim-operator \
--create-namespace
.agents/skills/nim-operator-install/scripts/validate-nim-operator-install.shssh <user>@<host> '~/.agents/skills/nim-operator-install/scripts/validate-nim-operator-install.sh'
ssh <user>@<host> 'helm repo add nvidia https://helm.ngc.nvidia.com/nvidia'
ssh <user>@<host> 'helm repo update'
ssh <user>@<host> 'helm search repo nvidia/k8s-nim-operator --versions'
ssh <user>@<host> 'selected_version="REPLACE_WITH_VERSION_FROM_SEARCH_OUTPUT"; helm upgrade --install nim-operator nvidia/k8s-nim-operator --namespace nim-operator --create-namespace --version "${selected_version}" --set operator.admissionController.enabled=false'
ssh <user>@<host> '~/.agents/skills/nim-operator-install/scripts/validate-nim-operator-install.sh'helm repo add nvidia https://helm.ngc.nvidia.com/nvidia
helm repo update
helm search repo nvidia/k8s-nim-operator --versionshelm repo add nvidia https://helm.ngc.nvidia.com/nvidia
helm repo update
helm search repo nvidia/k8s-nim-operator --versionsI found latest NIM Operator chart version <latest-version>. Do you want to install this version, or should I use a different version?helm show chart deployments/helm/k8s-nim-operatorhelm show chart deployments/helm/k8s-nim-operator.agents/skills/nim-operator-install/scripts/validate-nim-operator-install.sh
helm repo add nvidia https://helm.ngc.nvidia.com/nvidia
helm repo update
helm search repo nvidia/k8s-nim-operator --versions
helm template nim-operator nvidia/k8s-nim-operator \
--namespace nim-operator \
--version <selected-version> \
<approved-values>
helm upgrade --install nim-operator nvidia/k8s-nim-operator \
--namespace nim-operator \
--create-namespace \
--version <selected-version> \
<approved-values> \
--dry-run --debugkubectl config current-context
kubectl cluster-info
kubectl auth can-i create customresourcedefinitions.apiextensions.k8s.io
kubectl auth can-i create clusterroles.rbac.authorization.k8s.io
helm version
kubectl get nodes
kubectl get nodes -o custom-columns=NAME:.metadata.name,GPUS:.status.allocatable.nvidia\.com/gpu
kubectl get ns gpu-operator
kubectl get pods -n gpu-operator
kubectl get clusterpolicies.nvidia.com
kubectl get ns cert-manager
kubectl get pods -n cert-managerkubectl get crd inferenceservices.serving.kserve.io
kubectl get pods -n kservekubectl get crd inferenceservices.serving.kserve.io
kubectl get pods -n kservehelm repo add nvidia https://helm.ngc.nvidia.com/nvidia
helm repo update
helm upgrade --install gpu-operator nvidia/gpu-operator \
--namespace gpu-operator \
--create-namespacekubectl rollout status deployment/gpu-operator -n gpu-operator --timeout=300s
kubectl get pods -n gpu-operator
kubectl get clusterpolicies.nvidia.com
kubectl describe node <gpu-node-name>helm repo add nvidia https://helm.ngc.nvidia.com/nvidia
helm repo update
helm upgrade --install nim-operator nvidia/k8s-nim-operator \
--namespace nim-operator \
--create-namespace \
--version <selected-version>helm upgrade --install nim-operator deployments/helm/k8s-nim-operator \
--namespace nim-operator \
--create-namespacehelm dependency update deployments/helm/k8s-nim-operator--set dynamo.enabled=true--set dynamo.grove.enabled=true
--set dynamo.kai-scheduler.enabled=true--set operator.admissionController.enabled=falsehelm status nim-operator -n nim-operator
helm get values nim-operator -n nim-operator
kubectl get deployment -n nim-operator -l app.kubernetes.io/instance=nim-operator,app.kubernetes.io/name=k8s-nim-operator
kubectl rollout status deployment/<deployment-name-from-previous-command> -n nim-operator --timeout=180s
kubectl get pods -n nim-operator
kubectl get crd | grep -E 'apps.nvidia.com|nvidia.com'kubectl get crd | grep -i dynamo
kubectl get pods -n nim-operatorhelm status nim-operator -n nim-operator
helm get values nim-operator -n nim-operator
helm list -n nim-operator
helm search repo nvidia/k8s-nim-operator --versions