CLI releases
GitHub Releases — Linux / macOS / Windows, amd64 / arm64 · source: miropshq/mirops-cli
0.3.0 — Oct 6, 2026
The impact stage: mirops scan judges what you're about to deploy against the live mirror, before the deploy runs. Works with operator 0.2.x.
- Impact check with
-f/MIROPS_FILE— rendered manifests (YAML or JSON: a file, a directory, or-for stdin) or a Terraform plan (terraform show -json), includingkubernetes_*,kubernetes_manifestandkubectl_manifestresources. - Blocks only on what the change breaks (exit
1with--enforce): deleting a PVC, Service, ConfigMap or Secret still in use; mounting aPending,Lostor missing volume; an Ingress routing to a missing Service; depending on what the same change deletes. What's already broken, and the blast radius, are shown as context. - Namespace filter — with
-n/MIROPS_NAMESPACE, only changes in those namespaces are judged; objects without a namespace (helm templateoutput) go to a single-n. A-nin neither the mirror nor the change exits2. - Refuses sources to render —
values.yaml,Chart.yaml,kustomization.yaml,{{ }}templates,.tffiles and binary plans exit2with the command that renders them. - Lists the files a directory scan ignored (other extensions, empty files, hidden directories), in the output and in
checks.impact.summary.ignored. --max-mirror-age(default1h) refuses a stale mirror report.- Stray arguments exit
2instead of being ignored. - Betas — pre-releases
vX.Y.Z-beta.Nfrom thebetabranch let you try a version in a real pipeline before it's released; they never becomelatest. This release was tested asv0.3.0-beta.1.
Nothing breaks: without -f the CLI behaves as 0.2.0. Add an impact stage between your tests and your deploy — see Gate CI on a change.
0.2.0 — Sep 26, 2026
mirops scanreads the mirror report (--source/MIROPS_SOURCE).- Namespaces' state —
-n/MIROPS_NAMESPACE: one namespace, a list, orall. Informational; never blocks. - The upgrade check is a switch —
--upgrade/MIROPS_UPGRADE=truegates on the analysis report at--upgrade-source/MIROPS_UPGRADE_SOURCE. The target version comes from that report; once the cluster runs it, the check reportsskippedand passes, so the pipeline doesn't change between upgrades. - Every flag is a
MIROPS_*variable; a variable that doesn't parse stops the CLI. - Fixed exit codes —
0pass,1blocked with--enforce,2couldn't evaluate. Exit2is never a pass. --output jsoncarries aschemaVersion.
--target-version is gone. Point MIROPS_SOURCE at the mirror report and, for the upgrade gate, set MIROPS_UPGRADE=true and MIROPS_UPGRADE_SOURCE to the analysis report. A pipeline that still points --source at a .mirops keeps working. Bad flags and variables now exit 2 instead of 1.
0.1.0 — Sep 14, 2026
The first public release: mirops scan --source <report> --enforce reads an UpgradeAnalysis report from a file, HTTP, S3 or Azure Blob, renders it as tables or JSON, and fails the pipeline when the upgrade is blocked.