Terminal UI for Proxmox VE
pvetui
A Terminal User Interface For Proxmox Virtual Environment
Features • Screenshots • Installation • Configuration • Usage • CLI • Theming • VNC Console • Support
pvetui non-interactively from scripts or AI agent workflows — list/show nodes, guests, and tasks; create and migrate VMs/LXCs; manage storage content, download templates and OCI images, and restore backupsNode Management - Real-time cluster monitoring and control
Guest Management - VM and container operations
** See docs/SCREENSHOTS.md for a complete showcase of all available screenshots and interface features**
Recommended for Go users: pvetui now supports one-command install using Go modules!
go install github.com/devnullvoid/pvetui/cmd/pvetui@latestFrom Pre-compiled Binaries:
./pvetuiLinux DEB/RPM Packages:
Prebuilt .deb and .rpm packages are published with each GitHub release. Download the package for your architecture from Releases, then install it with your system package manager:
# Debian/Ubuntu
sudo apt install ./pvetui_*_linux_amd64.deb
# Fedora/RHEL/openSUSE
sudo dnf install ./pvetui_*_linux_amd64.rpmLinux Package Repository (Cloudsmith):
# Debian/Ubuntu
curl -sLf 'https://dl.cloudsmith.io/public/devnullvoid/pvetui/cfg/setup/bash.deb.sh' | sudo bash
sudo apt update
sudo apt install pvetui
# Fedora/RHEL/openSUSE
curl -sLf 'https://dl.cloudsmith.io/public/devnullvoid/pvetui/cfg/setup/bash.rpm.sh' | sudo bash
sudo dnf install pvetuiPackage repository hosting is graciously provided by Cloudsmith as free hosting for open-source projects.
macOS Users: You may encounter Gatekeeper warnings with pre-compiled binaries. See Troubleshooting Guide for solutions including bypassing the warning or building from source.
Arch Linux (AUR):
# Binary package (recommended)
yay -S pvetui-bin
# Build release package from source
yay -S pvetui
# OR build from source
yay -S pvetui-gitmacOS (Homebrew Cask):
# Install directly from the tap (brew will auto-clone devnullvoid/homebrew-pvetui)
brew install --cask devnullvoid/pvetui/pvetuiWindows (Scoop):
# Add the bucket
scoop bucket add pvetui https://github.com/devnullvoid/scoop-pvetui
# Install pvetui
scoop install pvetuiFrom Source:
git clone https://github.com/devnullvoid/pvetui.git
cd pvetui
make install # Build and install from source
# or: make install-go # Install via Go toolchain--config-wizardpvetui uses a modern multi-profile configuration format that supports multiple Proxmox connections:
…vm_ssh_user is optional; when omitted, pvetui reuses ssh_user. Set it if your Proxmox host SSH account differs from the accounts you use to log into QEMU guests so VM shells work without duplicating profiles. ssh_keyfile is optional; when omitted, pvetui uses the running SSH agent (SSH_AUTH_SOCK) if available, then falls back to ~/.ssh/id_ed25519, ~/.ssh/id_rsa, and ~/.ssh/id_ecdsa. vm_ssh_keyfile follows the same logic and falls back to ssh_keyfile. ssh_jump_host is optional and lets you route SSH connections through a bastion host when your Proxmox nodes or VMs are not directly reachable.
Guest tags can be edited from the VM/LXC Edit Configuration form using a semicolon-separated list (for example: prod;monitoring;db).
pvetui includes an opt-in plugin system for optional features. Plugins are disabled by default and must be explicitly enabled.
ansible: Global-menu Ansible toolkit with pvetui YAML/INI inventory generation, optional community.proxmox.proxmox dynamic inventory support, ad-hoc module execution, playbook execution, and SSH setup guidancecommunity-scripts: Adds the popular Community Scripts installer to node context menus and CLI modecommand-runner: Execute whitelisted commands on Proxmox hosts via SSH (requires SSH key setup)guest-insights (legacy alias: demo-guest-list): Full guest insights modal (filter/sort/jump-to-guest)Method 1: Manage Plugins Dialog (Recommended)
g to open the Global Menuj/k to navigate the plugin listSpace to toggle plugins on/offEnter to save changesMethod 2: Configuration File
Add plugin IDs to your config file:
plugins:
enabled:
- "ansible"
- "community-scripts"
- "command-runner"
- "guest-insights" # Guest Insights plugin (legacy alias: demo-guest-list)The Ansible plugin defaults to pvetui's generated inventory. Advanced users can set
plugins.ansible.inventory_source: community_proxmox to generate a temporary
.proxmox.yml source for the community.proxmox.proxmox inventory plugin. pvetui
derives non-secret connection fields (url, user, token_id) and password/token
secret environment variables from the active profile when possible, so saved
community inventory files can be reused outside pvetui without writing Proxmox
secrets into them.
** For plugin development and advanced details, see docs/PLUGINS.md**
The built-in profile manager allows you to:
Access the profile manager through the global menu.
Combine several profiles into a named group to see a unified cluster view (CPU/mem/storage/tasks/guests). Actions are routed to each guest’s source profile/cluster; migration targets are limited to the VM’s own cluster.
Launch directly into a group:
pvetui --profile="my-group"Notes:
Groups support two operating modes via group_settings:
aggregate (default): combines resources from all profiles in the group.cluster: active/passive behavior for HA-style setups. pvetui connects through one healthy profile at a time and fails over automatically.Example:
group_settings:
all-servers:
mode: aggregate
prod-ha:
mode: clusterroot) → Enter token IDNote: Proxmox displays the Token ID in the form
user@realm!tokenid(for example:root@pam!mytoken). When configuring pvetui, split those parts into separate fields:
profiles:
default:
addr: "https://your-proxmox-host:8006"
user: "root" # from user@realm!tokenid → user
realm: "pam" # from user@realm!tokenid → realm
token_id: "mytoken" # from user@realm!tokenid → tokenid
token_secret: "YOUR_SECRET"Supports SOPS encrypted config files. Point to an encrypted YAML file with --config and it will decrypt automatically.
Not using SOPS yet? pvetui now auto-detects cleartext password and token_secret values in plain YAML configs and rewrites the file with encrypted blobs (while updating the running config) as soon as you connect successfully. That keeps legacy configs safe without forcing you to adopt a new workflow.
** For detailed configuration options, key bindings, theming, and advanced features, see docs/CONFIGURATION.md**
** Complete documentation is available in the docs/ folder**
# Auto-detects config at ~/.config/pvetui/config.yml
./pvetui
# Or specify custom config
./pvetui --config /path/to/config.ymlDefault paths:
~/.config/pvetui/config.yml~/.cache/pvetui%APPDATA%/pvetui/config.yml%LOCALAPPDATA%/pvetuiWindows legacy fallback:
~/.config/pvetui/config.yml is still auto-detected.~/.cache/pvetui is still used if the newer %LOCALAPPDATA%/pvetui path does not exist.| Flag | Short | Environment Variable | Description |
|---|---|---|---|
--config |
-c |
n/a | Path to YAML config file |
--output |
-o |
PVETUI_CLI_DEFAULT_OUTPUT |
CLI subcommand output format: json or table; overrides cli.default_output |
--profile |
-p |
n/a | Connection profile to use (overrides default_profile) |
--no-cache |
-n |
n/a | Disable caching |
--version |
-v |
n/a | Show version information |
--config-wizard |
-w |
n/a | Launch interactive config wizard and exit |
--list-profiles |
n/a | List available connection profiles/groups and exit | |
--addr |
PVETUI_ADDR |
Proxmox API URL | |
--user |
PVETUI_USER |
Proxmox username | |
--password |
PVETUI_PASSWORD |
Proxmox password | |
--token-id |
PVETUI_TOKEN_ID |
Proxmox API token ID | |
--token-secret |
PVETUI_TOKEN_SECRET |
Proxmox API token secret | |
--realm |
PVETUI_REALM |
Proxmox realm | |
--insecure |
PVETUI_INSECURE |
Skip TLS verification | |
--api-path |
PVETUI_API_PATH |
Proxmox API path | |
--ssh-user |
PVETUI_SSH_USER |
SSH username | |
--vm-ssh-user |
`PVETUI_V |
No open issues yet, or sync has not completed.