proxmox-vm

agentydragon's avatarfrom agentydragon

Interact with Proxmox VMs - screenshots, keystrokes, network info (user)

⭐0stars🔀0forks📁View on GitHub🕐Updated Jan 4, 2026

When & Why to Use This Skill

This Claude skill enables direct interaction with Proxmox Virtual Machines via the QEMU monitor. It empowers users to perform low-level VM management tasks such as capturing screenshots, simulating complex keystrokes, and retrieving real-time network information, bridging the gap between AI reasoning and virtualized infrastructure control.

Use Cases

  • Visual Troubleshooting: Capture real-time screenshots of VM consoles to diagnose boot failures, kernel panics, or GUI errors when SSH is unreachable.
  • Automated Provisioning: Automate initial OS setup and configuration by sending sequential keystrokes and commands to the VM console.
  • Network Inventory Management: Retrieve guest network interface details and IP addresses directly via the Proxmox guest agent for dynamic environment mapping.
  • Remote System Administration: Execute emergency system commands or interact with BIOS/bootloader menus using specific QEMU key codes like Ctrl+Alt+Del or function keys.
nameproxmox-vm
descriptionInteract with Proxmox VMs - screenshots, keystrokes, network info (user)

Proxmox VM Interaction

Interact with VMs on Proxmox via QEMU monitor. Actions execute sequentially in command-line order.

Usage

~/.claude/skills/proxmox-vm/vm-interact.py <vmid> [actions...]

Actions

Action Description
--screenshot, -s Take screenshot, save to ~/.cache/proxmox-vm/vm<id>/<timestamp>.png
--type "text", -t "text" Type text (converts chars to QEMU keys)
--enter, -e Press Enter
--sendkey <key>, -k <key> Send QEMU key code (e.g., ctrl-c, ret, shift-a)
--info, -i Show VM network interfaces via guest agent
--sleep <secs> Sleep between actions
--stdin Read commands from stdin (one per line)

Examples

# Take screenshot
./vm-interact.py 110 --screenshot

# Type command and press Enter
./vm-interact.py 110 --type "ip addr" --enter

# Log in and run command
./vm-interact.py 110 --type "root" --enter --sleep 0.5 --type "password" --enter

# Send Ctrl+C then screenshot
./vm-interact.py 110 --sendkey ctrl-c --screenshot

# Get network info
./vm-interact.py 110 --info

# From stdin
echo -e "type ip addr\nenter\nsleep 1\nscreenshot" | ./vm-interact.py 110 --stdin

QEMU Key Names

Common keys: a-z, 0-9, ret (Enter), spc (Space), tab, minus, equal, comma, dot, slash, backslash, semicolon, apostrophe, bracket_left, bracket_right, grave_accent

Modifiers: shift-X, ctrl-X, alt-X (e.g., shift-a for 'A', ctrl-c for Ctrl+C)

stdin Format

One command per line:

screenshot
type ip addr
enter
sendkey ctrl-c
info
sleep 1.5
# comments start with #