Skip to content

Preview every change and deploy in dependency order.

Compare your compiled cluster definition against live Kubernetes state, post package-grouped plans on pull requests, and record a deployment receipt on the cluster.

End-to-end delivery lifecycle

  1. 01
    pull request edit cluster or package Nix files
  2. 02
    kix check validate wiring, quotas, and policy offline
  3. 03
    kix diff / plan preview package-grouped changes on the PR
  4. 04
    merge every release is a Git commit
  5. 05
    kix deploy apply in dependency waves and wait on readiness
  6. 06
    receipt record commit and image digests on the cluster

Terminal output ($ kix diff shop)

$ kix diff shop12 packages: 9 unchanged, 2 changed, 1 added, 0 removed  monitoring    ~ grafana 11.2.0 (1 changed, 1 dep-affected)      ~ Deployment/grafana@monitoring          ~ $.spec.replicas:              old: 1              new: 2      ~ PackageInstance/grafana@monitoring (via dependency)  shop    + valkey 8.0.2 (4 resources)    ~ web 1.4.2 -> 1.5.0 (1 changed, 2 dep-affected)      ~ Deployment/web@shop          ~ $.spec.template.spec.containers[web].image:              old: "ghcr.io/acme/web:1.4.2"              new: "ghcr.io/acme/web:1.5.0"      ~ HorizontalPodAutoscaler/web@shop (via dependency)      ~ PackageInstance/web@shop (via dependency)  Activation: shop-ll6g0k5f2kqm -> shop-6w9czkc51502

Preview package-grouped diffs locally and on pull requests

Before deploying, kix diff compares the compiled cluster against live Kubernetes state and groups every change by namespace and package, separating direct field edits from downstream via dependency hash updates.

In CI, kix diff -o markdown posts the summary directly to the pull request so reviewers inspect the exact package and resource impact alongside the code change.

Pull request comment ($ kix diff shop -o markdown)

ci-bot commented on pull request #214

kix diff

Plan: 2 updated, 1 added, 0 removed, 9 unchanged Resources: 2 with real content changes, 3 dep-affected (hash bump only)

Added packages

  • shop/valkey 8.0.2 (4 resources)

Changed packages

  • monitoring/grafana 11.2.0 (1 changed, 1 dep-affected)
  • shop/web 1.4.2 → 1.5.0 (1 changed, 2 dep-affected)

Activation: shop-ll6g0k5f2kqm to shop-6w9czkc51502

Roll out in dependency waves from CI or your laptop.

Because the cluster definition and image pins live in Git, you can run kix deploy from your laptop or any CI pipeline. Kix schedules resources wave by wave along the dependency graph and waits for each wave to report ready before applying the next.

An optional in-cluster operator is in development.

$ kix deploy shop scheduled along the dependency DAG

  1. wave 1 Secret/dbConfigMap/web
  2. wave 2 Cluster/dbDeployment/valkey
  3. wave 3 Service/webDeployment/web
  4. wave 4 HTTPRoute/web
kix plan
Runs the deploy pipeline as a server-side dry run (dryRun=All) to surface webhook rejections, field ownership conflicts, and migrations before applying.
kix drift
Reports Kix-managed resources whose applied fields changed on the live cluster since the last deploy, and which field manager changed them.
--prune
Removes resources no longer defined in your cluster, except Namespaces and CRDs. Without --prune, the plan lists orphans and leaves them in place.
kix snapshot
Saves the Kix-managed resources of a live cluster to disk, so kix diff --from can compare against a point-in-time snapshot later.

Deployment receipts & audit evidence

Kix records a receipt for each deployment on the cluster, so you can trace what is running back to the inputs and images that produced it.

  • during an incident

    “What changed since yesterday?”

    Each receipt records the commit, whether the working tree was clean, the tool versions, and the container images.

  • during a release

    “Did the new build actually go out?”

    Image versions and digests live in a committed file, which lets you trace a release to a commit. kix pin check --source-rev fails when a pinned image was built from a different commit.

  • during a rollback

    “Put back exactly what ran on Tuesday.”

    kix rollback reapplies a previous deploy's activation from the local build cache, and kix gc retains at least the 10 newest records.

  • during an audit

    “Show me evidence.”

    kix compliance produces a CycloneDX SBOM, an unsigned SLSA provenance statement, and an audit bundle mapped to SOC 2, ISO 27001, DORA, or NIS2. An auditor can use these artifacts as evidence when assessing compliance.

KIX DEPLOY RECEIPT kix.run/receipt/v1

cluster
shop
activation
shop-6w9czkc51502
deployed
2026-09-09 10:47
commit
700ab95
working tree
clean
kix
0.1.0

IMAGES

ghcr.io/acme/web:1.5.0 @sha256:4a8e91c0…

ghcr.io/valkey-io/valkey:8.0.2 @sha256:7377697a…


Stored on the cluster after each deploy. Manifests stay out of the receipt because they can contain secrets.

Compile your first cluster.

Install the CLI, compile an example, and review the plan before deploying.

curl -fsSL https://kix.run/install | sh
Setup guide Read the docs