The info screen's style now applies everywhere. The guest table sits in a "Guests" frame with the active context in its bottom border. Every dialog is a centred box with a title, labelled fields and the buttons bottom right: confirm (titled by the action), edit resources, switch context, back up and edit network. Fixed: - The network dialog hid most of its fields. In Horizontal rows Textual gave Select a width of 1 and Input 100 %, which pushed bridge, firewall, the IP mode selects and the gateways off-screen. Every field in a row now has an explicit width. - A guest name or note containing markup, such as "a[/b]", crashed the guest table and the dialogs, because DataTable cells and border titles were parsed as markup. They are now plain text. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
cv4pve-cli-tui
Textual TUI for cv4pve-cli: list Proxmox VE guests (VMs and LXC), start/shutdown/stop/reboot them, and change cores, memory and disk size.
It shells out to cv4pve-cli and uses its current context (cv4pve-cli config use <name>);
it stores no credentials itself. Tested with cv4pve-cli 2.4.0.
Run
uv run cv4pve-tui
| Key | Action |
|---|---|
s |
start |
S |
shutdown (confirm) |
x |
stop - hard power-off (confirm) |
r |
reboot (confirm) |
e |
edit cores / memory / grow a disk (disk growth asks again; it cannot be undone) |
i |
info: backups, backup job, network (config and runtime IPs); b there = backup now (snapshot, zstd, storage choice); a there = also show backups of earlier guests that had the same VMID |
i then n |
in info: edit network (bridge, VLAN, firewall, IPv4/IPv6; VM IP via cloud-init at next boot); u there = undo the last network change of this guest (this session only) |
t |
shell in a running LXC container (ssh -t root@<node> pct enter <vmid>) |
g |
refresh |
c |
switch cv4pve-cli context (cluster) |
q |
quit |
Warning: link changes (bridge, VLAN, firewall) apply immediately on a running guest and can cut its network (and DNS for others if the guest is your DNS server). IP changes on a running container may need a reboot of the container (seen: static -> DHCP gave no IPv4 until a reboot).
The shell key needs key-based root SSH to the PVE node (LXC only).
Switching context runs cv4pve-cli config use, which changes cv4pve-cli's global current
context: other shells and scripts follow, and it stays after the app exits.
Empty fields in the edit dialog are left unchanged. If a CPU/memory change cannot be hot-plugged, the app tells you it applies at the next reboot.
Development
uv sync
uv run pytest
Tests mock cv4pve-cli; they never touch a cluster. Design: docs/plans/guest-tui-mvp.md.