Skip to main content

CLI for Proxmox VE

Project description

proxctl

crates.io CI License: MIT

A command-line interface for Proxmox VE -- manage VMs, containers, nodes, storage, and more from your terminal.

Install

# From crates.io
cargo install proxctl

# From PyPI (pre-built binaries, no Rust toolchain needed)
pip install proxctl

# From GitHub Releases (Linux, macOS, Windows)
curl -fsSL https://github.com/rvben/proxctl/releases/latest/download/proxctl-$(uname -m)-unknown-linux-gnu.tar.gz | tar xz

Quick Start

# Interactive setup (creates API token automatically)
proxctl config init

# Check connectivity
proxctl health

# List VMs
proxctl vm list

# Start a VM
proxctl vm start 100

# Show VM configuration
proxctl vm config 100

# List snapshots
proxctl vm snapshot list 100

# Raw API access
proxctl api get /nodes

Features

  • 145+ commands covering VMs, containers, nodes, storage, backups, cluster, firewall, access control, pools, and Ceph
  • Auto-detection -- resolves which node a VM lives on automatically
  • Agent-friendly -- --json output, schema command for introspection, structured exit codes
  • Async task handling -- waits for operations to complete with progress spinner
  • Safe -- destructive operations require --yes confirmation
  • Raw API escape hatch -- proxctl api get/post/put/delete for any endpoint
  • Hidden aliases -- qm for vm, ct for container
  • Idempotent -- starting an already-running VM succeeds without error

Configuration

Config file

~/.config/proxctl/config.toml

[default]
host = "https://192.168.1.1:8006"
token = "root@pam!proxctl=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
insecure = true

[production]
host = "https://pve.example.com:8006"
token = "admin@pam!proxctl=yyyyyyyy-..."

Environment variables

Variable Description
PROXMOX_HOST Proxmox host (e.g. pve.example.com:8006)
PROXMOX_TOKEN API token (user@realm!tokenid=secret)
PROXMOX_PROFILE Config profile name (default: default)
PROXMOX_NODE Default node name

Precedence

CLI flags > environment variables > config file

Usage Examples

Human output (TTY)

$ proxctl vm list
  VMID  NAME                  STATUS      NODE        CPUS      MEMORY
   100  k8s-control-1         running     pve1           4    8.00 GiB
   101  k8s-worker-1          running     pve1           8   16.00 GiB
   200  dev-sandbox            stopped     pve2           2    4.00 GiB

JSON output (piped or --json)

$ proxctl vm list --json | jq '.[].name'
"k8s-control-1"
"k8s-worker-1"
"dev-sandbox"

JSON output is automatic when stdout is not a TTY, so piping to jq, grep, or scripts works without flags.

Agent Integration

The schema command outputs a JSON description of all 145+ commands with their arguments, types, defaults, and behavioral metadata:

proxctl schema | jq '.commands | length'
145

This enables AI agents and automation tools to discover available operations, required parameters, and which commands are mutating or destructive -- without parsing help text.

Comparison

Feature proxctl pvesh (built-in) proxmoxer (Python)
Typed CLI with completions Yes No N/A
Cross-platform binaries Yes No (PVE only) pip install
VMID auto-resolution Yes No Manual
JSON + human output Auto-detect JSON only N/A
Agent schema introspection Yes No No
Idempotent lifecycle ops Yes No Manual

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

proxctl-0.2.0.tar.gz (95.9 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

proxctl-0.2.0-py3-none-win_amd64.whl (3.9 MB view details)

Uploaded Python 3Windows x86-64

proxctl-0.2.0-py3-none-manylinux_2_28_x86_64.whl (3.9 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ x86-64

proxctl-0.2.0-py3-none-manylinux_2_28_aarch64.whl (3.7 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

proxctl-0.2.0-py3-none-macosx_11_0_arm64.whl (3.6 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

proxctl-0.2.0-py3-none-macosx_10_12_x86_64.whl (3.8 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file proxctl-0.2.0.tar.gz.

File metadata

  • Download URL: proxctl-0.2.0.tar.gz
  • Upload date:
  • Size: 95.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for proxctl-0.2.0.tar.gz
Algorithm Hash digest
SHA256 f0e8857d1c3a7aa4fc3209e9220f1ad93d45a11f4ce6c852a05505f08f040104
MD5 04642af0689949a061281cd73ea5717e
BLAKE2b-256 0369bdf53235cd68d197d58544ec9a33183330230eff260f42ab99f5bcab3514

See more details on using hashes here.

File details

Details for the file proxctl-0.2.0-py3-none-win_amd64.whl.

File metadata

  • Download URL: proxctl-0.2.0-py3-none-win_amd64.whl
  • Upload date:
  • Size: 3.9 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for proxctl-0.2.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 aa8140f3eae986aa16d95a19d9678c8b311cdb14c8d416f19a220e297c63f075
MD5 c106ee591834e6db0814d4a3fe576c7e
BLAKE2b-256 7ef3be7121d32cc600df9f5b936425708913d444b0332f2bc43990cb4b82b561

See more details on using hashes here.

File details

Details for the file proxctl-0.2.0-py3-none-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for proxctl-0.2.0-py3-none-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 515295f3cfc8343cd7145aa52484e5853210ceb0b5f34ab168a6a42181aa55b2
MD5 6a61ec656e57ce051a03a679ac5f7328
BLAKE2b-256 6cbe86da4dabedce0cbb669321662fb3074f61a93ecfa5779015332f667416d7

See more details on using hashes here.

File details

Details for the file proxctl-0.2.0-py3-none-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for proxctl-0.2.0-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 563f3847a17ec39c963ce12d2d9d169a9b2c45c31d1c4c2ea046fb6905e60027
MD5 ab00c7e971d3fd505a56a909f7d51992
BLAKE2b-256 8382bd68f652de8f493241701834e30ace0552c34c74433f0774180c95e87ae9

See more details on using hashes here.

File details

Details for the file proxctl-0.2.0-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for proxctl-0.2.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8abf1fa44397db93d7b3264b162dd9187c527012cec8e494ea664c7dbd31fb96
MD5 ab63b5435ef65b8ce81dadc1ff669678
BLAKE2b-256 2142c1751830d17e79fd14b8ac1448e2d61710bbe6c57a75ed824092bbda9cd8

See more details on using hashes here.

File details

Details for the file proxctl-0.2.0-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for proxctl-0.2.0-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 765417ffb0054f180ff4fc42fc1f9c3fb26ce2e1e9baa7b56b4b45ef283d2d31
MD5 2553643433c7f869b9d8507cbeba7beb
BLAKE2b-256 1f65024b46cf2096641b99f91e20bdfb0cc242afbed1c37d9d0b1d5ead21486d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page