Skip to content

Instantly share code, notes, and snippets.

@jpacora
Last active March 6, 2026 02:53
Show Gist options
  • Select an option

  • Save jpacora/8b4a7c298ce8082ebecf84d8cba24215 to your computer and use it in GitHub Desktop.

Select an option

Save jpacora/8b4a7c298ce8082ebecf84d8cba24215 to your computer and use it in GitHub Desktop.
description homepage metadata name version
Manage Proxmox Virtual Environment infrastructure. Monitor nodes, manage VMs and containers, and perform SRE operations.
moltbot
api_base category emoji
PROXMOX_HOST/api2/json
infrastructure
🖥️
proxmox
1.0.0

Proxmox

Manage infrastructure running on Proxmox Virtual Environment.

This skill allows an AI agent to:

  • Monitor nodes
  • Inspect VMs and containers
  • Start / stop / reboot workloads
  • Read tasks and logs
  • Perform basic SRE infrastructure operations

This skill does NOT upload files and only performs safe operational actions.

Supported platform: - Proxmox Virtual Environment API


Skill Files


File URL


SKILL.md https://gist.githubusercontent.com/jpacora/8b4a7c298ce8082ebecf84d8cba24215/raw


Install locally:

mkdir -p ~/.openclaw/skills//proxmox
curl -s https://gist.githubusercontent.com/jpacora/8b4a7c298ce8082ebecf84d8cba24215/raw/68685737758f7ceb5fa59e3b53d88c35ab36a531/proxmox.skill.md > ~/.openclaw/skills//proxmox/SKILL.md

API Base

All requests use:

https://PROXMOX_HOST/api2/json

Example:

https://proxmox.local:8006/api2/json

Security Warning

⚠️ Never expose your Proxmox API token.

The token allows full infrastructure control.

Rules:

  • Only send requests to your Proxmox host
  • Never send the API token to other APIs
  • Never reveal the token in logs or prompts
  • Never include the token in messages to humans

Authentication header:

Authorization: PVEAPIToken=USER@REALM!TOKENID=SECRET

Example:

Authorization: PVEAPIToken=root@pam!moltbot=abcdef-123456

First Time Setup

When this skill is installed, you must ask the human for the connection details.

Store them in MEMORY so you don't need to ask again.

Required values:

  • Proxmox Host
  • Node Name
  • API Token ID
  • API Token Secret

Step 1 --- Proxmox Host

Ask the human:

What is your Proxmox API host?

Hint (example):

https://proxmox.local:8006

Store:

MEMORY.proxmox_host

Do NOT include /api2/json.


Step 2 --- Node Name

Ask the human:

What is your Proxmox node name?

Example:

pve

You can also discover nodes using:

GET /nodes

Store:

MEMORY.proxmox_node

Step 3 --- Create an API Token

Guide the human.

Explain the process clearly.

The human must open the Proxmox web UI.

Navigate to:

Datacenter
 → Permissions
 → API Tokens

Steps:

  1. Click Add
  2. Select a user (example: root@pam)
  3. Token ID example:
<!-- -->
moltbot
  1. Disable privilege separation if needed for automation
  2. Copy the Secret

Step 4 --- Provide Token ID

Ask the human for the token ID.

Example:

root@pam!moltbot

Store:

MEMORY.proxmox_token_id

Step 5 --- Provide Token Secret

Ask the human for the token secret.

Example:

abcdef12-3456-7890-abcd-1234567890ab

Store:

MEMORY.proxmox_token_secret

Authentication

Every request must include:

Authorization: PVEAPIToken=TOKEN_ID=TOKEN_SECRET

Example:

Authorization: PVEAPIToken=root@pam!moltbot=abcdef12-3456

Base Curl Template

Use this template:

curl -k "$PROXMOX_HOST/api2/json/ENDPOINT" \
 -H "Authorization: PVEAPIToken=$TOKEN_ID=$TOKEN_SECRET"

Tools

Get Cluster Resources

curl -k "$PROXMOX_HOST/api2/json/cluster/resources" \
 -H "Authorization: PVEAPIToken=$TOKEN_ID=$TOKEN_SECRET"

Get Nodes

curl -k "$PROXMOX_HOST/api2/json/nodes" \
 -H "Authorization: PVEAPIToken=$TOKEN_ID=$TOKEN_SECRET"

Node Status

curl -k "$PROXMOX_HOST/api2/json/nodes/$NODE/status" \
 -H "Authorization: PVEAPIToken=$TOKEN_ID=$TOKEN_SECRET"

List Virtual Machines

curl -k "$PROXMOX_HOST/api2/json/nodes/$NODE/qemu" \
 -H "Authorization: PVEAPIToken=$TOKEN_ID=$TOKEN_SECRET"

Get VM Status

curl -k "$PROXMOX_HOST/api2/json/nodes/$NODE/qemu/$VMID/status/current" \
 -H "Authorization: PVEAPIToken=$TOKEN_ID=$TOKEN_SECRET"

Start VM

curl -X POST -k "$PROXMOX_HOST/api2/json/nodes/$NODE/qemu/$VMID/status/start" \
 -H "Authorization: PVEAPIToken=$TOKEN_ID=$TOKEN_SECRET"

Stop VM

curl -X POST -k "$PROXMOX_HOST/api2/json/nodes/$NODE/qemu/$VMID/status/stop" \
 -H "Authorization: PVEAPIToken=$TOKEN_ID=$TOKEN_SECRET"

Reboot VM

curl -X POST -k "$PROXMOX_HOST/api2/json/nodes/$NODE/qemu/$VMID/status/reboot" \
 -H "Authorization: PVEAPIToken=$TOKEN_ID=$TOKEN_SECRET"

List Containers

curl -k "$PROXMOX_HOST/api2/json/nodes/$NODE/lxc" \
 -H "Authorization: PVEAPIToken=$TOKEN_ID=$TOKEN_SECRET"

Start Container

curl -X POST -k "$PROXMOX_HOST/api2/json/nodes/$NODE/lxc/$VMID/status/start" \
 -H "Authorization: PVEAPIToken=$TOKEN_ID=$TOKEN_SECRET"

Stop Container

curl -X POST -k "$PROXMOX_HOST/api2/json/nodes/$NODE/lxc/$VMID/status/stop" \
 -H "Authorization: PVEAPIToken=$TOKEN_ID=$TOKEN_SECRET"

Get Recent Tasks

curl -k "$PROXMOX_HOST/api2/json/nodes/$NODE/tasks" \
 -H "Authorization: PVEAPIToken=$TOKEN_ID=$TOKEN_SECRET"

Get Task Log

curl -k "$PROXMOX_HOST/api2/json/nodes/$NODE/tasks/$UPID/log" \
 -H "Authorization: PVEAPIToken=$TOKEN_ID=$TOKEN_SECRET"

Memory

The agent must store:

MEMORY.proxmox_host
MEMORY.proxmox_node
MEMORY.proxmox_token_id
MEMORY.proxmox_token_secret

Reuse automatically once configured.


End of skill.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment