Most tools rename packages and hope. vrtmv reconstructs the whole workload on a modern, supported distribution and hands you a signed parity report proving the result matches the source — the evidence an auditor asks for.
A package-renaming script maps httpd to httpd and stops there. A real server is more than its package list, and the gap is where migrations fail.
vrtmv reproduces the operator's decisions about the workload, expressed in the target platform's own idiom — not a literal name where the target achieves the same function a different way. If it cannot attribute something to an operator decision, it names the gap instead of guessing.
Three commands, one attestation loop. migrate emits a promise; verify proves it.
vrtmv assess reads a cold disk image, a mounted root, or a live host — without changing the source or even booting it — and reports the OS, package family, services, and the config and accounts carry-set. It runs locally.
vrtmv migrate translates the workload across distributions and emits an Ansible role or Terraform that reconstructs it on the target, with the full config-carry manifest folded in.
vrtmv verify diffs the rebuilt target against the promise and returns equivalent, partial, or failed. It exits non-zero on any parity gap, so a pipeline can gate cutover on parity.
vrtmv never modifies the source. The rebuild lands on a separate target while the original keeps running, so backing out means simply not cutting over.
You cut over only after verify returns an equivalent verdict. If it reports a gap it exits non-zero and the cutover stays gated — the source workload is still there, untouched, the whole time.
Parity is decided only from what is observable on the rebuilt target — its package database and the presence of carried config paths. Nothing is inferred; a missing package is reported missing, not explained away.
The verdict's canonical facts are SHA-256 hashed. With vrtmv verify --sign they are also Ed25519-signed when the vrtmv signing service answers; when it cannot sign, verify says so and writes the verdict unsigned. It exits non-zero on any parity gap. An auditor can recompute the hash and check the signature of a signed verdict — that is the difference between "we migrated it" and evidence. The full method is in the documentation.
Coverage spans Enterprise Linux (RHEL, CentOS, Rocky, Alma, Oracle) and Debian and Ubuntu, with SUSE, Gentoo and VMware Photon OS as sources. A migration is a source → target pair, so direction matters, and not every source reaches every target.
The supported conversions page names the distributions and major versions, and your exact source and target are confirmed in scoping.
If the move is off CentOS 7, start with CentOS 7 migration and the blog post getting off CentOS 7 without lying to your auditors. If it is off VMware, start with VMware exit and how to actually leave. Every post is in the blog, and the common questions are in the FAQ.
Prove the value on real workloads at no cost. Past ten, it is $799 per instance a year on-demand, dropping to $599 at ten and $399 at a hundred — each covering the migration, its signed attestation, and ongoing drift monitoring. See pricing for the full breakdown.