VMware AIops
Disclaimer: This is a community-maintained open-source project and is not affiliated with, endorsed by, or sponsored by VMware, Inc. or Broadcom Inc. "VMware" and "vSphere" are trademarks of Broadcom. Source code is publicly auditable at github.com/zw008/VMware-AIops under the MIT license.
VMware family entry point — AI-powered VM lifecycle, deployment, and alarm management — 41 MCP tools.
Start here: install vmware-aiops first, then add modules as needed.
Run vmware-aiops hub status to see which family members are installed.
Family: vmware-monitor (inventory/health), vmware-storage (iSCSI/vSAN), vmware-vks (Tanzu Kubernetes), vmware-nsx (NSX networking), vmware-nsx-security (DFW/firewall), vmware-aria (metrics/alerts/capacity), vmware-avi (AVI/ALB/AKO), vmware-harden (compliance baselines).
| vmware-pilot (workflow orchestration) | vmware-policy (audit/policy)
What This Skill Does
| Category |
Tools |
Count |
| VM Lifecycle |
power on/off, clone, migrate, delete, snapshot CRUD, TTL auto-delete, clean slate |
13 |
| Deployment |
OVA, template, linked clone, batch clone/deploy |
8 |
| Guest Ops |
exec commands, upload/download files, provision |
5 |
| Plan/Apply |
multi-step planning with rollback |
4 |
| Cluster |
create, delete, HA/DRS config, add/remove hosts |
6 |
| Datastore |
browse files, scan for images |
2 |
| Alarm Management |
list alarms, acknowledge, reset |
3 |
Quick Install
uv tool install vmware-aiops
vmware-aiops doctor
vmware-aiops hub status # see which family members are installed
VMware Family — Install What You Need
vmware-aiops is the entry point. Add modules for additional capabilities:
| Module |
Install |
Adds |
| vmware-monitor |
uv tool install vmware-monitor |
Read-only inventory, alarms, events |
| vmware-storage |
uv tool install vmware-storage |
iSCSI, vSAN, datastore management |
| vmware-vks |
uv tool install vmware-vks |
Tanzu Kubernetes (vSphere 8.x+) |
| vmware-nsx |
uv tool install vmware-nsx-mgmt |
NSX networking: segments, gateways, NAT |
| vmware-nsx-security |
uv tool install vmware-nsx-security |
DFW microsegmentation, security groups |
| vmware-aria |
uv tool install vmware-aria |
Aria Ops metrics, alerts, capacity |
| vmware-avi |
uv tool install vmware-avi |
AVI load balancer, ALB, AKO, Ingress |
Each module stays independent — small tool count keeps local models (Ollama, Qwen) accurate.
When to Use This Skill
- Power on/off, create, delete, snapshot, clone, or migrate VMs
- Deploy VMs from OVA, templates, linked clones, or batch specs
- Run commands or transfer files inside a VM (Guest Operations)
- Create/configure clusters (HA/DRS)
- Browse datastores for deployable images
- Plan and execute multi-step operations with rollback
- List, acknowledge, and clear vCenter triggered alarms (clear matches by entity type + status — see MCP Tools section)
Use companion skills for:
- Inventory, health, alarms, VM info →
vmware-monitor
- iSCSI, vSAN, datastore management →
vmware-storage
- Tanzu Kubernetes (Supervisor, Namespace, TKC) →
vmware-vks
- Load balancing, AVI/ALB, AKO, Ingress →
vmware-avi
Related Skills — Skill Routing
| User Intent |
Recommended Skill |
| Read-only monitoring, zero risk |
vmware-monitor (uv tool install vmware-monitor) |
| Storage: iSCSI, vSAN, datastores |
vmware-storage (uv tool install vmware-storage) |
| VM lifecycle, deployment, guest ops |
vmware-aiops ← this skill |
| Tanzu Kubernetes (vSphere 8.x+) |
vmware-vks (uv tool install vmware-vks) |
| NSX networking: segments, gateways, NAT |
vmware-nsx (uv tool install vmware-nsx-mgmt) |
| NSX security: DFW rules, security groups |
vmware-nsx-security (uv tool install vmware-nsx-security) |
| Aria Ops: metrics, alerts, capacity |
vmware-aria (uv tool install vmware-aria) |
| Multi-step workflows with approval |
vmware-pilot |
| Compliance baselines (CIS / 等保 / PCI-DSS), drift detection, LLM remediation advisor |
vmware-harden (uv tool install vmware-harden) |
| Load balancer, AVI, ALB, AKO, Ingress |
vmware-avi (uv tool install vmware-avi) |
| Audit log query |
vmware-policy (vmware-audit CLI) |
Common Workflows
Diagnostic investigations: Before remediating any "why is X slow / failing / down" issue, follow references/investigation-protocol.md. It enforces the four root-cause completeness criteria (falsifiability / sufficiency / necessity / mechanism) and the up-to-three-rounds deepening loop. Only invoke L3+ write tools after the four criteria are satisfied AND the user has approved a remediation plan.
Deploy a Lab Environment
Pre-flight (judgment, not blind sequence):
- Free space: target datastore must have ≥ OVA size × 2 (delta files + thin-provision overhead). If multiple datastores qualify, prefer one with lowest current IOPS pressure (cross-check
vmware-aria if available).
- Name hygiene: prefix with date or owner (
lab-2026-04-30-alice) so the TTL cleanup audit trail is meaningful.
- TTL: always set. 480 min for a single test session, 7200 min for a week-long sandbox. Never deploy a "lab" VM without a TTL — that is how datastores fill up at 3 AM.
- Snapshot timing: take the baseline after provisioning succeeds, not before — a pre-provision snapshot is just an empty checkpoint.
Steps:
vmware-aiops datastore browse <ds> --pattern "*.ova" → confirm image present and size
vmware-aiops deploy ova <path> --name <date>-<owner>-<purpose> --datastore <ds>
vmware-aiops vm guest-exec <name> --cmd /usr/bin/python3 --args "setup.py" --user admin → if exit ≠ 0, stop, do not snapshot a half-provisioned VM
vmware-aiops vm snapshot-create <name> --name baseline (only if multi-iteration testing; skip for one-shot)
vmware-aiops vm set-ttl <name> --minutes 480
Batch Clone for Testing
Pre-flight:
- Source VM state: powered-off is safest. If powered-on, VMware Tools must be running and quiesce-capable, else clones may have inconsistent disk state.
- Capacity math:
free_space ≥ source.size × count × 1.2 (full clone) or ≥ count × 2 GB (linked clone, delta-only).
- Decision rule: count > 10 → use linked clones (
deploy linked-clone); seconds vs minutes per clone, ~100× less storage. Tradeoff: linked clones depend on source snapshot — deleting the snapshot breaks all children.
- Network exhaustion: each clone gets a unique MAC from the vSphere pool; if you batch > 200, verify pool capacity in advance.
- TTL: every clone must have one. Use the plan's metadata to track ownership.
Steps:
vm_create_plan with clone + reconfigure + set-ttl steps grouped per VM (atomic per clone)
- Review the plan with the user — surface count, datastore, irreversible warnings
vm_apply_plan — stops on first failure (intentional, do not auto-resume)
- On failure:
vm_rollback_plan → reverses completed clones; manually verify rollback before retrying
Migrate VM to Another Host
Pre-flight (ALL must pass before issuing migrate):
- CPU compatibility: target host CPU family must match source, OR cluster must be in EVC mode. Live migration across mismatched CPUs fails mid-flight and may leave the VM stunned.
- Network parity: every portgroup the VM uses must exist on the target host's vSwitch with the same VLAN. Missing portgroup → vNICs disconnected post-migration.
- Storage visibility: target host must see all of the VM's datastores; otherwise this is a Storage vMotion, not a host migration — different (slower) operation.
- Affinity rules: if the VM is pinned to source by a DRS host-affinity rule, migration silently violates intent. Check
cluster info first.
- Hardware passthrough: VMs with PCI passthrough (GPU, USB) cannot live-migrate — schedule a cold migration window.
Steps:
- Verify VM state and current host via
vmware-monitor vm info <name>
- Verify target host: same cluster, EVC compatible, has required networks/datastores
vmware-aiops vm migrate <name> --to-host <target> — wait for task completion, do not assume success on return
- Post-check:
vm info confirms new host AND power state unchanged AND vNICs connected
Usage Mode
| Scenario |
Recommended |
Why |
| Local/small models (Ollama, Qwen) |
CLI |
~2K tokens vs ~8K for MCP |
| Cloud models (Claude, GPT-4o) |
Either |
MCP gives structured JSON I/O |
| Automated pipelines |
MCP |
Type-safe parameters, structured output |
MCP Tools (41 — 8 read, 33 write)
| Category |
Tools |
R/W |
| VM Lifecycle (13) |
vm_list_ttl, vm_list_snapshots |
Read |
|
vm_power_on, vm_power_off, vm_clone, vm_migrate, vm_delete, vm_create_snapshot, vm_revert_snapshot, vm_delete_snapshot, vm_set_ttl, vm_cancel_ttl, vm_clean_slate |
Write |
| Deployment (8) |
deploy_vm_from_ova, deploy_vm_from_template, deploy_linked_clone, attach_iso_to_vm, convert_vm_to_template, batch_clone_vms, batch_linked_clone_vms, batch_deploy_from_spec |
Write |
| Guest Ops (5) |
vm_guest_download |
Read |
|
vm_guest_exec, vm_guest_exec_output, vm_guest_upload, vm_guest_provision |
Write |
| Plan/Apply (4) |
vm_list_plans |
Read |
|
vm_create_plan, vm_apply_plan, vm_rollback_plan |
Write |
| Datastore (2) |
browse_datastore, scan_datastore_images |
Read |
| Cluster (6) |
cluster_info |
Read |
|
cluster_create, cluster_delete, cluster_add_host, cluster_remove_host, cluster_configure |
Write |
| Alarm Management (3) |
list_vcenter_alarms |
Read |
|
acknowledge_vcenter_alarm, reset_vcenter_alarm |
Write |
Read/write split: 8 tools are read-only (per [READ] docstring marker), 33 modify state. All write tools require explicit parameters and are audit-logged. Destructive operations (vm_delete, vm_revert_snapshot, vm_delete_snapshot, force power-off, cluster delete/remove-host, alarm reset) require double confirmation at the CLI layer.
Alarm reset blast radius: vSphere has no per-alarm clear API. reset_vcenter_alarm uses AlarmManager.ClearTriggeredAlarms, which clears all triggered alarms matching the named alarm's entity type (host/VM/all) and current status (red/yellow) — not just the one named. The response's scope field states exactly what was cleared. The named alarm is looked up first, so a typo fails fast without clearing anything.
CLI Quick Reference
# VM operations
vmware-aiops vm power-on <name> [--target <t>]
vmware-aiops vm power-off <name> [--force]
vmware-aiops vm create <name> --cpu 4 --memory 8192 --disk 100
vmware-aiops vm delete <name>
vmware-aiops vm clone <name> --new-name <new> [--to-host <host>] [--to-datastore <ds>] [--power-on]
vmware-aiops vm migrate <name> --to-host <host> [--to-datastore <ds>]
vmware-aiops vm snapshot-create <name> --name <snap> [--description <text>] [--memory]
vmware-aiops vm snapshot-list <name>
vmware-aiops vm snapshot-revert <name> --name <snap>
vmware-aiops vm snapshot-delete <name> --name <snap> [--remove-children]
# Guest operations (requires VMware Tools)
vmware-aiops vm guest-exec <name> --cmd <script-path> --args "<args>" --user <username>
vmware-aiops vm guest-upload <name> --local ./script.sh --guest /tmp/script.sh --user <username>
# Deploy
vmware-aiops deploy ova <path> --name <vm> --datastore <ds>
vmware-aiops deploy linked-clone --source <vm> --snapshot <snap> --name <new>
# Cluster
vmware-aiops cluster create <name> --ha --drs
vmware-aiops cluster info <name>
# Datastore
vmware-aiops datastore browse <ds> --pattern "*.ova"
# Alarm management
vmware-aiops alarm list [--target <t>]
vmware-aiops alarm acknowledge <entity_name> <alarm_name> [--target <t>]
vmware-aiops alarm reset <entity_name> <alarm_name> [--target <t>] # double confirm; clears ALL alarms matching entity type + status
# Family
vmware-aiops hub status # show installed family members + install commands
Full CLI reference: see references/cli-reference.md
Troubleshooting
"VM not found" error
VM names are case-sensitive in vSphere. Use exact name from vmware-monitor inventory vms.
Guest exec returns empty output
Use vm_guest_exec_output instead of vm_guest_exec — it auto-captures stdout/stderr. Basic vm_guest_exec only returns exit code.
Deploy OVA times out
Large OVA files (>10GB) may exceed the default 120s timeout. The upload happens via HTTP NFC lease — ensure network between the machine running vmware-aiops and ESXi is stable.
Plan apply fails mid-way
Run vmware-aiops plan list to see failed plan status. Ask user if they want to rollback with vm_rollback_plan. Irreversible steps (delete_vm) are skipped during rollback.
Connection refused / SSL error
- Verify target is reachable:
vmware-aiops doctor
- For self-signed certs: set
disableSslCertValidation: true in config.yaml (lab environments only)
Setup
uv tool install vmware-aiops
mkdir -p ~/.vmware-aiops
vmware-aiops init # generates config.yaml and .env templates
chmod 600 ~/.vmware-aiops/.env
All tools are automatically audited via vmware-policy. Audit logs: vmware-audit log --last 20
Full setup guide, security details, and AI platform compatibility: see references/setup-guide.md
Audit & Safety
All operations are automatically audited via vmware-policy (@vmware_tool decorator):
- Every tool call logged to
~/.vmware/audit.db (SQLite, framework-agnostic)
- Policy rules enforced via
~/.vmware/rules.yaml (deny rules, maintenance windows, risk levels)
- Risk classification: each tool tagged as low/medium/high/critical
- View recent operations:
vmware-audit log --last 20
- View denied operations:
vmware-audit log --status denied
vmware-policy is automatically installed as a dependency — no manual setup needed.
License
MIT — github.com/zw008/VMware-AIops
1---2name: vmware-aiops3description: Use this skill whenever the user needs to manage VMs in VMware/vSphere/ESXi — it's the entry point for all VM operations. Directly handles: power on/off, clone, snapshot, migrate, deploy from OVA or templates, run commands inside VMs, batch operations, cluster management, and vCenter alarm acknowledgment. Always use this skill for any "power on", "clone", "deploy", "migrate", "batch", "guest exec", "alarm", or VM lifecycle task when the context is explicitly VMware, vSphere, or ESXi. Do NOT use for read-only queries (use vmware-monitor), NSX networking (use vmware-nsx), storage/iSCSI/vSAN (use vmware-storage), or Kubernetes cluster lifecycle (use vmware-vks). For multi-step workflows use vmware-pilot. For load balancing/AVI/AKO use vmware-avi.4---56# VMware AIops78> **Disclaimer**: This is a community-maintained open-source project and is **not affiliated with, endorsed by, or sponsored by VMware, Inc. or Broadcom Inc.** "VMware" and "vSphere" are trademarks of Broadcom. Source code is publicly auditable at [github.com/zw008/VMware-AIops](https://github.com/zw008/VMware-AIops) under the MIT license.910VMware family entry point — AI-powered VM lifecycle, deployment, and alarm management — 41 MCP tools.1112> **Start here**: install vmware-aiops first, then add modules as needed.13> Run `vmware-aiops hub status` to see which family members are installed.14> **Family**: [vmware-monitor](https://github.com/zw008/VMware-Monitor) (inventory/health), [vmware-storage](https://github.com/zw008/VMware-Storage) (iSCSI/vSAN), [vmware-vks](https://github.com/zw008/VMware-VKS) (Tanzu Kubernetes), [vmware-nsx](https://github.com/zw008/VMware-NSX) (NSX networking), [vmware-nsx-security](https://github.com/zw008/VMware-NSX-Security) (DFW/firewall), [vmware-aria](https://github.com/zw008/VMware-Aria) (metrics/alerts/capacity), [vmware-avi](https://github.com/zw008/VMware-AVI) (AVI/ALB/AKO), [vmware-harden](https://github.com/zw008/VMware-Harden) (compliance baselines).15> | [vmware-pilot](../vmware-pilot/SKILL.md) (workflow orchestration) | [vmware-policy](../vmware-policy/SKILL.md) (audit/policy)1617## What This Skill Does1819| Category | Tools | Count |20|----------|-------|:-----:|21| **VM Lifecycle** | power on/off, clone, migrate, delete, snapshot CRUD, TTL auto-delete, clean slate | 13 |22| **Deployment** | OVA, template, linked clone, batch clone/deploy | 8 |23| **Guest Ops** | exec commands, upload/download files, provision | 5 |24| **Plan/Apply** | multi-step planning with rollback | 4 |25| **Cluster** | create, delete, HA/DRS config, add/remove hosts | 6 |26| **Datastore** | browse files, scan for images | 2 |27| **Alarm Management** | list alarms, acknowledge, reset | 3 |2829## Quick Install3031```bash32uv tool install vmware-aiops33vmware-aiops doctor34vmware-aiops hub status # see which family members are installed35```3637## VMware Family — Install What You Need3839vmware-aiops is the entry point. Add modules for additional capabilities:4041| Module | Install | Adds |42|--------|---------|------|43| **vmware-monitor** | `uv tool install vmware-monitor` | Read-only inventory, alarms, events |44| **vmware-storage** | `uv tool install vmware-storage` | iSCSI, vSAN, datastore management |45| **vmware-vks** | `uv tool install vmware-vks` | Tanzu Kubernetes (vSphere 8.x+) |46| **vmware-nsx** | `uv tool install vmware-nsx-mgmt` | NSX networking: segments, gateways, NAT |47| **vmware-nsx-security** | `uv tool install vmware-nsx-security` | DFW microsegmentation, security groups |48| **vmware-aria** | `uv tool install vmware-aria` | Aria Ops metrics, alerts, capacity |49| **vmware-avi** | `uv tool install vmware-avi` | AVI load balancer, ALB, AKO, Ingress |5051> Each module stays independent — small tool count keeps local models (Ollama, Qwen) accurate.5253## When to Use This Skill5455- Power on/off, create, delete, snapshot, clone, or migrate VMs56- Deploy VMs from OVA, templates, linked clones, or batch specs57- Run commands or transfer files inside a VM (Guest Operations)58- Create/configure clusters (HA/DRS)59- Browse datastores for deployable images60- Plan and execute multi-step operations with rollback61- List, acknowledge, and clear vCenter triggered alarms (clear matches by entity type + status — see MCP Tools section)6263**Use companion skills for**:64- Inventory, health, alarms, VM info → `vmware-monitor`65- iSCSI, vSAN, datastore management → `vmware-storage`66- Tanzu Kubernetes (Supervisor, Namespace, TKC) → `vmware-vks`67- Load balancing, AVI/ALB, AKO, Ingress → `vmware-avi`6869## Related Skills — Skill Routing7071| User Intent | Recommended Skill |72|-------------|------------------|73| Read-only monitoring, zero risk | **vmware-monitor** (`uv tool install vmware-monitor`) |74| Storage: iSCSI, vSAN, datastores | **vmware-storage** (`uv tool install vmware-storage`) |75| VM lifecycle, deployment, guest ops | **vmware-aiops** ← this skill |76| Tanzu Kubernetes (vSphere 8.x+) | **vmware-vks** (`uv tool install vmware-vks`) |77| NSX networking: segments, gateways, NAT | **vmware-nsx** (`uv tool install vmware-nsx-mgmt`) |78| NSX security: DFW rules, security groups | **vmware-nsx-security** (`uv tool install vmware-nsx-security`) |79| Aria Ops: metrics, alerts, capacity | **vmware-aria** (`uv tool install vmware-aria`) |80| Multi-step workflows with approval | **vmware-pilot** |81| Compliance baselines (CIS / 等保 / PCI-DSS), drift detection, LLM remediation advisor | **vmware-harden** (`uv tool install vmware-harden`) |82| Load balancer, AVI, ALB, AKO, Ingress | **vmware-avi** (`uv tool install vmware-avi`) |83| Audit log query | **vmware-policy** (`vmware-audit` CLI) |8485## Common Workflows8687> **Diagnostic investigations**: Before remediating any "why is X slow / failing / down" issue, follow [`references/investigation-protocol.md`](references/investigation-protocol.md). It enforces the four root-cause completeness criteria (falsifiability / sufficiency / necessity / mechanism) and the up-to-three-rounds deepening loop. Only invoke L3+ write tools after the four criteria are satisfied AND the user has approved a remediation plan.8889### Deploy a Lab Environment9091**Pre-flight (judgment, not blind sequence)**:92- Free space: target datastore must have ≥ OVA size × 2 (delta files + thin-provision overhead). If multiple datastores qualify, prefer one with lowest current IOPS pressure (cross-check `vmware-aria` if available).93- Name hygiene: prefix with date or owner (`lab-2026-04-30-alice`) so the TTL cleanup audit trail is meaningful.94- TTL: always set. 480 min for a single test session, 7200 min for a week-long sandbox. **Never deploy a "lab" VM without a TTL** — that is how datastores fill up at 3 AM.95- Snapshot timing: take the baseline **after** provisioning succeeds, not before — a pre-provision snapshot is just an empty checkpoint.9697**Steps**:981. `vmware-aiops datastore browse <ds> --pattern "*.ova"` → confirm image present and size992. `vmware-aiops deploy ova <path> --name <date>-<owner>-<purpose> --datastore <ds>`1003. `vmware-aiops vm guest-exec <name> --cmd /usr/bin/python3 --args "setup.py" --user admin` → if exit ≠ 0, **stop**, do not snapshot a half-provisioned VM1014. `vmware-aiops vm snapshot-create <name> --name baseline` (only if multi-iteration testing; skip for one-shot)1025. `vmware-aiops vm set-ttl <name> --minutes 480`103104### Batch Clone for Testing105106**Pre-flight**:107- Source VM state: powered-off is safest. If powered-on, VMware Tools must be running and quiesce-capable, else clones may have inconsistent disk state.108- Capacity math: `free_space ≥ source.size × count × 1.2` (full clone) or `≥ count × 2 GB` (linked clone, delta-only).109- Decision rule: **count > 10 → use linked clones** (`deploy linked-clone`); seconds vs minutes per clone, ~100× less storage. Tradeoff: linked clones depend on source snapshot — deleting the snapshot breaks all children.110- Network exhaustion: each clone gets a unique MAC from the vSphere pool; if you batch > 200, verify pool capacity in advance.111- TTL: every clone must have one. Use the plan's metadata to track ownership.112113**Steps**:1141. `vm_create_plan` with clone + reconfigure + set-ttl steps grouped per VM (atomic per clone)1152. Review the plan with the user — surface count, datastore, irreversible warnings1163. `vm_apply_plan` — stops on first failure (intentional, do not auto-resume)1174. On failure: `vm_rollback_plan` → reverses completed clones; manually verify rollback before retrying118119### Migrate VM to Another Host120121**Pre-flight (ALL must pass before issuing migrate)**:122- CPU compatibility: target host CPU family must match source, OR cluster must be in EVC mode. Live migration across mismatched CPUs **fails mid-flight** and may leave the VM stunned.123- Network parity: every portgroup the VM uses must exist on the target host's vSwitch with the same VLAN. Missing portgroup → vNICs disconnected post-migration.124- Storage visibility: target host must see all of the VM's datastores; otherwise this is a Storage vMotion, not a host migration — different (slower) operation.125- Affinity rules: if the VM is pinned to source by a DRS host-affinity rule, migration silently violates intent. Check `cluster info` first.126- Hardware passthrough: VMs with PCI passthrough (GPU, USB) **cannot live-migrate** — schedule a cold migration window.127128**Steps**:1291. Verify VM state and current host via `vmware-monitor vm info <name>`1302. Verify target host: same cluster, EVC compatible, has required networks/datastores1313. `vmware-aiops vm migrate <name> --to-host <target>` — wait for task completion, do not assume success on return1324. Post-check: `vm info` confirms new host AND power state unchanged AND vNICs connected133134## Usage Mode135136| Scenario | Recommended | Why |137|----------|:-----------:|-----|138| Local/small models (Ollama, Qwen) | **CLI** | ~2K tokens vs ~8K for MCP |139| Cloud models (Claude, GPT-4o) | Either | MCP gives structured JSON I/O |140| Automated pipelines | **MCP** | Type-safe parameters, structured output |141142## MCP Tools (41 — 8 read, 33 write)143144| Category | Tools | R/W |145|----------|-------|:---:|146| VM Lifecycle (13) | `vm_list_ttl`, `vm_list_snapshots` | Read |147| | `vm_power_on`, `vm_power_off`, `vm_clone`, `vm_migrate`, `vm_delete`, `vm_create_snapshot`, `vm_revert_snapshot`, `vm_delete_snapshot`, `vm_set_ttl`, `vm_cancel_ttl`, `vm_clean_slate` | Write |148| Deployment (8) | `deploy_vm_from_ova`, `deploy_vm_from_template`, `deploy_linked_clone`, `attach_iso_to_vm`, `convert_vm_to_template`, `batch_clone_vms`, `batch_linked_clone_vms`, `batch_deploy_from_spec` | Write |149| Guest Ops (5) | `vm_guest_download` | Read |150| | `vm_guest_exec`, `vm_guest_exec_output`, `vm_guest_upload`, `vm_guest_provision` | Write |151| Plan/Apply (4) | `vm_list_plans` | Read |152| | `vm_create_plan`, `vm_apply_plan`, `vm_rollback_plan` | Write |153| Datastore (2) | `browse_datastore`, `scan_datastore_images` | Read |154| Cluster (6) | `cluster_info` | Read |155| | `cluster_create`, `cluster_delete`, `cluster_add_host`, `cluster_remove_host`, `cluster_configure` | Write |156| Alarm Management (3) | `list_vcenter_alarms` | Read |157| | `acknowledge_vcenter_alarm`, `reset_vcenter_alarm` | Write |158159**Read/write split**: 8 tools are read-only (per `[READ]` docstring marker), 33 modify state. All write tools require explicit parameters and are audit-logged. Destructive operations (`vm_delete`, `vm_revert_snapshot`, `vm_delete_snapshot`, force power-off, cluster delete/remove-host, alarm reset) require double confirmation at the CLI layer.160161**Alarm reset blast radius**: vSphere has no per-alarm clear API. `reset_vcenter_alarm` uses `AlarmManager.ClearTriggeredAlarms`, which clears **all** triggered alarms matching the named alarm's entity type (host/VM/all) and current status (red/yellow) — not just the one named. The response's `scope` field states exactly what was cleared. The named alarm is looked up first, so a typo fails fast without clearing anything.162163## CLI Quick Reference164165```bash166# VM operations167vmware-aiops vm power-on <name> [--target <t>]168vmware-aiops vm power-off <name> [--force]169vmware-aiops vm create <name> --cpu 4 --memory 8192 --disk 100170vmware-aiops vm delete <name>171vmware-aiops vm clone <name> --new-name <new> [--to-host <host>] [--to-datastore <ds>] [--power-on]172vmware-aiops vm migrate <name> --to-host <host> [--to-datastore <ds>]173vmware-aiops vm snapshot-create <name> --name <snap> [--description <text>] [--memory]174vmware-aiops vm snapshot-list <name>175vmware-aiops vm snapshot-revert <name> --name <snap>176vmware-aiops vm snapshot-delete <name> --name <snap> [--remove-children]177178# Guest operations (requires VMware Tools)179vmware-aiops vm guest-exec <name> --cmd <script-path> --args "<args>" --user <username>180vmware-aiops vm guest-upload <name> --local ./script.sh --guest /tmp/script.sh --user <username>181182# Deploy183vmware-aiops deploy ova <path> --name <vm> --datastore <ds>184vmware-aiops deploy linked-clone --source <vm> --snapshot <snap> --name <new>185186# Cluster187vmware-aiops cluster create <name> --ha --drs188vmware-aiops cluster info <name>189190# Datastore191vmware-aiops datastore browse <ds> --pattern "*.ova"192193# Alarm management194vmware-aiops alarm list [--target <t>]195vmware-aiops alarm acknowledge <entity_name> <alarm_name> [--target <t>]196vmware-aiops alarm reset <entity_name> <alarm_name> [--target <t>] # double confirm; clears ALL alarms matching entity type + status197198# Family199vmware-aiops hub status # show installed family members + install commands200```201202> Full CLI reference: see `references/cli-reference.md`203204## Troubleshooting205206### "VM not found" error207VM names are case-sensitive in vSphere. Use exact name from `vmware-monitor inventory vms`.208209### Guest exec returns empty output210Use `vm_guest_exec_output` instead of `vm_guest_exec` — it auto-captures stdout/stderr. Basic `vm_guest_exec` only returns exit code.211212### Deploy OVA times out213Large OVA files (>10GB) may exceed the default 120s timeout. The upload happens via HTTP NFC lease — ensure network between the machine running vmware-aiops and ESXi is stable.214215### Plan apply fails mid-way216Run `vmware-aiops plan list` to see failed plan status. Ask user if they want to rollback with `vm_rollback_plan`. Irreversible steps (delete_vm) are skipped during rollback.217218### Connection refused / SSL error2191. Verify target is reachable: `vmware-aiops doctor`2202. For self-signed certs: set `disableSslCertValidation: true` in config.yaml (lab environments only)221222## Setup223224```bash225uv tool install vmware-aiops226mkdir -p ~/.vmware-aiops227vmware-aiops init # generates config.yaml and .env templates228chmod 600 ~/.vmware-aiops/.env229```230231> All tools are automatically audited via vmware-policy. Audit logs: `vmware-audit log --last 20`232233> Full setup guide, security details, and AI platform compatibility: see `references/setup-guide.md`234235## Audit & Safety236237All operations are automatically audited via vmware-policy (`@vmware_tool` decorator):238- Every tool call logged to `~/.vmware/audit.db` (SQLite, framework-agnostic)239- Policy rules enforced via `~/.vmware/rules.yaml` (deny rules, maintenance windows, risk levels)240- Risk classification: each tool tagged as low/medium/high/critical241- View recent operations: `vmware-audit log --last 20`242- View denied operations: `vmware-audit log --status denied`243244vmware-policy is automatically installed as a dependency — no manual setup needed.245246## License247248MIT — [github.com/zw008/VMware-AIops](https://github.com/zw008/VMware-AIops)