Changelog
Notable features and fixes per klimax release. The authoritative list of every tagged release lives on GitHub; this page highlights the changes worth knowing about.
klimax is pre-1.0 and versions with the same date were cut together during rapid iteration. Patch releases with no user-visible change (dependency bumps, CI, docs) are folded into the nearest entry below.
Upgrading between releases? After
brew upgrade --cask klimax, destroy and re-create the VM so
the new version re-provisions it: klimax destroy && klimax
up. Provisioning is baked into the binary, so an in-place VM keeps
running the old setup until you rebuild it — the host-backed image cache
survives, so it's fast. See
Reset.
v0.1.48 – v0.1.49 — 2026-07-09
- Removed: the local push registry
(
kind-registry:5000) is gone — config schema, container,certs.dhost mapping, and the Fleetregistries.localRegistrytoggle all removed. To get a locally built image into a cluster, build against the VM's Docker (eval "$(klimax docker-env)") and load it withkind load docker-image. See Registry mirrors. - Changed:
network.disablePortMirroringnow defaults totrue, so klimax coexists with other Lima VMs out of the box and kubeconfigs use the VM'slima0IP. Set it tofalseto force loopback (127.0.0.1) addressing — e.g. for a single VM or when host security software blocks vzNAT IPs. See Networking. - Added: two Google Artifact Registry
pull-through mirrors to the defaults —
registry-us-docker-pkgdev(5040) andregistry-us-central1-docker-pkgdev(5050), alongside the existing docker.io, quay.io, and gcr.io mirrors. - Security: binaries are built with Go
1.25.12 to patch the
crypto/tlsECH CVE.
v0.1.43 – v0.1.47 — 2026-07-06
- Changed: bumped MetalLB to v0.16.1 (the
new default
kind.metalLBVersion) and tightened LoadBalancer / metrics-server readiness waits to 180 s. - Changed: bumped the bundled Lima runtime to v2.1.4 and version-stamped the cached guest agent so it refreshes when Lima changes.
- Fixed: klimax now rejects hostname-like
registry mirror names (any
namewith a.or:). Such a name shadows its own upstream on thekindDocker network and silently breaks the pull-through cache — use a safe form likeregistry-quayio. See Registry mirrors. - Security: releases now ship SBOMs, CI
runs
govulncheckwith Dependabot enabled, and binaries are built with Go 1.25.11 to pick up the latest stdlib CVE patches.
v0.1.42 — 2026-07-04
- Added: a top-level
klimax kubeconfigcommand (aliaskc) grouping every kubeconfig op —path,env,merge,use(merge + switch context), andremove. See CLI reference → Kubeconfig. - Deprecated:
klimax cluster useandcluster merge— still work, but preferkubeconfig envandkubeconfig merge. - Fixed: raised the MetalLB and metrics-server readiness waits to 300 s so slower first-pull machines don't time out.
v0.1.41 — 2026-07-04
- Changed: the embedded Lima logs are hidden by
default — klimax quiets them to
errorso only its own output (and genuine Lima errors) show. Surface them with--debug(Lima atinfo) or--lima-log-level trace|debug|info|warn|error|off. See CLI reference → Logging.
v0.1.38 – v0.1.39 — 2026-07-03
- Added:
klimax fleet describe <name>shows a fleet's member clusters with their num, ports, nodes, and labels (aliasesdesc,show). - Changed:
klimax cluster createno longer takes--num— the cluster num is always auto-assigned to the lowest free slot. Pin one where it matters via a Fleet manifest'snum:field.
v0.1.36 – v0.1.37 — 2026-07-03
- Added: a top-level
klimax fleetcommand that operates on live clusters grouped by theklimax.dev/fleetnode label —fleet list,fleet create -f,fleet delete <name>|-f, andfleet label <name>. See Fleet management. - Added: kubectl-style label selectors on
the cluster commands —
klimax cluster list -l <selector>to filter andklimax cluster delete -l <selector>to delete matching clusters. - Changed: the bundled Agent Skill now covers Fleet manifests and cluster labels.
v0.1.35 — 2026-07-03
- Added:
klimax cluster label <name>relabels an existing cluster's nodes without recreating it — repeatable-l key=valuesets or overwrites a label (--overwriteby default), and-l key-removes one. See Managing clusters → Node labels.
v0.1.32 – v0.1.34 — 2026-07-03 · Fleets
- Added: declarative fleets of kind
clusters.
klimax cluster apply -f <manifest>reconciles a Fleet manifest (apiVersion: klimax.dev/v1alpha1) into existence — creating missing clusters independsOnorder, up tomaxParallelat a time, with--dry-runand per-cluster registries, addons, and labels. It's additive: existing clusters are skipped, never mutated. See Fleet management. - Added:
klimax cluster delete -f <manifest>tears a fleet down in reverse-dependency order (-yto skip the prompt). - Added: node labels on every cluster —
managed-by=klimaxalways,klimax.dev/fleet=<name>for fleets,topology.kubernetes.io/region+zone, and your own via the manifestlabelsmap orklimax cluster create -l key=value. - Changed: the resource formerly called
ClusterSetis now Fleet.
v0.1.30 — 2026-07-03
- Changed: bumped the default Kubernetes node image to
kindest/node:v1.35.0and MetalLB tov0.15.2. - Fixed: registry mirrors now work on containerd
2.x — cluster containerd is configured with
certs.dhosts.tomlfiles instead of the oldcontainerdConfigPatches. See Registry mirrors. - Added:
klimax cluster createnow warns whenkind.nodeVersionis overridden away from the version the bundled kind CLI is validated against — overriding it is unsupported. - Added:
klimax doctorsurfaces Rosetta status, so you can see at a glance whether Rosetta 2 emulation is available in the VM. - Fixed:
klimax upno longer re-adds the macOS host route (or prompts for sudo) when the route is already correct — repeat runs are quieter and fully idempotent.
v0.1.29 — 2026-07-02
- Added:
klimax skill installships a bundled Agent Skill that teaches AI coding tools like Claude Code how to drive klimax. Installs into~/.claude/skills/klimax/by default;--printemits it for other tools andklimax skill pathreports where it lives.
v0.1.28 — 2026-06-17
- Fixed: the Docker daemon could fail to start inside
the VM on hosts whose macOS username is also a valid Linux username.
The guest user is now pinned to
lima, so theSocketUser=limaoverride is always valid.
v0.1.24 – v0.1.27 — 2026-04 to 2026-06
- Changed: bumped the bundled Lima runtime to the
2.1.xseries. - Fixed: an sshd provisioning idempotency bug — the
ClientAliveIntervalcheck is now anchored so Ubuntu's commented-out default is skipped, avoiding SSH socket-permission errors on repeatedklimax up. - Documentation: added the vs. other tools comparison (including OrbStack) and reworked the diagrams and logo.
v0.1.23 — 2026-04-02
- Added:
kind.customDnsResolversis now actually wired into each cluster's CoreDNS. Forward specific domains (e.g. an internalcorp.internalzone) to chosen upstream resolvers. See Configuration.
v0.1.22 — 2026-04-02
- Added:
network.disablePortMirroring— run klimax alongside other Lima-based tools (Rancher Desktop, Colima) without fighting over127.0.0.1port mirroring. With it set, kubeconfigs address the VM'slima0IP directly. See Networking.
v0.1.20 — 2026-03-30
- Added: short-name aliases for the main commands.
- Fixed: prevented SSH socket exhaustion on the guest.
v0.1.0 – v0.1.19 — 2026-03-27 · initial release
- Multi-cluster kind management on a single Lima (Apple Virtualization.framework) VM, with pure L3 routing — reach pods and LoadBalancer services by their real IP, no port-forwarding.
- Pull-through registry mirrors for
docker.io,quay.io, andgcr.io, plus a local push registry — with a host-backed cache that survives teardowns. - Automatic kubeconfig merge/removal on cluster create/delete, plus a
cluster mergesubcommand. - Docker context and
docker-envsupport. - Built-in nginx end-to-end routing smoke test, and an
ssh-into-the-VM command. - Shell completion.
- Optional Rosetta support; all state stored under
~/.klimax, with a default config generated on first run.
See also
- GitHub releases — every tag with full commit history.
- Upgrading from an old install — how to wipe and reinstall from scratch.