Miropslive mirror
Install

The live Kubernetes Cluster Mirror

See what breaks before it does.

Mirops mirrors your Kubernetes cluster live — every workload, volume and add-on, and what depends on what. When something fails, you already know its blast radius.

Open source under Apache-2.0 · on-prem, EKS, AKS, GKE

How it works

Every change is checked against your live cluster — before it ships.

Mirops keeps an always-current picture of what's running and what depends on what. Your pipeline checks each change against it, and stops the ones that would break production.

1 · Your cluster

Mirops watches what runs

An operator inside your cluster maps every app, service, disk and route — and what each one depends on.

  • Apps
  • Services
  • Routes
  • Disks
  • Config
  • Nodes
  • Add-ons
mirops operatorClusterMirrorEKS · AKS · GKE · on‑prem
2 · The mirror report

A live map, in your own storage

  • shop ingressRunning
  • checkout serviceRunning
  • payments-api deploymentDown
  • payments-db-data diskPending
shop → checkoutrebuilt 40s ago
default.miropsS3 · Azure Blob · PVC
3 · Your pipeline

Go or no-go, before deploy

mirops scan -f change/ --enforce✗ BLOCK deleting service/checkout — ingress/shop routes to itexit 1
Deploy stoppedThe storefront still sends its traffic there. Caught in the pipeline, not in production.
Try a changedeploysblocked

Pick a change you're about to deploy — manifests, Helm or a Terraform plan — and watch the pipeline check it against the live map.

Your change

Remove the checkout service

delete service/checkout
No cluster access from CIWith the report in S3 or Azure Blob, the pipeline reads it from your bucket — no kubeconfig, no load on the API server.
Your data stays yoursThe report lives in your S3 bucket, Azure Blob or volume. Nothing leaves your account.
Blocks only real breakageA fix for something that's down goes through. Only a change that breaks what's running stops the deploy.

Mirror operations

One mirror. Always current.

Install once, create one small resource, and the operator keeps a model of your cluster up to date — no agents on your nodes, and reading it never touches the cluster.

Install and start the mirror

Helm installs the operator. A ClusterMirror resource says what to mirror and where to write the report.

Rebuilt continuously

Workloads, services, config, volumes, nodes and add-ons become a dependency graph, rebuilt every interval — 5 minutes by default.

See the blast radius

Risk from anything down, pending or lost flows to everything that depends on it, and adds up per namespace.

Read it where you work

Headlamp, kubectl get clustermirror, mirops scan -n payments in a pipeline, or the report in S3, Blob or a PVC.

In Headlamp

The Cluster Mirror, next to your cluster.

The Headlamp plugin opens on the mirror. Everything on it comes from the same report your pipelines read.

  1. 1
    Always liveWhen it was last rebuilt, how often, and which namespaces. Refresh now rebuilds it on the spot.
  2. 2
    The cluster at a glanceComponents, the dependencies between them, and how many are at risk.
  3. 3
    Where risk sitsEach namespace's highest risk, worst first.
  4. 4
    What breaks if it failsEvery component down, pending or lost — and what depends on it. The full graph is one click away.
Headlamp · Mirops › Cluster Mirror
The Cluster Mirror page in Headlamp: live header, summary tiles, namespace risk, and at-risk components with what depends on eachThe Cluster Mirror page in Headlamp: live header, summary tiles, namespace risk, and at-risk components with what depends on each

Upgrade analysis · opt-in

When an upgrade is coming, flip one switch.

The mirror runs all the time. Turn on upgrade analysis and it reads the same mirror against the next Kubernetes version.

upgrade.enabled=true
  • A SAFE, WARNING or CRITICAL verdict, with every blocker listed
  • Add-on compatibility for 18 common add-ons, up to Kubernetes 1.36
  • A 0–100 health score across health, capacity, stability and compatibility

In CI, mirops scan --enforce gates on the verdict — and skips itself once the cluster runs the new version.

Headlamp · Mirops › Upgrade Analysis
An upgrade analysis in Headlamp: a readiness score of 89, a Not recommended verdict with its reason, and the score breakdown by health, capacity, stability and compatibilityAn upgrade analysis in Headlamp: a readiness score of 89, a Not recommended verdict with its reason, and the score breakdown by health, capacity, stability and compatibility

Report destinations

Reports wherever your cluster runs.

The mirror rewrites its report on every rebuild, so the same URL always holds the latest one. Remote destinations keep no copy in the pod; the operator reads them back when Headlamp asks.

File

Inside the operator pod, served in-cluster over HTTP. Good to start.

default.mirops

Amazon S3

Read from any pipeline. IRSA on EKS, or static keys.

s3://reports/prod/default.mirops

Azure Blob

Workload Identity on AKS, or a service principal.

azure://acct/reports/default.mirops

PVC

On-prem and persistent, with no cloud storage needed.

/mnt/mirops-reports/default.mirops

Open source

Start with one cluster.

mirops is Apache-2.0 and self-hosted today.

Coming next

Name the services, check every pull request

Business tags (mirops.io/service, mirops.io/criticality) so the blast radius names the services you'd touch.

The deploy check on every pull request, so a change that breaks what's running is caught before it merges.

The mirops ecosystem

Operate on a mirror. Decide before you act.

mirops means mirror + ops: a live model of the cluster where dependencies and propagated risk are visible — every day, and before an upgrade changes the live system.

OperatorKeeps the Cluster Mirror up to date, runs upgrade analysis when it's on, and serves both reports.
Headlamp pluginThe Cluster Mirror page and the upgrade analyses.On Artifact Hub
CLIA namespace's state in any pipeline, and the upgrade gate.
Helm chartInstalls the operator on-prem, EKS, AKS or GKE.On Artifact Hub

Install the open source stack

See your cluster's blast radius today.

Install the chart, create a ClusterMirror, and read it from Headlamp or any pipeline. Turn on upgrade analysis when you need it.

# install the operator
helm install mirops oci://ghcr.io/miropshq/charts/mirops \
  --namespace mirops --create-namespace --version 0.2.0

# start the mirror
kubectl apply -f cluster-mirror.yaml

# a namespace's state, from any pipeline
mirops scan --source s3://reports/prod/default.mirops -n payments