Skip to content

CLI Quick Reference & Cheat Sheet

Cheat SheetpvclipivirtctlTalos & KVM

A quick lookup guide for the most frequently used commands across pvcli, pivirtctl, and PiVirt hypervisor operations.


pvcli connects to the PiVirt Agent via ConnectRPC / gRPC.

Terminal window
# List VMs with status and IP addresses
pvcli vm list
pvcli vm ls
# Get detailed VM state (JSON, YAML, or table)
pvcli vm get <vm-id-or-name>
pvcli vm get web-server-01 -o yaml
# Create a VM
pvcli vm create --name web-server --cpus 4 --memory 8G --disk 50G --image ubuntu-24.04
# Power management
pvcli vm start <vm-id>
pvcli vm stop <vm-id>
pvcli vm restart <vm-id>
pvcli vm pause <vm-id>
pvcli vm unpause <vm-id>
# Clone & Rebuild
pvcli vm clone <source-vm-id> --name <new-vm-name>
pvcli vm rebuild <vm-id> --image ubuntu-24.04
# Delete VM (with attached disks)
pvcli vm delete <vm-id> --force
Terminal window
# List storage volumes
pvcli disk list
# Create a new disk
pvcli disk create --name data-vol --size 100G --pool default
# Attach/detach disk to a VM
pvcli disk attach <disk-id> --vm <vm-id>
pvcli disk detach <disk-id> --vm <vm-id>
# Extend disk capacity online
pvcli disk extend <disk-id> --size 200G
# Delete disk
pvcli disk delete <disk-id>
Terminal window
# List available cloud images
pvcli image list
# Download OS image from registry
pvcli image pull ubuntu-24.04
pvcli image pull debian-12
# Upload custom QCOW2/RAW image
pvcli image upload --file ./custom-app.qcow2 --name custom-app-v1
# Delete image
pvcli image delete <image-id>
Terminal window
# List virtual networks and bridges
pvcli network list
# Create network
pvcli network create --name tenant-net --subnet 192.168.10.0/24 --gateway 192.168.10.1
# Manage VM network interfaces
pvcli network interfaces <vm-id>
pvcli network add-interface <vm-id> --network tenant-net
pvcli network remove-interface <vm-id> --mac 52:54:00:12:34:56
Terminal window
# Authenticate via OAuth2 Device Code flow
pvcli auth login
pvcli auth whoami
pvcli auth logout
# Context management (switch clusters / endpoints)
pvcli context list
pvcli context current
pvcli context add prod agent.prod.pilab.hu 5001
pvcli context add dev localhost 5001 --insecure
pvcli context switch prod
# Launch Interactive Terminal UI (TUI)
pvcli ui

pivirtctl (Local Hypervisor Daemon Management)

Section titled “pivirtctl (Local Hypervisor Daemon Management)”

pivirtctl talks directly to the local pivirtd daemon over Unix domain socket (/var/lib/pivirt/daemon/pivirtd.sock).

Terminal window
# Set custom socket if needed
export PIVIRTD_SOCKET=/var/lib/pivirt/daemon/pivirtd.sock
# VM lifecycle on local node
pivirtctl vm list
pivirtctl vm info <vm-id>
pivirtctl vm start <vm-id>
pivirtctl vm stop <vm-id>
pivirtctl vm reset <vm-id>
pivirtctl vm delete <vm-id>
# Snapshots
pivirtctl vm snapshot create <vm-id> --name pre-upgrade-snap
pivirtctl vm snapshot list <vm-id>
pivirtctl vm snapshot revert <vm-id> --name pre-upgrade-snap
# Storage pools and volumes
pivirtctl storage pool list
pivirtctl storage volume list --pool default
# Network bridges & interfaces
pivirtctl network list

Terminal window
# 1. Generate machine configs with talosctl
talosctl gen config talos-cluster https://10.0.0.10:6443 --output-dir ./cluster-config
# 2. Place machine config for a node
mkdir -p /var/lib/pivirt/vms/talos-cp-0
cp ./cluster-config/controlplane.yaml /var/lib/pivirt/vms/talos-cp-0/talos-config
# 3. Create & start Talos node in pivirtd
pivirtctl vm create talos-cp-0 --vcpus 4 --memory 8192 --disk size=40GB,format=qcow2
pivirtctl vm start talos-cp-0
# 4. Bootstrap cluster once control plane has booted
talosctl --talosconfig ./cluster-config/talosconfig -n 10.0.0.10 bootstrap
# 5. Fetch kubeconfig
talosctl --talosconfig ./cluster-config/talosconfig -n 10.0.0.10 kubeconfig .
kubectl --kubeconfig ./kubeconfig get nodes

Host Services & Troubleshooting One-Liners

Section titled “Host Services & Troubleshooting One-Liners”
Terminal window
# pivirtd status & logs
sudo systemctl status pivirtd
sudo journalctl -u pivirtd -f
# agent status & logs
sudo systemctl status agent
sudo journalctl -u agent -f
# Restart services
sudo systemctl restart pivirtd
sudo systemctl restart agent
Terminal window
# Check Open vSwitch bridge status
sudo ovs-vsctl show
sudo ovs-vsctl list-ports br-provision
# Inspect IPTables metadata redirect
sudo iptables -t nat -L PREROUTING -n -v | grep 169.254.169.254
# Check TAP interface stats
ip link show type tun
Terminal window
# Scan iSCSI targets
sudo iscsiadm -m discovery -t sendtargets -p <storage-ip>:3260
# Inspect multipath status
sudo multipath -ll
# Check OCFS2 cluster status
sudo o2cb.init status