Nutanix AIops
Disclaimer: Community-maintained open-source project, not affiliated with, endorsed by, or sponsored by Nutanix. Product and trademark names belong to their owners. Source at github.com/AIops-tools/Nutanix-AIops under the MIT license.
Governed Nutanix Prism Central (v4 REST API) operations — 51 MCP tools, every one wrapped with the bundled @governed_tool harness: a local unified audit log under ~/.nutanix-aiops/, token/runaway budget guard, undo-token recording, and descriptive risk-tier labels. The Prism Central password is stored encrypted (~/.nutanix-aiops/secrets.enc, Fernet + scrypt) — never plaintext on disk.
What sets it apart from read-only Nutanix MCPs: (1) automatic ETag / If-Match on every mutation — the v4 footgun handled for you; (2) automatic pagination; (3) mixed-hypervisor VM listing (AHV + ESXi, relevant to hypervisor-migration estates); and (4) the governance harness with dry-run + double-confirm on destructive writes.
Standalone: the governance harness is bundled in the package (
nutanix_aiops.governance) — no external skill-family dependency.
What This Skill Does
| Group | Tools | Count | Read / Write |
|---|---|---|---|
| Clusters | cluster_list, cluster_health, host_list, cluster_utilization | 4 | 4 read |
| VMs | list, get, power_on, guest_shutdown, power_off, reboot, create, update, clone, delete, migrate | 11 | 2 read · 9 write |
| Storage | container list / create / update / delete | 4 | 1 read · 3 write |
| Network | subnet list / get / create / delete | 4 | 2 read · 2 write |
| Catalog | image list / delete, category list / create / assign | 5 | 2 read · 3 write |
| Data protection / DR | snapshot list/create/delete/restore, recovery_point_list, protection_domain_list, vm_protect, pd_failover | 8 | 3 read · 5 write |
| Alerts | alert_list, event_list, audit_list, analyze_alert (RCA), alert_acknowledge, alert_resolve | 6 | 4 read · 2 write |
| LCM (upgrades) | lcm_inventory, lcm_precheck, lcm_update | 3 | 1 read · 2 write |
| Capacity | task_list, capacity_runway | 2 | 2 read |
| Diagnostics / RCA | cluster_health_rca, alert_triage_rca | 2 | 2 read |
| Undo | undo_list, undo_apply |
2 | 1 read · 1 write |
| Total | 51 | 24 read · 27 write |
The CLI is a convenience subset; the full 51-tool surface is via the MCP server. See references/capabilities.md for the tool → API-path → returns map.
Quick Install
uv tool install nutanix-aiops
nutanix-aiops init # interactive wizard: PC host/port 9440/username + encrypted password
nutanix-aiops doctor # connectivity + REST-RBAC preflight
When to Use This Skill
- Diagnose the estate in one shot (
diagnose cluster-health): degraded resiliency, storage pools/containers over 80% / 90%, nodes down or missing — worst-first, each finding citing the measured number - Triage the alert backlog (
diagnose alert-triage): per-severity counts, unacknowledged criticals, the oldest unresolved alert and its age - Inspect the estate (
overview,cluster health,cluster util): clusters, hosts, resiliency, utilization - VM lifecycle across AHV + ESXi (
vm list/get/power/create/update/clone), and guarded destructive ops (vm delete,vm migrate) with dry-run + double-confirm - Root-cause an alert (
analyze_alert) — correlate it with related events into a probable-cause + suggested-actions summary - Data protection: snapshots, recovery points, protection domains,
vm_protect,pd_failover - Upgrades (
lcm_inventory→lcm_precheck→lcm_update) and capacity forecasting (capacity_runway)
Do NOT use when the target is a non-Nutanix platform — this skill is Prism Central v4 only. For other infrastructure, use the appropriate other AIops-tools sibling.
Common Workflows
"Something is wrong with the estate" → diagnose, then act
nutanix-aiops diagnose cluster-health→ worst-first findings, e.g.critical · prod-cluster · storage container near full · 93.0% used >= 90.0% thresholdstorage_container_list→ confirm which container it is and what itsmaxCapacityBytes/logicalUsageBytesactually arerecovery_point_list/snapshot_list <vm_ext_id>→ the usual culprit is snapshot sprawl in that containersnapshot_delete <…> --dry-runto preview, then re-run to reclaim space — optionally setNUTANIX_AUDIT_APPROVED_BYfirst to annotate who authorized it; each deletion is audited and records an undo descriptor- Re-run
diagnose cluster-health→ the finding should drop below the 80% warning threshold; the before/after percentages are your evidence
Triage a cluster alert (RCA)
nutanix-aiops diagnose alert-triage(oralert_list) → per-severity counts and the oldest unresolved alert, so you know which extId to open firstanalyze_alert <alert_ext_id>→ probable cause + suggested actions, built by correlating the alert with relatedevent_listrecords- Confirm blast radius with
cluster_health/cluster_utilization, thenalert_acknowledge(oralert_resolveonce fixed)
Safely delete a VM (high-risk, audited)
vm_get <vm_ext_id>→ confirm it's the right VM (and see its ETag)nutanix-aiops vm delete <vm_ext_id> --dry-run→ preview the exactDELETEcall- Optionally annotate who/why:
export NUTANIX_AUDIT_APPROVED_BY=… NUTANIX_AUDIT_RATIONALE=… - Re-run without
--dry-run(double-confirm at the CLI); the call is audited with tier and any approver/rationale supplied
Snapshot sprawl cleanup
recovery_point_list(or per-VMsnapshot_list <vm_ext_id>) → find stale / redundant snapshotssnapshot_delete <…> --dry-runon each candidate → preview- Re-run without dry-run (HIGH risk, double-confirm at the CLI) to reclaim space; each deletion is audited
Capacity runway
cluster_utilization <cluster_ext_id>→ current CPU / memory / storage / IOPScapacity_runway→ days-to-full forecast per resource; use it to schedule anlcmexpansion or storage add before you hit the wall
Migrate a VM to another host (reversible)
host_list→ pick the destination host extIdnutanix-aiops vm migrate <vm_ext_id> <target_host_ext_id> --dry-run→ preview- Re-run without dry-run (HIGH, double-confirm); the prior host is captured as an undo descriptor so a regression can be reversed
Governance & Safety
The skill delivers reads and writes and records them; it does not decide whether a write is permitted. That is your agent's judgement, or the permission of the account you connect it with (connect with a Prism Central account holding only a read-only (Viewer) role — writes then fail at the server). There is no read-only switch, policy file, or approval gate.
- Audit is the guarantee, and it is not bypassable. Every operation — MCP and CLI alike — is logged to
~/.nutanix-aiops/audit.db(relocatable viaNUTANIX_AIOPS_HOME): params, result, status, duration, and the risk tier. The CLI writes the same row the MCP path does. NUTANIX_AUDIT_APPROVED_BY/NUTANIX_AUDIT_RATIONALEare optional annotations recorded on the audit row (who/why); they are never required and never block.- Runaway guard — a safety backstop, not authorization: the same call looped in a tight window trips a circuit breaker. Disable with
NUTANIX_RUNAWAY_MAX=0. - Every mutation auto-handles ETag / If-Match; every list auto-paginates.
- Destructive writes support
dry_run/--dry-runand, at the CLI, double confirmation. - Reversible writes record an undo descriptor (
vm_update→ prior CPU/memory,vm_migrate→ prior host).
References
references/capabilities.md— full 51-tool + API-path referencereferences/cli-reference.md— CLI command referencereferences/setup-guide.md— onboarding, credentials, REST-RBAC, CE self-testreferences/agent-guardrails.md— which guardrails the harness enforces for you, and a ready-to-paste system prompt for smaller / local models