CLI for Proxmox VE
Project description
proxctl
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 --
--jsonoutput,schemacommand for introspection, structured exit codes - Async task handling -- waits for operations to complete with progress spinner
- Safe -- destructive operations require
--yesconfirmation - Raw API escape hatch --
proxctl api get/post/put/deletefor any endpoint - Hidden aliases --
qmforvm,ctforcontainer - 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f0e8857d1c3a7aa4fc3209e9220f1ad93d45a11f4ce6c852a05505f08f040104
|
|
| MD5 |
04642af0689949a061281cd73ea5717e
|
|
| BLAKE2b-256 |
0369bdf53235cd68d197d58544ec9a33183330230eff260f42ab99f5bcab3514
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aa8140f3eae986aa16d95a19d9678c8b311cdb14c8d416f19a220e297c63f075
|
|
| MD5 |
c106ee591834e6db0814d4a3fe576c7e
|
|
| BLAKE2b-256 |
7ef3be7121d32cc600df9f5b936425708913d444b0332f2bc43990cb4b82b561
|
File details
Details for the file proxctl-0.2.0-py3-none-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: proxctl-0.2.0-py3-none-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 3.9 MB
- Tags: Python 3, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
515295f3cfc8343cd7145aa52484e5853210ceb0b5f34ab168a6a42181aa55b2
|
|
| MD5 |
6a61ec656e57ce051a03a679ac5f7328
|
|
| BLAKE2b-256 |
6cbe86da4dabedce0cbb669321662fb3074f61a93ecfa5779015332f667416d7
|
File details
Details for the file proxctl-0.2.0-py3-none-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: proxctl-0.2.0-py3-none-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 3.7 MB
- Tags: Python 3, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
563f3847a17ec39c963ce12d2d9d169a9b2c45c31d1c4c2ea046fb6905e60027
|
|
| MD5 |
ab00c7e971d3fd505a56a909f7d51992
|
|
| BLAKE2b-256 |
8382bd68f652de8f493241701834e30ace0552c34c74433f0774180c95e87ae9
|
File details
Details for the file proxctl-0.2.0-py3-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: proxctl-0.2.0-py3-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 3.6 MB
- Tags: Python 3, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8abf1fa44397db93d7b3264b162dd9187c527012cec8e494ea664c7dbd31fb96
|
|
| MD5 |
ab63b5435ef65b8ce81dadc1ff669678
|
|
| BLAKE2b-256 |
2142c1751830d17e79fd14b8ac1448e2d61710bbe6c57a75ed824092bbda9cd8
|
File details
Details for the file proxctl-0.2.0-py3-none-macosx_10_12_x86_64.whl.
File metadata
- Download URL: proxctl-0.2.0-py3-none-macosx_10_12_x86_64.whl
- Upload date:
- Size: 3.8 MB
- Tags: Python 3, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
765417ffb0054f180ff4fc42fc1f9c3fb26ce2e1e9baa7b56b4b45ef283d2d31
|
|
| MD5 |
2553643433c7f869b9d8507cbeba7beb
|
|
| BLAKE2b-256 |
1f65024b46cf2096641b99f91e20bdfb0cc242afbed1c37d9d0b1d5ead21486d
|