Sandbox
@vmware-skills/VMware-AIops

VMware AI skills for Claude Code and MCP

This project packages VMware skills for AI agents that manage vCenter and ESXi. It splits read-only monitoring into a companion skill and keeps write operations in the full aiops skill, with CLI and MCP paths backed by pyVmomi.

72 stars10 forksPythonUpdated 12d ago
Who it's for

Builders who want their agent to monitor, investigate, and operate VMware infrastructure from Claude Code, Codex, or Gemini CLI.

What it delivers

You can investigate VMware health, deploy VMs, and run lifecycle operations without leaving your agent workflow.

What it does

Read-only investigation reports

Runs attention, summary, and VM, host, or datastore investigations that correlate alarms, events, metrics, and related objects before you act.

VM lifecycle and deployment

Handles power, clone, snapshot, migrate, template, OVA, ISO, and batch deployment workflows for vCenter and ESXi.

Cluster and alarm operations

Creates, configures, and removes clusters, manages hosts, and acknowledges or resets alarms.

Guest operations

Runs commands inside guests, and uploads or downloads files when VMware Tools is available.

CLI and MCP interfaces

Provides a terminal CLI plus MCP tools for agent-driven automation and structured calls.

Safety and audit trail

Adds dry-run support, confirmations on CLI writes, validation, audit logs, and prompt-injection sanitizing for logs and events.

How to get it

  1. 1Works with Claude Code, Cursor, Codex, Gemini CLI, Trae, and 30+ AI agents
    # Via Skills.sh
    npx skills add vmware-skills/VMware-AIops
    
    # Via ClawHub
    clawhub install @zw008/vmware-aiops
  2. 2Run
    # Install via uv (recommended)
    uv tool install vmware-aiops
    
    # Or via pip
    pip install vmware-aiops
    
    # China mainland mirror (faster)
    pip install vmware-aiops -i https://pypi.tuna.tsinghua.edu.cn/simple
  3. 3This project uses the modern PEP 517 build system (hatchling), so there is no setup.py…
    # From the source tree — a normal (non-editable) install builds a wheel:
    pip install .              # NOT  pip install -e .
    
    # ...or upgrade pip first, and editable works too:
    pip install --upgrade pip && pip install -e .
  4. 4For a truly air-gapped host, build the wheels on a connected machine and copy them over…
    # On a connected machine, collect this package + its dependencies as wheels:
    pip wheel . -w dist        # → dist/*.whl   (or: uv build, for just this package)
    
    # Copy dist/ to the air-gapped host, then install offline:
    pip install --no-index --find-links dist vmware-aiops
  5. 5Run
    # Python 3.10+ required
    python3 --version
    
    # Node.js 18+ required for Gemini CLI and Codex CLI
    node --version
  6. 6All platforms share the same Python backend.
    git clone https://github.com/vmware-skills/VMware-AIops.git
    cd VMware-AIops
    python3 -m venv .venv
    source .venv/bin/activate
    pip install -e .

README

VMware AIops

Author: Wei Zhou, VMware by Broadcom — wei-wz.zhou@broadcom.com This is a community-driven project by a VMware engineer, not an official VMware product. For official VMware developer tools see developer.broadcom.com.

English | 中文

AI-powered VMware vCenter/ESXi VM lifecycle and deployment tool — 60 tools.

Companion skills handle everything else:

SkillScopeInstall
vmware-monitorRead-only: inventory, health, alarms, events, metricsuv tool install vmware-monitor
vmware-storageDatastores, iSCSI, vSAN managementuv tool install vmware-storage
vmware-vksTanzu Namespaces, TKC cluster lifecycleuv tool install vmware-vks

Need read-only monitoring only? Use VMware-Monitor — zero destructive code in the codebase.

ClawHub Skills.sh Claude Code Marketplace License: MIT

⚡ Quick Investigation Reports (read-only)

Triage → investigate → act, all in one conversation. Five opinionated read-only reports aggregate and correlate server-side and hand back a high-signal result (never raw inventory), so you can decide where to look before changing anything. Each renders a self-contained offline HTML snapshot with --html (no external assets; drill-down detail collapses in native <details>, zero JavaScript). All delegate to the vmware-monitor library using AIops's own vCenter connection.

QuestionCommandWhat it correlates
"What needs attention now?" across all vCentersvmware-aiops attentionEvery vCenter merged into one globally-ranked issue list; unreachable targets degrade gracefully
"Is anything on fire?" across all clustersvmware-aiops summaryEvery cluster's hosts + VM power + live CPU/mem + alarms → ranked top-N issues + per-cluster status
"What's happening around this VM?"vmware-aiops investigate vm <name>VM state + host + cluster + backing datastores + snapshots + alarms + performance + a merged event timeline
"What's happening around this host?"vmware-aiops investigate host <name>Host state + cluster + the VMs it runs + mounted datastores + alarms + performance + correlated timeline
"What's happening around this datastore?"vmware-aiops investigate datastore <name>Capacity/free + mounting hosts + VMs it backs + alarms + correlated timeline
vmware-aiops attention                            # what needs attention now, all vCenters
vmware-aiops investigate vm web-01 --hours 72     # everything around a VM, then act on it
vmware-aiops investigate vm web-01 --html         # → offline snapshot in ~/vmware-health/

Via MCP these are the tools cluster_health_summary, cross_vcenter_attention, vm_investigation_bundle, host_investigation_bundle, datastore_investigation_bundle. (Requires vmware-monitor installed.)

Quick Install (Recommended)

Works with Claude Code, Cursor, Codex, Gemini CLI, Trae, and 30+ AI agents:

# Via Skills.sh
npx skills add vmware-skills/VMware-AIops

# Via ClawHub
clawhub install @zw008/vmware-aiops

PyPI Install (No GitHub Access Required)

# Install via uv (recommended)
uv tool install vmware-aiops

# Or via pip
pip install vmware-aiops

# China mainland mirror (faster)
pip install vmware-aiops -i https://pypi.tuna.tsinghua.edu.cn/simple

Offline / Air-Gapped Install (from source)

This project uses the modern PEP 517 build system (hatchling), so there is no setup.py by design — that is expected, not a missing file. If you cloned the source and hit ERROR: File "setup.py" or "setup.cfg" not found ... editable mode currently requires a setuptools-based build, your pip is older than 21.3 and cannot do an editable (-e) install with a non-setuptools backend. Editable mode is a developer convenience, not needed to run the tool — do one of:

# From the source tree — a normal (non-editable) install builds a wheel:
pip install .              # NOT  pip install -e .

# ...or upgrade pip first, and editable works too:
pip install --upgrade pip && pip install -e .

For a truly air-gapped host, build the wheels on a connected machine and copy them over — the target then needs no network:

# On a connected machine, collect this package + its dependencies as wheels:
pip wheel . -w dist        # → dist/*.whl   (or: uv build, for just this package)

# Copy dist/ to the air-gapped host, then install offline:
pip install --no-index --find-links dist vmware-aiops

Why this over other VMware MCP servers

Most open-source VMware MCP servers (e.g. bright8192/esxi-mcp-server, giuliolibrando/vmware-vsphere-mcp-server) are single-vCenter VM wrappers: list/power/snapshot a VM, basic monitoring, a confirm=True flag. They explicitly do not cover networking, storage, Kubernetes, ops analytics, load balancing, or compliance — and "logging is documented" is not an audit trail.

This is one skill in an 11-package family that covers the whole estate and runs every tool through a governed harness:

Other VMware MCP serversThis family
VM lifecycle + monitoring
NSX networking (segments/gateways/NAT/routing/IPAM)✅ vmware-nsx
NSX security (DFW/groups/IDS-IPS/traceflow)✅ vmware-nsx-security
Storage (datastore/iSCSI/vSAN)✅ vmware-storage
Tanzu Kubernetes (Supervisor/Namespace/TKC)✅ vmware-vks
Aria Operations (metrics/alerts/capacity)✅ vmware-aria
AVI / NSX ALB load balancing + AKO✅ vmware-avi
Compliance baselines + drift (CIS/SCG/等保/PCI)✅ vmware-harden
Governed harness (unified audit, policy engine, token budget + runaway breaker, graduated risk tiers, undo-token, prompt-injection sanitize)✅ vmware-policy on every tool

If you only ever power-cycle VMs in one vCenter, a single-file server is fine. If you run a real (regulated, NSX-segmented, multi-domain) VMware estate and need an AI operator an auditor can sign off on, that's what this family is for — see docs/compliance-ready.md.

Capabilities Overview

What This Skill Does

CategoryToolsCount
VM Lifecyclepower on/off, TTL auto-delete, clean slate6
DeploymentOVA, template, linked clone, batch clone/deploy8
Guest Opsexec commands, upload/download files, provision5
Plan/Applymulti-step planning with rollback4
Clustercreate, delete, HA/DRS config, add/remove hosts6
Datastorebrowse files, scan for images2
NetworkdvSwitch portgroup list/create, host VMkernel list/add/remove, DF-bit MTU-path ping6

CLI vs MCP: Which Mode to Use

ScenarioRecommendedWhy
Local/small models (Ollama, Qwen <32B)CLI~2K tokens context vs ~10K for MCP; small models struggle with many tool schemas
Token-sensitive workflowsCLISKILL.md + Bash tool = minimal overhead
Cloud models (Claude, GPT-4o)EitherBoth work; MCP gives structured JSON I/O
Automated pipelines / Agent chainingMCPType-safe parameters, structured output, no shell parsing
Monitoring / storage / K8sCompanion skillsSee vmware-monitor, vmware-storage, vmware-vks

Rule of thumb: Use CLI for cost efficiency and small models. Use MCP for structured automation with large models.

Architecture

User (Natural Language)
  ↓
AI CLI Tool (Claude Code / Gemini / Codex / Aider / Continue / Trae / Kimi)
  ↓ reads SKILL.md / AGENTS.md / rules
  ↓
vmware-aiops CLI
  ↓ pyVmomi (vSphere SOAP API)
  ↓
vCenter Server ──→ ESXi Cluster ──→ VM
    or
ESXi Standalone Host ──→ VM

Version Compatibility

vSphere / VCF VersionSupportNotes
VCF 9.1 / vSphere 9.1✅ FullReleased 2026-05-12. pyVmomi <10.0 resolves and connects via SOAP; new REST-only features (PATCH /deployment/size, IPv6-only GOSC) not yet wrapped — see VCF Python SDK for those.
VCF 9.0 / vSphere 9.0✅ FullpyVmomi 8.0.3+ connects against vSphere 9 SOAP API. From VCF 9, pyVmomi is also bundled inside the unified VCF Python SDK.
8.0 / 8.0U1-U3✅ FullCreateSnapshot_Task deprecated → use CreateSnapshotEx_Task
7.0 / 7.0U1-U3✅ FullAll APIs supported
6.7✅ CompatibleBackward-compatible, tested
6.5✅ CompatibleBackward-compatible, tested

pyVmomi auto-negotiates the API version during SOAP handshake — no manual configuration needed. The same codebase manages 7.0 / 8.0 / 9.0 / 9.1 environments seamlessly.

Official Broadcom References


Common Workflows

Deploy a Lab Environment

  1. Browse datastore for OVA images → vmware-aiops datastore browse <ds> --pattern "*.ova"
  2. Deploy VM from OVA → vmware-aiops deploy ova ./image.ova --name lab-vm --datastore ds1
  3. Install software inside VM → vmware-aiops vm guest-exec lab-vm --cmd /bin/bash --args "-c 'apt-get install -y nginx'" --user root
  4. Create baseline snapshot → vmware-aiops vm snapshot-create lab-vm --name baseline
  5. Set TTL for auto-cleanup → vmware-aiops vm set-ttl lab-vm --minutes 480

Batch Clone for Testing

  1. Create plan: vm_create_plan with multiple clone + reconfigure steps
  2. Review plan with user (shows affected VMs, irreversible warnings)
  3. Apply: vm_apply_plan executes sequentially, stops on failure
  4. If failed: vm_rollback_plan reverses executed steps
  5. Set TTL on all clones for auto-cleanup

Migrate VM to Another Host

  1. Check VM info via vmware-monitor → verify power state and current host
  2. Migrate: vmware-aiops vm migrate my-vm --to-host esxi-02
  3. Verify migration completed

VM Lifecycle

OperationCommandConfirmationvCenterESXi
Power Onvm power-on <name>
Graceful Shutdownvm power-off <name>Double
Force Power Offvm power-off <name> --forceDouble
Resetvm reset <name>
Suspendvm suspend <name>
Create VMvm create <name> --cpu --memory --disk
Delete VMvm delete <name>Double
Reconfigurevm reconfigure <name> --cpu --memoryDouble
Create Snapshotvm snapshot-create <name> --name <snap>
List Snapshotsvm snapshot-list <name>
Revert Snapshotvm snapshot-revert <name> --name <snap>Double
Delete Snapshotvm snapshot-delete <name> --name <snap> [--no-wait]Double
Task Statusvm task-status <task-id>
Clone VMvm clone <name> --new-name <new>Double
vMotionvm migrate <name> --to-host <host>Double
Set TTLvm set-ttl <name> --minutes <n>Double
Cancel TTLvm cancel-ttl <name>
List TTLsvm list-ttl
Clean Slatevm clean-slate <name> [--snapshot baseline]Double
Guest Execvm guest-exec <name> --cmd /bin/bash --args "..."Double
Guest Exec (with output)vm guest-exec-output <name> --cmd "df -h"
Guest Uploadvm guest-upload <name> --local f.sh --guest /tmp/f.shDouble
Guest Downloadvm guest-download <name> --guest /var/log/syslog --local ./syslog

Guest Operations require VMware Tools running inside the guest OS. guest-exec-output auto-detects Linux/Windows shell and captures stdout/stderr.

Plan → Apply (Multi-step Operations)

For complex operations involving 2+ steps or 2+ VMs, use the plan/apply workflow instead of executing individually:

StepWhat Happens
1. Create PlanAI calls vm_create_plan — validates actions, checks targets in vSphere, generates plan with rollback info
2. ReviewAI shows plan to user: steps, affected VMs, irreversible warnings
3. Applyvm_apply_plan executes sequentially; stops on failure
4. Rollback (if failed)Asks user whether to rollback, then vm_rollback_plan reverses executed steps (irreversible steps skipped)

Plans stored in ~/.vmware-aiops/plans/, auto-deleted on success, auto-cleaned after 24h.

VM Deployment & Provisioning

OperationCommandSpeedvCenterESXi
Deploy from OVAdeploy ova <path> --name <vm>Minutes
Deploy from Templatedeploy template <tmpl> --name <vm>Minutes
Linked Clonedeploy linked-clone --source <vm> --snapshot <snap> --name <new>Seconds
Attach ISOdeploy iso <vm> --iso "[ds] path/to.iso"Instant
Convert to Templatedeploy mark-template <vm>Instant
Batch Clonedeploy batch-clone --source <vm> --count <n>Minutes
Batch Deploy (YAML)deploy batch spec.yamlAuto

Cluster Management

OperationCommandConfirmationvCenterESXi
Cluster Infocluster info <name>
Create Clustercluster create <name> [--ha] [--drs]
Delete Clustercluster delete <name>Double
Add Hostcluster add-host <cluster> --host <host>Double
Remove Hostcluster remove-host <cluster> --host <host>Double
Configure HA/DRScluster configure <name> [--ha/--no-ha] [--drs/--no-drs]Double

remove-host requires the host to be in maintenance mode first; the host is moved out of the cluster into the datacenter's host folder as a standalone host.

Alarm Management

OperationCommandConfirmationvCenterESXi
List Triggered Alarmsalarm list [--target <t>]
Acknowledge Alarmalarm acknowledge <entity> <alarm>
Clear (Reset) Alarmsalarm reset <entity> <alarm>Double

Blast radius: vSphere has no per-alarm clear API. alarm reset 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 named one. The named alarm is looked up first (typos fail fast), and the output's scope field reports exactly what was cleared. Cleared alarms re-trigger automatically if their underlying condition persists.

Datastore Browser

FeaturevCenterESXiDetails
Browse FilesList files/folders in any datastore path
Scan ImagesDiscover ISO, OVA, OVF, VMDK across all datastores

Scheduled Scanning & Notifications

FeatureDetails
DaemonAPScheduler-based, configurable interval (default 15 min)
Multi-target ScanSequentially scan all configured vCenter/ESXi targets
Scan ContentAlarms + Events + Host logs (hostd, vmkernel, vpxd)
Log AnalysisRegex pattern matching: error, fail, critical, panic, timeout, corrupt
Structured LogJSONL output to ~/.vmware-aiops/scan.log
WebhookSlack, Discord, or any HTTP endpoint
Daemon Managementdaemon start/stop/status, PID file, graceful shutdown

Safety Features

FeatureDetails
Dry-Run Mode (CLI only)--dry-run on any destructive CLI command prints exact API calls without executing
Plan → Confirm → Execute → LogCLI workflow: show current state, confirm changes, execute, audit log
Double Confirmation (CLI only)Destructive CLI commands (power-off, delete, reconfigure, snapshot-revert/delete, clean-slate, guest-exec, guest-upload, cluster delete/remove-host, alarm clear) require 2 sequential prompts and take no bypass flag
No confirmation on the MCP pathThe 43 write tools an agent sees over MCP act on the first call — no confirmed= handshake, no approval tier, no read-only switch. What decides whether a write lands is the privilege of the vCenter account, and what records it is the audit trail. See What protects you
Rejection LoggingDeclined CLI confirmations are recorded in the audit trail
Audit TrailAll operations logged to ~/.vmware-aiops/audit.log (JSONL) with before/after state
Input ValidationVM name, CPU (1-128), memory (128-1048576 MB), disk (1-65536 GB) validated
Password Protection.env file loading with permission check; never in shell history
SSL Self-signed Supportverify_ssl: false — only for ESXi with self-signed certs in isolated labs; production should use CA-signed certificates
Prompt Injection ProtectionvSphere event messages and host logs are truncated, stripped of control characters, and wrapped in boundary markers before output
Webhook Data ScopeSends notifications to user-configured URLs only — no third-party services by default
Task WaitingAll async operations wait for completion and report result
State ValidationPre-operation checks (VM exists, power state correct)

vCenter vs ESXi Comparison

CapabilityvCenterESXi Standalone
vMotion migration
Cross-host clone
Cluster management
All VM lifecycle ops
OVA/Template/Linked Clone deploy
Datastore browsing & image scan
Snapshots
Guest operations

Inventory, alarms, events, sensors, host services, and scanning are now in vmware-monitor.

What protects you

The table above lists two different surfaces and it is worth being blunt about which protections apply to which, because getting this wrong is worse than having no protection at all — a guardrail you believe in is one you stop compensating for.

On the CLI, a destructive command asks twice and takes no bypass flag, and --dry-run previews any write. That defends a mistyped command typed by a human. It does not defend against an agent, which satisfies both prompts with yes |.

Over MCP, there is no confirmation step at all. All 43 write tools — vm_delete, cluster_delete, vm_guest_exec among them — act on the first call. Seven host-networking and DRS tools take a confirm argument that defaults to a no-write preview, but that is a preview switch, not an approval gate: one more call is all it takes. This is deliberate. A confirmed= handshake was considered in July 2026 and cut, along with the earlier VMWARE_READ_ONLY switch, because neither was a real boundary — the switch was enforced on the MCP path only and any agent with a shell walked around it via the CLI, and a handshake is a speed-bump a model that intends to act steps over.

What actually decides whether a write lands is the vCenter/ESXi service account. Give the skill an account with the privileges the work needs and no more; vCenter refuses the rest itself, on every surface, with no way around it from inside this skill. To run an agent read-only, give it a read-only vCenter role — one decision, enforced where it is made. Every call is then recorded in ~/.vmware/audit.db before the caller sees a result, which is how you find out what happened.

vm_guest_exec is the one to think hardest about. It runs a caller-supplied command inside the guest OS with the credentials handed to it, which the documentation's own example makes root; nothing bounds what the command may be. The guest account is a separate authorization boundary from the vCenter one — a read-only vCenter role does not constrain what this tool does inside a VM. If you do not need guest operations, do not configure guest credentials.

The full inventory of which tools are gated and which are not is in references/capabilities.md, where the numbers are checked against the live tool registry by the test suite rather than maintained by hand.


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

  1. Verify target is reachable: vmware-aiops doctor
  2. For self-signed certs: set verify_ssl: false in config.yaml (lab environments only)

Supported AI Platforms

PlatformStatusConfig FileAI Model
Claude Code✅ Native Skillskills/vmware-aiops/SKILL.mdAnthropic Claude
Gemini CLI✅ Context file + MCPskills/vmware-aiops/SKILL.mdGoogle Gemini
OpenAI Codex CLI✅ Skill + AGENTS.mdskills/vmware-aiops/SKILL.mdOpenAI GPT
Aider✅ Conventionsskills/vmware-aiops/SKILL.mdAny (cloud + local)
Continue CLI✅ Rulesskills/vmware-aiops/SKILL.mdAny (cloud + local)
Trae IDE✅ Rulesskills/vmware-aiops/SKILL.mdClaude/DeepSeek/GPT-4o/Doubao
Kimi Code CLI✅ Skillskills/vmware-aiops/SKILL.mdMoonshot Kimi
MCP Server✅ MCP Protocolvmware_aiops/mcp_server/Any MCP client
Python CLI✅ StandaloneN/AN/A

Platform Comparison

FeatureClaude CodeGemini CLICodex CLIAiderContinueTrae IDEKimi CLI
Cloud AIAnthropicGoogleOpenAIAnyAnyMultiMoonshot
Local modelsOllamaOllama
Skill systemSKILL.mdContext fileSKILL.mdRulesRulesSKILL.md
MCP supportNativeNativeVia SkillsThird-p

Files in the repo

Repository payload22 top-level entries
  • .claude-plugin
  • .github
  • docs
  • examples
  • skills
  • tests
  • vmware_aiops
  • .env.example
  • .gitignore
  • .mcp.json
  • config.example.yaml
  • docker-compose.yml
  • Dockerfile
  • LICENSE
  • pyproject.toml
  • README-CN.md
  • README.md
  • RELEASE_NOTES.md
  • SECURITY.md
  • server.json
  • smithery.yaml
  • uv.lock

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More skills

obra/
superpowers

An agentic skills framework & software development methodology that works.

285k
1 add

Turn any codebase, with its docs, SQL schemas, configs, and PDFs, into a queryable knowledge graph. A /graphify skill for Claude Code, Cursor, Codex, and Gemini CLI: local deterministic AST parsing, every edge explained, no vector store.

117k
1 add
Vincentwei1021/
anything2explainer

Topic in, narrated explainer video out. A Claude Code / Codex skill that turns any topic into a black-canvas motion-graphics explainer video with TTS voiceover, subtitles and a chapter progress bar. Chinese or English; every frame drawn in code with Remotion.

666

Open-source AI job search: scan job portals, evaluate listings into a structured A-H report with a global 1-5 score, tailor your CV, track applications — runs locally in your AI coding CLI (Claude Code, Codex, OpenCode, Antigravity…)

71k