Skip to main content

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), including kubernetes_*, kubernetes_manifest and kubectl_manifest resources.
  • Blocks only on what the change breaks (exit 1 with --enforce): deleting a PVC, Service, ConfigMap or Secret still in use; mounting a Pending, Lost or 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 template output) go to a single -n. A -n in neither the mirror nor the change exits 2.
  • Refuses sources to render — values.yaml, Chart.yaml, kustomization.yaml, {{ }} templates, .tf files and binary plans exit 2 with 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 (default 1h) refuses a stale mirror report.
  • Stray arguments exit 2 instead of being ignored.
  • Betas — pre-releases vX.Y.Z-beta.N from the beta branch let you try a version in a real pipeline before it's released; they never become latest. This release was tested as v0.3.0-beta.1.
Updating pipelines from 0.2.0

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 scan reads the mirror report (--source / MIROPS_SOURCE).
  • Namespaces' state — -n / MIROPS_NAMESPACE: one namespace, a list, or all. Informational; never blocks.
  • The upgrade check is a switch — --upgrade / MIROPS_UPGRADE=true gates on the analysis report at --upgrade-source / MIROPS_UPGRADE_SOURCE. The target version comes from that report; once the cluster runs it, the check reports skipped and 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 — 0 pass, 1 blocked with --enforce, 2 couldn't evaluate. Exit 2 is never a pass.
  • --output json carries a schemaVersion.
Updating pipelines from 0.1.0

--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.