VMware AIops Extension
This tutorial covers how to add vmware-aiops as a goose extension, enabling natural language management of VMware vCenter and ESXi infrastructure. With this extension, goose can list VMs, check health, power on/off machines, deploy from templates, run commands inside VMs, and orchestrate multi-step operations with automatic rollback.
- goose Desktop
- goose CLI
Install vmware-aiops first:
uv tool install vmware-aiops
vmware-aiops mcp-config install --agent goose
uv tool install vmware-aiops
vmware-aiops mcp-config install --agent goose
Configuration
You need uv and a running VMware vCenter Server or ESXi host. VMware Tools must be running inside guest VMs for Guest Operations features.
Step 1: Install and configure credentials
uv tool install vmware-aiops
mkdir -p ~/.vmware-aiops
cat > ~/.vmware-aiops/config.yaml << 'EOF'
targets:
my-vcenter:
host: vcenter.example.com
username: administrator@vsphere.local
password_env: VMWARE_PASSWORD
verify_ssl: false
EOF
echo "VMWARE_PASSWORD=your_password" > ~/.vmware-aiops/.env
chmod 600 ~/.vmware-aiops/.env
Step 2: Verify connectivity
vmware-aiops doctor
Step 3: Add to goose
- goose Desktop
- goose CLI
- Launch the installer
- Click
Yesto confirm the installation - Obtain your VMWARE_AIOPS_CONFIG and paste it as a environment variable
- Click
Add Extension - Click the button in the top-left to open the sidebar
- Navigate to the chat
- Run the
configurecommand:
goose configure
- Choose to add a
Command-line Extension.
┌ goose-configure
│
◇ What would you like to configure?
│ Add Extension
│
◆ What type of extension would you like to add?
│ ○ Built-in Extension
│ ● Command-line Extension (Run a local command or script)
│ ○ Remote Extension (Streamable HTTP)
└
- Give your extension a name.
┌ goose-configure
│
◇ What would you like to configure?
│ Add Extension
│
◇ What type of extension would you like to add?
│ Command-line Extension
│
◆ What would you like to call this extension?
│ vmware-aiops
└
- Enter the command to run when this extension is used.
┌ goose-configure
│
◇ What would you like to configure?
│ Add Extension
│
◇ What type of extension would you like to add?
│ Command-line Extension
│
◇ What would you like to call this extension?
│ vmware-aiops
│
◆ What command should be run?
│ uvx --from vmware-aiops vmware-aiops-mcp
└
- Enter the number of seconds goose should wait for actions to complete before timing out. Default is
300seconds.
┌ goose-configure
│
◇ What would you like to configure?
│ Add Extension
│
◇ What type of extension would you like to add?
│ Command-line Extension
│
◇ What would you like to call this extension?
│ vmware-aiops
│
◇ What command should be run?
│ uvx --from vmware-aiops vmware-aiops-mcp
│
◆ Please set the timeout for this tool (in secs):
│ 300
└
- Enter a description for this extension.
┌ goose-configure
│
◇ What would you like to configure?
│ Add Extension
│
◇ What type of extension would you like to add?
│ Command-line Extension
│
◇ What would you like to call this extension?
│ vmware-aiops
│
◇ What command should be run?
│ uvx --from vmware-aiops vmware-aiops-mcp
│
◇ Please set the timeout for this tool (in secs):
│ 300
│
◆ Enter a description for this extension:
│ Natural language VMware vCenter/ESXi monitoring and operations
└
- Add an environment variable for this extension.
VMWARE_AIOPS_CONFIG to the absolute path of your config.yaml. See the vmware-aiops repository for full setup instructions.┌ goose-configure
│
◇ What would you like to configure?
│ Add Extension
│
◇ What type of extension would you like to add?
│ Command-line Extension
│
◇ What would you like to call this extension?
│ vmware-aiops
│
◇ What command should be run?
│ uvx --from vmware-aiops vmware-aiops-mcp
│
◇ Please set the timeout for this tool (in secs):
│ 300
│
◇ Enter a description for this extension:
│ Natural language VMware vCenter/ESXi monitoring and operations
│
◆ Would you like to add environment variables?
│ Yes
│
◇ Environment variable name:
│ VMWARE_AIOPS_CONFIG
│
◇ Environment variable value:
│ /Users/you/.vmware-aiops/config.yaml
│
◇ Add another environment variable?
│ No
│
└ Added vmware-aiops extension
Example Usage
In this example, I'll use goose to perform a daily health check across my vCenter environment and remediate a disk space issue on a VM — all via natural language.
goose Prompt
Check the health of my vCenter environment. Show any active alarms and
powered-off VMs that haven't been used recently. If datastore usage is
above 85%, tell me which VMs are using the most space.
goose Output
I'll start with a full health check of your vCenter environment.
--- get_alarms ---
Found 2 active alarms:
- esxi-03: CPU ready > 5% (Warning) — sustained for 2 hours
- datastore02: 87% capacity used (Critical) ← needs attention
--- list_virtual_machines (power_state=poweredOff) ---
4 powered-off VMs found:
- vm-test-old (last powered on: 21 days ago)
- vm-dev-unused (last powered on: 14 days ago)
- vm-staging-v1 (last powered on: 8 days ago)
- vm-backup-runner (last powered on: 3 days ago)
--- browse_datastore (datastore02) ---
Largest consumers on datastore02:
1. vm-db-prod: 320 GB (snapshots not cleaned up)
2. vm-web-cluster: 180 GB
3. vm-test-old: 95 GB (powered off)
Recommendation: Delete vm-test-old (powered off 21 days, 95 GB) to free
space immediately. Also, vm-db-prod has stale snapshots — consolidating
them would recover ~120 GB.
Shall I create a plan to remove vm-test-old and consolidate vm-db-prod snapshots?
Yes, go ahead.
--- vm_create_plan ---
Plan created:
Step 1: Power off check for vm-test-old (already off ✓)
Step 2: Delete vm-test-old
Step 3: Consolidate snapshots on vm-db-prod
⚠️ Step 2 is irreversible. Step 3 is safe (read-only snapshot merge).
--- vm_apply_plan ---
Step 1/3: Verified vm-test-old is powered off ✓
Step 2/3: Deleted vm-test-old — freed 95 GB ✓
Step 3/3: Consolidated vm-db-prod snapshots — freed 118 GB ✓
datastore02 is now at 64% capacity. All alarms should clear within 5 minutes.