Questions, answered plainly. What vrtmv does, what crosses the wire, and how it's priced. If something's missing, contact us and a vrtmv engineer will answer — no account needed.
--format terraform — that reconstructs it on the target, plus a signed parity report documenting exactly what changed. The name is short for Virtual Machine Move.vrtmv migrate --image prod-web01.vmdk --target alma9 -o ./out. The client runs in your environment; you'll get an Ansible role (or Terraform, with --format terraform) and a vrtmv-attestation.json in the output directory.customer.vrtmv.com — usage and billing, API tokens for the CLI, and CSV/PDF statement export.httpd or mariadb-server — which the client sends to our hosted API to look up the target equivalent, and, with each usage report, two one-way hashes: a fingerprint per VM, for metering, and from 2.4.0 a host hint. The host hint is a SHA-256 hash of the machine's hardware id (its DMI product_uuid or, when it has none, the MAC addresses of its physical network interfaces), keyed with the VM's identity, which is not sent. It tells apart machines that report under one fingerprint because they were cloned from one image. It is not a billing key, and the hardware id itself is not sent. There is no host hint for a cold image, for a local run that is not root or that runs in a chroot, for a run that cannot read the product_uuid (it is readable by root only), for verify, or for a machine with neither a usable product_uuid nor a physical network interface with its permanent address. A run inside a container sends the hint of the machine the container runs on. Your configuration files, inventory, secrets, IP addresses, and the workload itself never leave your network. The analysis all happens locally on the machine where you run the engine.vrtmv verify, have proven it. Coverage is release-specific — tell us your exact source and target versions and we'll confirm scope for your estate. See the supported distributions.convert2rhel, then runs leapp twice, to 8 and then to 9. The AlmaLinux ELevate project takes the same Leapp path for the RHEL rebuilds. Each hop is a separate change to a live system, with its own reboot, its own pre-upgrade inhibitors and its own failure window, and the system carries every year of drift into the new release. vrtmv does not upgrade. It reads the CentOS 7 system read-only and rebuilds the workload on a fresh target, for example at major version 9, so there is no chain to walk and the original stays bootable for rollback.vrtmv data), and cutover means changing addresses or DNS. For a simple host that you can restore from backup, an in-place upgrade can be the quicker choice. vrtmv is built for the rebuild, and for the step after it: showing that the rebuilt machine matches.roles/vrtmv_migration/tasks/main.yml) that rebuilds the workload as a VM on the target — or Terraform (terraform/main.tf plus cloud-init) if you pass --format terraform; Ansible is the default — and a signed parity attestation (vrtmv-attestation.json) listing every translation with its confidence grade, every caveat and every gap. When the vrtmv signing service answers, its signature is written beside it in vrtmv-attestation.sig.json.--format container, vrtmv checks the source before it writes a Containerfile, and vrtmv assess prints the verdict. It refuses a host whose operator declared a kernel module to load at boot. It names the services the image will not start, the scheduled jobs that will stop and each data directory you must place, and leaves those decisions to you. Some things it does not check, such as logs written to disk and how your program handles a stop signal. Read the full list before you choose.vrtmv verify checks the rebuilt machine against it, deciding only from what it can observe there: its package database and the carried configuration paths. A missing package is reported missing, every caveat and gap is listed, and verify exits non-zero on any parity gap, so cutover can be gated on it. Keep the source inventory, the plan and the report with the change record. After cutover, the same baseline lets you re-check the instance for drift.vrtmv verify with --sign and, when the vrtmv signing service answers, the report is also Ed25519-signed, with the public key published at customer.vrtmv.com/v1/attest/pubkey; when it cannot sign, verify says so and writes the report unsigned. It's designed to be the artifact you hand an auditor who asks "what changed, and how do you know it's equivalent?"convert2rhel, then leapp twice), each with its own failure window. vrtmv does not upgrade anything. It reads your source read-only and rebuilds the workload on a fresh RHEL 9 target, so there is no sequence to walk. The Index maps CentOS 7 → RHEL 9 directly — 85 canonical packages resolved against RHEL 9's own names, not composed through RHEL 7 or 8 — so no translation error compounds across hops. The trade-off is real and worth stating: this is side-by-side, not in-place, so you need somewhere to build the target, and the application data that no package owns moves as a separate attested step (vrtmv data). What you get for it is a better rollback — your CentOS 7 original is never written to and stays bootable, so a failed cutover means pointing back at it rather than restoring from backup.Tell us what you’re trying to move and a vrtmv engineer will answer — usually the same business day. No account needed, and nothing you send is used for anything else.