OpenRadar

Project · Go · Added June 18, 2026

ku

A fast keyboard-driven Kubernetes TUI built with Go and BubbleTea. Browse resources, edit objects, follow logs, and shell into pods without leaving the terminal.

329 stars 12 forks View on GitHub

ku

Overview

ku is a keyboard-driven terminal UI for Kubernetes, built in Go with Charm’s BubbleTea framework. It hit 300 GitHub stars within five days of its June 13 launch, which is a strong signal for a CLI tool in a space dominated by k9s. The name is short for Kubernetes — and also the Norwegian word for cow, which explains the ASCII art.

The project is created by bjarneo (known on X as @iamdothash), a Norwegian developer. The tool draws inspiration from k9s, Lens, and lazygit, taking the keyboard-first philosophy of each and combining them into a single binary. Unlike k9s, which has accumulated years of complexity and configuration surface area, ku takes a cleaner approach: read-only by default, with a toggle for edit mode that requires explicit confirmation.

The core problem ku solves is the friction between kubectl commands and full GUI tools like Lens or Rancher. Developers who live in the terminal know the pain: you need to check a pod status, so you type kubectl get pods -n my-namespace, then kubectl describe pod, then kubectl logs, then maybe kubectl exec. Each command is a context switch. ku collapses all of that into a single interactive interface where you navigate with arrow keys and Tab, with every available action visible in the status bar.

Why it matters

The Kubernetes tooling landscape hasn’t changed much since k9s became the default terminal UI for cluster management. k9s is powerful, but its configuration is sprawling, its plugin system is complex, and new users face a steep learning curve. ku offers a different philosophy: sensible defaults, minimal configuration, and safety-first design.

What makes ku interesting for Go developers specifically is the BubbleTea foundation. Charm’s TUI framework has become the standard for building terminal applications in Go, and ku is a good example of how far you can push it. The cockpit overview on launch — showing cluster health, node CPU and memory gauges, pod status, and recent warnings — feels polished in a way that most Go TUI tools don’t.

There’s also a broader trend here: developers are consolidating their toolchains. The same people writing React frontends and Go backends want their infrastructure tools to feel as polished as their IDE. ku fits that expectation. It’s fast, it looks good, and it doesn’t require reading a 50-page configuration guide to get started.

Key Features

Read-Only Safety Mode. ku starts in read-only mode by default. Every mutating action — edit, delete, rollout restart, scale, CronJob trigger, cordon, drain, and shell into pods — is disabled. You can browse, describe, view YAML, tail logs, and preview kubectl commands without risk. This is the single best design decision in the project. For teams where multiple developers have cluster access, the default read-only state prevents accidental damage. Toggle edit mode with Shift+E when you actually need to make changes.

Cockpit Overview Dashboard. On launch, ku shows a cockpit view with cluster health metrics: node CPU and memory gauges, pod and deployment status, and recent warning events. This gives you an immediate sense of whether something is wrong without running five separate kubectl commands. It’s the kind of at-a-glance information that makes morning check-ins faster.

lazygit-Style Layout. The interface follows the lazygit pattern: a left sidebar for resource navigation, Tab to switch between panes, and a persistent status bar showing available keybindings. If you’ve used lazygit for Git operations, ku will feel immediately familiar. The status bar is context-aware — it only shows keys that work in the current mode and context, reducing visual noise.

Developer View Mode. The --dev flag switches to a developer view that hides cluster admin resources — nodes, persistent volumes, storage classes, namespaces, events — and disables node operations. CRD discovery is turned off too. This mode is designed for application developers who only manage their own services, not the cluster infrastructure. It composes with edit mode, so you can have ku --dev --edit for a focused development workflow.

Customizable Sidebar with CRD Support. ku reads an optional config file from ~/.config/ku/config.yaml for sidebar customization. Adding CRDs is straightforward: run ku config init to seed the defaults, then add entries under any section. The resource field accepts plural, singular, kind, short name, or group-qualified keys. Resources your cluster doesn’t expose are automatically dropped, and empty sections are hidden. This means you can add KEDA ScaledObjects, cert-manager certificates, or OpenTelemetry collectors to your sidebar without cluttering the interface with unavailable resources.

kubectl Command Preview. Press C to see the equivalent kubectl command for any action you’re about to take. This is a learning feature that doubles as a debugging tool. If you’re trying to figure out how to do something in ku, the command preview shows you the kubectl equivalent. Over time, you build up muscle memory for both tools simultaneously.

Theme Support and Session Memory. ku matches your terminal’s ANSI colors in light or dark mode, with Tokyo Night as a fallback theme (activate with --theme tokyonight). It also remembers your last context and namespace between sessions, so you don’t have to re-navigate every time you open it.

Use Cases

Pros and Cons

Pros:

Cons:

Getting Started

# Install with the one-liner
curl -fsSL https://raw.githubusercontent.com/bjarneo/ku/main/install.sh | sh

# Or install with Go
go install github.com/bjarneo/ku@latest

# Start ku (requires a reachable Kubernetes cluster)
ku

# Start in a specific namespace
ku -n my-namespace

# Start on a specific resource type
ku --resource deploy

# Start with developer view (hides cluster admin resources)
ku --dev

# Start in edit mode (mutations enabled)
ku --edit

# Initialize config for sidebar customization
ku config init

Press ? for help, Ctrl+K for the command palette, and Shift+E to toggle edit mode.

Alternatives

k9s — The established standard for Kubernetes TUI management. k9s has been around since 2019 and has a mature feature set including plugins, themes, pulse metrics, and XRay views. It’s more configurable than ku and has a larger community. Choose k9s if you need plugin support, multi-cluster management, or a battle-tested tool that’s been through years of production use. The learning curve is steeper, but the ceiling is higher.

Lens — A full desktop GUI for Kubernetes with a visual dashboard, resource graphs, and integrated terminal. Lens is the right choice for teams that prefer visual interfaces over terminal workflows, or for cluster administrators who need real-time resource monitoring with charts and graphs. It’s heavier than ku but offers a more complete management experience.

kubecolor + kubectl — For developers who prefer raw kubectl but want colorized output, kubecolor wraps kubectl commands with syntax highlighting. This is the minimalist approach — no TUI, no navigation, just colored output on your existing workflow. Choose this if you want to stay as close to kubectl as possible while making the output more readable.

Verdict

ku is five days old, has 329 stars, and is clearly resonating with Go developers and DevOps engineers who want a simpler alternative to k9s. The read-only-by-default safety model is the standout feature — it’s the kind of design decision that shows the developer has actually worked in environments where someone accidentally scaled a production deployment to zero. The BubbleTea foundation makes it fast and responsive, and the lazygit-style layout means most developers can pick it up without reading documentation. It’s too early to call this a k9s replacement — no plugins, no multi-cluster, minimal docs — but for developers who want a clean, safe Kubernetes TUI for daily cluster interactions, ku is worth tracking. The growth trajectory suggests the developer community agrees.

Related

Shared tags