Proxmox API β compatibility layer
corral proxmox serves a subset of the Proxmox VE REST API
(/api2/json/...) backed by KubeVirt, so tools built for the Proxmox
ecosystem β the Terraform bpg/proxmox provider, Ansible, proxmoxer β
can manage your KubeVirt VMs without modification.
corral plugin install proxmox
corral proxmox serve --addr :8006
It's also always available embedded in corral web at the same
/api2/json/... paths β you don't need the standalone plugin if you're
already running the web UI.
What's translatedβ
- Nodes β Kubernetes nodes, exposed as Proxmox nodes with CPU/memory capacity and Ready condition
- VMs (
/nodes/{node}/qemu) β KubeVirt VMs, with a stable numericvmidbidirectionally mapped via acorral.io/proxmox-vmidlabel (pre-existing VMs without the label derive one from a CRC32 hash of their name, so it stays stable across restarts) - Storage β Kubernetes StorageClasses, mapped to Proxmox storage
types (Longhorn β
lvmthin, local-path βdir) - Pools β Kubernetes namespaces, one pool per namespace, VMs as members
- Users/groups/roles β a read-only view of Kubernetes RBAC translated into Proxmox's shape (four fixed roles: Administrator, Operator, Viewer, NoAccess, mapped from cluster-admin/admin/view/default privilege levels). See ADR-0001 for the exact mapping.
Auth enforcement is delegated entirely to tailnet membership + Kubernetes RBAC β the Proxmox privilege strings this layer returns are presentation-only, for tooling that expects to see them, not an independent authorization system.
Full referenceβ
docs/proxmox-api.md in the corral repo has the complete endpoint list.