\|/ (__)
`\------(oo)
|| (__)
||w--|| \|/
\|/
ku is short for KUbernetes. It is also the Norwegian word for cow.
A fast, keyboard-driven Kubernetes TUI. Browse any resource, read and edit objects, follow logs, and open a shell in a pod, without leaving the terminal. Inspired by k9s, Lens, and lazygit.
kli-github.mp4
Install the latest release with the installer:
curl -fsSL https://raw.githubusercontent.com/bjarneo/ku/main/install.sh | shOr with Go:
go install github.com/bjarneo/ku@latestOr from a clone:
make install # builds and installs to ~/.local/bin, /usr/local/bin, or your last $PATH dir
go build -o ku .Building from source requires Go 1.26.3+. Running ku requires a reachable cluster.
ku # current context, remembered namespace
ku -n kube-system # start in a namespace
ku --resource deploy # start on a resource type
ku --theme tokyonight # switch theme
ku --edit # start in edit mode (default is read-only)
ku --dev # developer view, app resources only
ku upgrade # replace the current binary with the latest release
Press ? for help, Ctrl+K for the command palette, and Shift+E to toggle
edit mode.
ku starts read-only. Every mutating action is off: edit, delete, rollout
restart, scale, CronJob trigger, cordon, drain, and shell into pods or nodes.
Read, describe, YAML, logs, and the kubectl command preview still work. For
all you fat-fingers out there, your cluster is safe.
To make changes, press Shift+E or open the command palette (Ctrl+K) and pick
"Enter edit mode", then confirm the prompt. The header chip flips from a green
● READ-ONLY to a red ● EDIT, and the mutating keys come back. Press
Shift+E again or pick "Return to read-only" to switch back. Pass --edit to
start in edit mode instead.
--dev switches to a developer view that hides cluster admin resources (nodes,
persistent volumes, storage classes, namespaces, events) and disables node
operations. CRD discovery is off too. Use it when you only manage your own app.
It composes with edit mode.
ku # read-only, full nav
ku --edit # edit mode, full nav
ku --dev # read-only, developer view
ku --dev --edit # edit mode, developer view
Disabled keys are dropped from the footer hints and the command palette, and ?
summarizes the active mode.
ku reads an optional config file from ~/.config/ku/config.yaml for sidebar
customization and stores session state in ~/.config/ku/state.json.
The sidebar lists common built-in resources by default. CRDs are not shown until
you add them. Seed the config, then edit the sidebar: list:
ku config init # write ~/.config/ku/config.yaml with the defaults
ku config path # print the config file locationAdd an item under any section (or a new one). The resource field accepts a
plural, singular, kind, short name, or group-qualified key. Use the
group-qualified form (<plural>.<group>) to avoid ambiguity:
sidebar:
- section: CRDs
items:
- { label: ScaledObjects, resource: scaledobjects.keda.sh }
- { label: Certificates, resource: certificates.cert-manager.io }
- { label: HPAs, resource: horizontalpodautoscalers }Restart ku to apply the change. Resources your cluster does not expose are
dropped, and empty sections are hidden.
See Configuration for the full reference.
- A cockpit overview on launch: cluster health, node CPU and memory gauges, pod and deployment status, and recent warnings.
- Server-rendered tables for any resource, the same columns as
kubectl get, including CRDs. - lazygit-style layout: a left resource nav,
Tabbetween panes, and a status bar that always shows the keys that work right now. - Config summaries, raw YAML, logs, edit-in-editor, shell into pods or nodes, delete, scale, restart, and CronJob trigger, all inside the TUI.
- ANSI colors that match your terminal in light or dark mode, with Tokyo Night as a fallback (
--theme tokyonight). - A customizable sidebar menu via an optional config file (
ku config init): add CRDs like HPAs, KEDA ScaledObjects, or OpenTelemetry collectors. Cshows the equivalentkubectlcommand, andOopens upstream Kubernetes docs for known resources.- Remembers your last context and namespace.
Full index: docs/.