Use this skill whenever the user is troubleshooting a VMware/vSphere problem — a reported error, an exception, a log dump, a slow or failed VM, a host that went sideways — and needs help locating the root cause. It is the diagnostic brain of the VMware family: it drives a systematic investigation, pulls the right signals from the other skills, correlates events into one timeline, ranks root-cause hypotheses, and tells you what to check next even when you don't know where to start. Always use this skill for "diagnose this VMware issue", "why is my VM slow", "troubleshoot this vSphere error", "what does this log mean", "help me figure out what broke" when the context is explicitly VMware/vSphere/ESXi/NSX. It is READ-ONLY: it never changes anything. Do NOT use it to execute fixes — single fixes go to vmware-aiops, multi-step gated remediation goes to vmware-pilot. Do NOT use it for routine inventory or health checks with no problem to solve — use vmware-monitor.
Memory
vmware-privateai
Try itUse this skill whenever the user needs the GPU / AI-infrastructure layer of VMware Private AI Foundation with NVIDIA (PAIF-N) on vSphere 9.x / VCF 9.1: inventory GPU hosts and physical GPU devices, see which VMs consume a vGPU and the profile each holds, read real-time GPU utilization, list the vGPU and DirectPath profile catalog, assign a VM's vGPU profile, and list Private AI Service (PAIS) served models and knowledge bases. Always use this skill for "list GPU hosts", "which VMs are using a vGPU", "GPU utilization", "assign a vGPU profile", "list vGPU profiles", "list served models" when the context is explicitly VMware / vSphere / VCF Private AI / NVIDIA vGPU. Do NOT use for the backing VM's power/snapshot/clone/migrate (use vmware-aiops), read-only vSphere inventory/alarms/host health (use vmware-monitor), or GPU-enabled Tanzu Kubernetes (use vmware-vks). This skill is the GPU lens; vmware-aiops owns the VM lifecycle behind it.
What it does
Use this skill whenever the user needs the GPU / AI-infrastructure layer of VMware Private AI Foundation with NVIDIA (PAIF-N) on vSphere 9.x / VCF 9.1: inventory GPU hosts and physical GPU devices, see which VMs consume a vGPU and the profile each holds, read real-time GPU utilization, list the vGPU and DirectPath profile catalog, assign a VM's vGPU profile, and list Private AI Service (PAIS) served models and knowledge bases. Always use this skill for "list GPU hosts", "which VMs are using a vGPU", "GPU utilization", "assign a vGPU profile", "list vGPU profiles", "list served models" when the context is explicitly VMware / vSphere / VCF Private AI / NVIDIA vGPU. Do NOT use for the backing VM's power/snapshot/clone/migrate (use vmware-aiops), read-only vSphere inventory/alarms/host health (use vmware-monitor), or GPU-enabled Tanzu Kubernetes (use vmware-vks). This skill is the GPU lens; vmware-aiops owns the VM lifecycle behind it.
The skill document
VMware Private AI (Foundation with NVIDIA) — GPU & Model-Serving Ops
Disclaimer: Community-maintained open-source project, not affiliated with, endorsed by, or sponsored by VMware, Inc., Broadcom Inc., or NVIDIA Corporation. "VMware", "vSphere", and "VCF" are trademarks of Broadcom; "NVIDIA" and "vGPU" are trademarks of NVIDIA. Source is publicly auditable under the MIT license.
The GPU / AI-infrastructure lens for the VMware skill family — GPU host & device inventory, vGPU consumers, real-time GPU utilization, the vGPU / DirectPath profile catalog, vGPU assignment, and Private AI Service (PAIS) served models and knowledge bases — over the vSphere 9.x / VCF 9.1 Web Services API (pyVmomi) plus the PAIS REST API.
Companion skills: vmware-aiops (the vCenter VMs behind AI workloads — power/snapshot/clone), vmware-vks (GPU-enabled Tanzu Kubernetes), vmware-monitor (read-only vSphere health).
Status: v1.0.0 (beta). Skill #15 of the family; independent 1.x version line. Every API path is verified against official Broadcom/NVIDIA sources before use (
tests/eval/spec/privateai_endpoints.py) — no endpoints written from memory. GET-response field names and the exact PAIS paths are defensive and pending validation against live 9.x hardware (see Troubleshooting). Governed by the family harness (audit + policy + teaching errors); read-vs-write authorization is delegated to the vCenter service account's RBAC role.
What This Skill Does
| Category | Tools | Count | Read/Write |
|---|---|---|---|
| GPU inventory | host list/get, device list, vGPU consumer list | 4 | 4 R |
| GPU utilization | real-time per-vGPU-VM utilization (gpu %, mem %, temp) | 1 | 1 R |
| Profile catalog | vGPU profile list, DirectPath profile list | 2 | 2 R |
| vGPU assignment | set a VM's vGPU profile (VM must be powered off) | 1 | 1 W |
| Private AI Service | served-model list, knowledge-base list | 2 | 2 R |
10 MCP tools (9 read / 1 write). Reads are strictly non-destructive. The single write
(vgpu_assign) previews its blast radius, refuses a powered-on VM, never powers a VM off itself, is
double-confirmed at the CLI, and is audit-logged.
Quick Install
uv tool install vmware-privateai
vmware-privateai version
vmware-privateai gpu host-list # first read — lists hosts that have a GPU
Config lives in ~/.vmware-privateai/config.yaml (targets + optional pais: section); passwords and
the PAIS bearer token live in ~/.vmware-privateai/.env (chmod 600). See references/setup-guide.md.
When to Use This Skill
Use vmware-privateai for the GPU / AI-infrastructure layer: which hosts and physical devices have GPUs, which VMs hold a vGPU and what profile, real-time GPU utilization, the assignable vGPU / DirectPath profile catalog, changing a VM's vGPU profile, and the models / knowledge bases served by Private AI Service — when the context is explicitly VMware / vSphere / VCF Private AI / NVIDIA vGPU.
Do NOT use when: the task is the backing VM's lifecycle — power on/off, snapshot, clone, migrate,
reconfigure CPU/RAM (→ vmware-aiops); read-only vSphere inventory, alarms, or host health
(→ vmware-monitor); or GPU-enabled Tanzu Kubernetes / Supervisor namespaces (→ vmware-vks).
vgpu_assign deliberately does not power the VM off — that is vmware-aiops's job, kept separate
so this skill's blast radius stays "one VM, when it is already off".
Related Skills — Skill Routing
| The user wants… | Skill |
|---|---|
| Inventory GPUs / vGPU consumers / GPU utilization / assign a vGPU profile | vmware-privateai (this) |
| List PAIS served models / knowledge bases | vmware-privateai (this) |
| Power off / snapshot / clone / migrate the backing vCenter VM | vmware-aiops |
| Read-only vSphere inventory / alarms / host health | vmware-monitor |
| GPU-enabled Tanzu Kubernetes clusters / namespaces | vmware-vks |
| Multi-step GPU workflow with approval + rollback | vmware-pilot |
Common Workflows
1. Find an idle GPU and reassign a VM's vGPU profile.
vmware-privateai gpu device-list --vendor NVIDIA # find GPUs; vm_count 0 = idle
vmware-privateai gpu consumer-list # who holds a vGPU, and which profile
vmware-privateai vgpu profile-list --host esx-07 # profiles that host can hand a VM
vmware-privateai gpu vgpu-assign fin-train-01 grid_a100-4c --dry-run # preview blast radius
# power the VM off with vmware-aiops, THEN:
vmware-privateai gpu vgpu-assign fin-train-01 grid_a100-4c # double-confirm + audit
Failure branch: if vgpu-assign (confirm) refuses with "VM is powered on — a vGPU change needs the
VM powered off", run vmware-aiops vm_power_off 'fin-train-01' first, then re-run. If it fails with
"profile not offered by the VM's host / GPU lacks free framebuffer", run
vmware-privateai gpu host-get to see the valid profiles and free capacity.
2. Triage GPU utilization across the estate.
vmware-privateai gpu utilization --top 10 # busiest vGPU VMs first
vmware-privateai gpu host-list --vendor NVIDIA # which hosts carry the load
Failure branch: a VM showing metrics unavailable (no host driver?) is not an error — the NVIDIA
host GPU driver is not exposing counters for it (metrics_available:false). Deep per-SM / per-process
/ MIG-slice telemetry is not available via vSphere; use NVIDIA DCGM on the host for that.
3. See what Private AI Service is serving.
vmware-privateai pais model-list # OpenAI-compatible /models
vmware-privateai pais kb-list # RAG knowledge bases
Failure branch: HTTP 404 usually means a base-URL mismatch, not a bug — the /api/v1 PAIS path
prefix is deployment-specific and unconfirmed (beta). Check pais.endpoint in config.yaml. HTTP
401/403 means the bearer token in VMWARE_PRIVATEAI_PAIS_TOKEN is expired or lacks scope — obtain a
fresh token from your Identity Provider, re-export it, and retry.
Usage Mode
- CLI — interactive inventory / triage, scripting, small or local models (lower context cost).
- MCP — agent-driven operations with structured JSON; run
vmware-privateai mcp(an installed console script, so nouvxnetwork re-resolve — works through enterprise TLS proxies, 踩坑 #25).
MCP Tools (10 — 9 read, 1 write)
| Category | Tools | R/W |
|---|---|---|
| GPU inventory | gpu_host_list, gpu_host_get, gpu_device_list, gpu_consumer_list | Read |
| GPU utilization | gpu_utilization | Read |
| Profile catalog | vgpu_profile_list, directpath_profile_list | Read |
| Private AI Service | pais_model_list, pais_knowledge_base_list | Read |
| vGPU assignment | vgpu_assign | Write |
List envelope: every *_list tool returns {items, returned, limit, offset, total, truncated, hint}
— read rows from items and check truncated before concluding a listing is complete; empty items
with truncated:false means checked-and-none, not a failure. Lists paginate at limit=50; filter with
the tool's name/vendor/host/profile/vm arguments rather than paging the whole estate.
Write safety (normative): vgpu_assign with confirm=false (the default) previews only —
current profile, target profile, power state, and that a power-off is required — without acting.
confirm=true applies it, but refuses a powered-on VM with a teaching error. It never powers the VM
off itself, waits for the real ReconfigVM task outcome (never a premature "ok"), and audits every
applied change to ~/.vmware/audit.db.
CLI Quick Reference
vmware-privateai gpu host-list [--name N] [--vendor V] # hosts with a GPU
vmware-privateai gpu host-get # full per-GPU detail
vmware-privateai gpu device-list [--host H] [--vendor V] # physical GPUs (vm_count 0 = idle)
vmware-privateai gpu consumer-list [--profile P] [--vm V] # VMs holding a vGPU + profile
vmware-privateai gpu utilization [--vm V] [--top N] # real-time GPU %, mem %, temp
vmware-privateai gpu vgpu-assign [--dry-run] # WRITE — VM must be off; double-confirm
vmware-privateai vgpu profile-list [--host H] [--model M] # vGPU profile catalog
vmware-privateai vgpu directpath-list [--vendor V] # DirectPath profiles (vSphere 9.0+)
vmware-privateai pais model-list [--name N] # PAIS served models
vmware-privateai pais kb-list [--name N] # PAIS knowledge bases
Full list: references/cli-reference.md. Per-tool response-token estimates: references/capabilities.md.
Troubleshooting
Password not found for target ''. Set environment variable VMWARE_PRIVATEAI__PASSWORD— add that line to~/.vmware-privateai/.envandchmod 600it, or export it (from a secret manager). The `` is the target name upper-cased with-→_.TLS verification failed for target ''— for a self-signed lab setverify_ssl: falsefor that target inconfig.yaml; otherwise install the vCenter CA on this host.gpu host-listreturns nothing on a cluster you know has GPUs — onlyshared/direct/sharedDirectgraphics types count as compute GPUs (the plain host framebuffer is excluded). If real 9.x hardware surfaces a GPU under an unexpected type, that is a beta known-limitation — file an issue with the rawgpu host-getoutput so the projection can be widened.gpu utilizationshows a VM withmetrics unavailable— the NVIDIA host GPU driver is not exposing counters for it (not an error). Note thegpu.*perf counters may report at host level on some builds — verify the entity type on real hardware (beta caveat).directpath-listerrors with "needs vCenter 9.0+" — DirectPathProfileManager is new in vSphere 9.0; on 8.x usevgpu profile-listinstead (the error routes you there, not an empty list).- PAIS 404 / non-JSON response — the
/api/v1prefix is deployment-specific and unconfirmed; checkpais.endpoint(a proxy or login page returns non-JSON). PAIS 401/403 → refresh the bearer token inVMWARE_PRIVATEAI_PAIS_TOKEN.
Audit & Safety
- Source Code — https://github.com/vmware-skills/VMware-PrivateAI (MIT).
- Config File Contents —
config.yamlholds target host/username/port and thepais.endpointonly; passwords and the PAIS bearer token live in~/.vmware-privateai/.env(0600, obfuscated tob64:at rest — obfuscation, not encryption). - Webhook Data Scope — none. This skill makes no outbound calls except to the configured vCenter/ESXi targets and PAIS endpoint.
- TLS Verification — on by default;
verify_ssl: falseis per-target (andpais.verify_ssl) and only for self-signed labs. - Prompt Injection Protection — all vSphere-supplied and PAIS-supplied text (device/vendor/VM/
profile names, PAIS model ids, knowledge-base descriptions) passes through
vmware_policy.sanitize()(truncation ≤500 chars + C0/C1 control-char stripping); a KB description is the highest-value injection surface here. - Least Privilege — read-vs-write authorization is the vCenter role's job: a read-only service
account refuses
vgpu_assign's ReconfigVM at vCenter, un-bypassably. All writes are recorded in~/.vmware/audit.db. Seereferences/setup-guide.md.
License
MIT
Related skills
Manage vSphere storage — datastores, iSCSI, and vSAN — through 12 MCP tools or a CLI.
Manage NSX-T distributed firewall policies, security groups, VM tags, traceflow, and IDPS through 21 MCP tools or a CLI.
Run point-in-time compliance scans against vSphere/ESXi/NSX across CIS, STIG, 等保 2.0 三级, PCI-DSS, IT-Grundschutz, NIS2.
Design, approve, and roll back multi-step VMware workflows through a single orchestration entry point.
Query VMware Aria Operations metrics, alerts, capacity, anomalies, and reports through 33 MCP tools.