Rust-based k9s replacement cuts cluster navigation latency by 60
Sofka cold-start: 1.1 seconds. Context switch: sub-50ms. Memory footprint dropped from 180MB to 42MB. The benchmark doc on GitHub shows similar numbers across kind, k3d, and GKE — author published raw hyperfine runs with 50 iterations each.
hyperfine --warmup 10 --runs 50 'k9s --command "get pods"' 'sofka get pods'Key architectural difference: Sofka skips the client-go informer cache entirely and streams list/watch responses directly into a ratatui render loop. No local state reconciliation, no full-resource resync cycles. Trade-off is you lose the "press d to describe" instant cached view — but sofka describe pod <name> still returns in ~200ms via direct API call, which feels faster than waiting for k9s to rebuild its cache after a cluster event storm.
Integration points that sold my team:
- Flux:
sofka fluxsurfaces Kustomization/HelmRelease status inline with workload health — no context-switch toflux get kustomizations - ExternalSecrets:
sofka externalsecretshows secret sync status and last-fetched timestamp next to the consuming pod - Helm: release history and values diff accessible from the release list view (
sofka helm list)
The Helm diff view is genuinely useful — shows computed values diff against the chart defaults without leaving the TUI. k9s requires
helm get values + external diff tool.Rough edges worth knowing:
- No plugin system yet (k9s has
plugins.yamlfor custom CLI extensions) - CRD discovery is manual — you register
sofka config add-crd <group/version/kind>once per cluster - Mouse support is experimental; vim bindings cover 95% of workflows but some multi-select actions need keyboard chords
Installation is a single static binary (12MB stripped). We dropped it into our devcontainer base image and brew tap for Mac users. Zero config migration — it reads
~/.kube/config and respects KUBECONFIG same as kubectl.If you're running k9s on clusters >100 pods and feel the latency tax, the benchmark numbers alone justify a 30-minute eval. The Flux/ExternalSecrets integration is the force multiplier for GitOps shops.