ProxCLMC - Ensure Safe CPU Compatibility in Proxmox VE Clusters
ProxCLMC (Prox CPU Live Migration Checker) is an open-source tool (written by gyptazy) designed to solve one of the most common and least visible problems in Proxmox VE clusters: safe CPU compatibility for live migration. Live migration is a feature administrators rely on every day, yet it is also one of the easiest ways to introduce subtle but serious issues into a cluster. The underlying requirement is CPU compatibility across all nodes, and in real-world environments this is rarely as simple as selecting the host CPU type and moving on. Clusters tend to run for many years, hardware is added or replaced over time, CPU generations change, and supported flags evolve. On top of that, certain workloads, especially Windows guests, can suffer from additional mitigation checks and performance penalties when using the host CPU type. While Proxmox VE offers a wide range of options for configuring VM CPU models, determining a safe and optimal baseline for an entire cluster is still largely manual work. In practice, this often means relying on experience, documentation, spreadsheets, or trial and error. Other virtualization platforms have addressed this problem with built-in, cluster-wide CPU compatibility mechanisms, but Proxmox VE does not yet provide an automated solution. ProxCLMC fills this gap. In my blog post about ProxCLMC, I also explain some more background about CPU compatibility in Proxmox VE clusters and the challenges it presents.
The tool inspects all nodes in a Proxmox VE cluster, analyzes their CPU capabilities, and calculates the highest possible CPU compatibility level that is supported by every node. Instead of guessing or discovering incompatibilities during a failed migration, ProxCLMC provides a deterministic and reproducible result that can be directly used when selecting VM CPU models. This makes cluster-wide live migration predictable, safer, and easier to operate over the long term.
ProxCLMC is intentionally simple and non-invasive. It requires no agents, no background services, and no changes to the cluster configuration. Installed on a single Proxmox VE node, it automatically discovers cluster members by parsing the local corosync configuration, connects to each node via SSH, and reads CPU information from /proc/cpuinfo. From this data, it extracts CPU flags and maps them to well-defined x86-64 baseline levels that align with Proxmox and QEMU. The final result is the lowest common denominator shared by all nodes, representing the maximum safe CPU model for unrestricted live migration across the cluster. The project is written in Rust, fully open source under the GPLv3, and distributed as a static binary as well as a Debian package through the gyptazy open-source solutions repository and partners.
Features
- Automatic discovery of all nodes in a Proxmox VE cluster
- Cluster-wide CPU capability analysis without manual comparison
- Determination of the highest common CPU compatibility level
- Mapping of CPU flags to standardized x86-64 baseline levels
- Support for x86-64-v1, x86-64-v2-AES, x86-64-v3, and x86-64-v4
- Deterministic output suitable for direct use as a VM CPU model
- No agents, background services, or cluster configuration changes required
- SSH-based data collection using existing Proxmox VE cluster access
- Designed for long-lived clusters with mixed hardware generations
- Written in Rust with a focus on safety and performance
- Fully open source and licensed under GPLv3
- Available as a static binary and as a Debian package
Availability
ProxCLMC is available as a free and open-source tool, which can be easily installed and integrated into existing Proxmox VE clusters. It can be obtained from the gyptazy Debian repository or the gyptazy CDN:
| Repository: | https://repo.gyptazy.com/stable |
| CDN: | https://cdn.gyptazy.com/debian/proxclmc/ |
Installation with Debian Repository
ProxCLMC can be installed in different ways but using the Debian repository it the easiest one. This way also ensures that updates are automatically applied.
echo "deb https://repo.gyptazy.com/stable /" > /etc/apt/sources.list.d/proxlb.list
wget -O /etc/apt/trusted.gpg.d/proxlb.asc https://repo.gyptazy.com/repository.gpg
apt-get update && apt-get -y install proxclmc
FAQ
What CPU model should I use for live migration in Proxmox VE?
There is no single universal CPU model that fits every Proxmox VE cluster, especially in environments with mixed hardware generations. The safest choice is always the highest CPU compatibility level that is supported by all nodes in the cluster. ProxCLMC determines exactly this baseline by analyzing the CPU capabilities of every node and calculating the maximum common denominator. The resulting CPU model can be used directly for virtual machines to ensure reliable and unrestricted live migration across the entire cluster.
Does ProxCLMC change or modify my Proxmox VE cluster configuration?
No. ProxCLMC is completely non-invasive and does not make any changes to your cluster configuration, virtual machines, or Proxmox VE settings. It does not install agents, services, or hooks, and it does not require any persistent background processes. The tool only reads CPU information from the nodes and provides a calculated result, leaving full control and decision-making to the administrator.
Is ProxCLMC safe to use in production environments?
Yes. ProxCLMC was designed with production environments in mind, including long-lived clusters with heterogeneous hardware. Since it performs read-only analysis and does not alter any system state, it is safe to run in production at any time. Many of the problems it addresses only become visible during failed migrations, and ProxCLMC helps prevent these issues proactively.
Can ProxCLMC be used on standalone Proxmox VE hosts?
Yes. While ProxCLMC is primarily designed for Proxmox VE clusters, it can also be executed locally on standalone Proxmox VE hosts. In this mode, it analyzes the local CPU capabilities and reports the supported compatibility level for that host. This can be useful for validating CPU feature sets before adding a node to a cluster, planning hardware upgrades, or comparing standalone systems with existing cluster baselines.
Bugs & Features
ProxCLMC is a fully open-source project and actively developed in the open. Community feedback is highly welcome and plays an important role in improving the tool.
If you encounter any bugs, unexpected behavior, or edge cases, feel free to report them. Likewise, feature requests, improvement ideas, or discussions about future enhancements are always appreciated. Whether it’s a small usability tweak or a larger architectural idea, every input helps to make ProxCLMC better. You’re also very welcome to contribute directly by submitting pull requests, improving documentation, or helping with testing across different Proxmox VE environments.
Please use the ProxCLMC GitHub project to open issues for bugs, feature requests, or general discussions. I’m happy to review and discuss all contributions.
Additional Resources for ProxCLMC
| Details: | ProxCLMC project details |
| Website: | ProxCLMC project website |
| GitHub: | ProxCLMC project at GitHub |
| Reddit: | ProxCLMC project at Reddit |
| Proxmox Forums: | ProxCLMC project at Proxmox Forums |
| Author: | gyptazy |