Commands

vrtmv is a single binary with these subcommands.

Bills? shows whether the command claims a paid instance seat. The billable seat kinds are migration, verify, and license — the last is vrtmv license/enroll, the lightweight way to claim a seat without a full run (a seat is 402-gated quota, not a metered charge). drift and cve-scan are license-gated and never metered: drift is refused on a VM not already licensed by a migration, verify, or license, while cve-scan auto-claims a seat when the account has capacity (VRTMV-620) and is refused only when capacity is exhausted. See Accounts, quota & billing.

CommandAccount?Bills?What it does
assessnonoDetect a disk image's source format from magic bytes.
inventoryoptionalnoExtract distro + installed packages from a source.
driftyesno (license)Classify /etc into carry / caveat / default / skipped; derive service accounts.
resolveyesnoMap native package names to canonical slugs.
translateyesnoFetch target-distro packages for canonicals.
config-pathsyesnoFetch config-path relocations for canonicals.
migrateyesyes (full run)Full pipeline → runbook (--format) + signed attestation. Plan-only — never executes.
verifyfor --signyes (seat)Prove a rebuilt target matches the attestation migrate wrote.
licenseyesyes (seat)License (seat) one or more hosts by fingerprint alone — no translation or attestation. Alias enroll.
identitynonoWrite the operator instance stamp /etc/vrtmv/instance-id, so a cloned host has its own billing identity.
cve-scanyesno (license)Match installed packages against vendor advisories; report still-vulnerable CVEs, signed.
patchyesnoRender (or --apply over SSH) a role bumping vulnerable packages to their vendor-fixed version.
runyesyesUnattended migration: plan → apply the role over real SSH → carry config → verify.
deploynonoDeploy the workload to OpenShift/Kubernetes (VM or container).
readinessyesnoFleet migration-readiness report across many sources.
remediatenonoRecord accept decisions for readiness refusal clusters into a resolutions store.
cluster-migratefor --emit-rolesyes (--emit-roles)Cluster sources by similarity; per-host variance report, optionally a role per cluster.
cluster-verifyfor --signyes (seat)Verify a rebuilt fleet once per class, then borrow the verdict (alias verify-fleet).
coupled-migrateyesyesMigrate N coupled nodes (replicated / quorum DB) as one subject.
container-fleetyesyes (once per host)One Containerfile per workload across a fleet, from one manifest.
ui—noLocal migrate client (loopback only).
panel—noLocal operator panel: assess → plan → verify (loopback only; never applies).
mcpyesvia migrateLocal MCP server on stdio. vrtmv mcp --print-config prints the agent fragment.
auth—noStore / show / clear API credentials.
docs / help—noBundled documentation.

resolve, translate, and config-paths are direct windows onto the API — mainly for scripting and debugging. Most users run assess, drift, migrate, verify, and readiness.

migrate output formats

migrate --format <list> selects one or more runbook formats (comma-separated; default ansible). Every non-preflight run also writes the signed attestation regardless of format. See migrate for the full behavior.

--formatEmitsRequiresNotes
ansible (default)roles/vrtmv_migration/tasks/main.yml—Installs the translated packages and reconciles config.
terraformterraform/main.tf + terraform/cloud-init.yaml—Workload as cloud-init attached to a compute resource.
containercontainer/Containerfile--entrypoint, an Index base imageBuildable OCI image; operator runs podman build. Refuses rather than guess.
imageimage/ (kickstart or preseed + build-image.sh)--target-base, --firmwareqcow2 build recipe for a fresh bootable target (rpm/dpkg families). Refuses rather than guess.

Conventions

  • Extraction commands take a source as --image, --root, or --ssh (see Sources).
  • -o / --out sets an output directory where relevant.
  • Local-only commands (assess) never call the API and need no account. drift and cve-scan are license-gated and never metered — drift is refused on a VM not already licensed by a migration or verify, while cve-scan auto-claims a seat when the account has capacity. ui / panel themselves do not bill; a migrate they launch records the same usage event as the CLI.