Non Vim TUI for K8s that you don't hate

obergs1 pts0 comments

GitHub - olafurbergs/krowser · GitHub

/" data-turbo-transient="true" />

Skip to content

Type / to search

Sign in<br>Sign upAppearance settings

You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.

Dismiss alert

{{ message }}

olafurbergs

krowser

Public

Notifications<br>You must be signed in to change notification settings

Fork

Star

main

BranchesTags

Go to file

CodeOpen more actions menu

Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit

History<br>4 Commits<br>4 Commits

cmd/krowser

cmd/krowser

docs

docs

internal

internal

.gitignore

.gitignore

LICENSE

LICENSE

Makefile

Makefile

README.md

README.md

go.mod

go.mod

go.sum

go.sum

View all files

Repository files navigation

krowser

██╗ ██╗ ██████╗ ██████╗ ██╗ ██╗ ███████╗ ███████╗ ██████╗<br>██║ ██╔╝ ██╔══██╗ ██╔═══██╗ ██║ ██╗ ██║ ██╔════╝ ██╔════╝ ██╔══██╗<br>█████╔╝ ██████╔╝ ██║ ██║ ██║╚██╗██║ ███████╗ █████╗ ██████╔╝<br>██╔═██╗ ██╔══██╗ ██║ ██║ ██║ ╚████║ ╚════██║ ██╔══╝ ██╔══██╗<br>██║ ██╗ ██║ ██║ ╚██████╔╝ ██║ ╚███║ ███████║ ███████╗ ██║ ██║<br>╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚══╝ ╚══════╝ ╚══════╝ ╚═╝ ╚═╝

A slick Kubernetes TUI browser built with Bubble Tea v2,<br>Bubbles v2, and Lip Gloss v2.

Browse clusters, namespaces, and resources, stream syntax-highlighted logs, scale and delete<br>workloads, and manage port-forwards — all from your terminal.

Features

Navigation — context, namespace, and resource (kind) pickers with k9s-inspired keybindings

Resource tables — typed columns, / fuzzy filtering, and auto-refresh

Detail views — YAML and describe output with selectable Secret data (decoded in place)

Pod logs — live follow, container switching, timestamp toggle, and<br>syntax highlighting for log levels, timestamps, numbers, URLs, IPs, UUIDs, and more

Mutating actions — delete, scale, rollout restart, and edit, all behind a confirm dialog

Port-forwards — open and manage port-forwards from the cluster

CPU/memory gauges — a live top view with gradient progress bars when metrics-server is available

Themes — 10 color themes, selectable with T or --theme, with the selection persisted across runs

Extras — toast notifications, focus blur, help overlay

Demo

A ~45s walkthrough recording showing a kind cluster being browsed with krowser:<br>resource tables, syntax-highlighted live logs, YAML detail, theme switching, and the<br>CPU/memory gauges.

asciinema play docs/krowser-demo.cast

The cast is also ready to upload for an embedded player:

asciinema upload docs/krowser-demo.cast

Requirements

Go 1.25+ (the go 1.25 directive triggers an automatic toolchain download on 1.21+)

A kubeconfig with access to a cluster (KUBECONFIG or ~/.kube/config)

A terminal with truecolor support for the full palette

Install

go install github.com/olafurb/krowser@latest

Build & run

make build<br>./bin/krowser --kubeconfig ~/.kube/config

The Makefile also provides make test (with -race), make lint, and make fmt.

CLI flags

Flag<br>Description

--kubeconfig PATH<br>path to the kubeconfig (default: $KUBECONFIG or ~/.kube/config)

--context NAME<br>kubeconfig context to use

--namespace NAME<br>namespace to browse (default: the context namespace, or all namespaces if none is set)

--all-namespaces<br>browse all namespaces

--theme NAME<br>theme name (default: Monokai)

Usage

Keybindings

Key<br>Action

↑ / ↓<br>navigate rows

Enter<br>open detail (a pod/node in top too)

y / d<br>YAML / describe

stream logs

fuzzy filter (type to filter, esc clears)

n / g<br>namespace picker / all namespaces

switch context

pick a kind

refresh

x / s / R / e<br>delete / scale / restart / edit

port-forward

top (metrics)

themes

help overlay

q / esc<br>back

Ctrl-C<br>quit

Logs screen

Key<br>Action

toggle follow mode

toggle timestamps

pick a container

q / esc / ←<br>back

Theming

Press T to open the theme picker or pass --theme "Dracula" on startup. Themes: Monokai,<br>One Dark, Dracula, Nord, Gruvbox Dark, Solarized Dark, Catppuccin Mocha, Tokyo Night,<br>Solarized Light, and Catppuccin Latte.

The theme you select is persisted to ~/.local/share/krowser/theme<br>($XDG_DATA_HOME/krowser/theme if set) and restored on the next launch. A --theme flag<br>takes precedence over the saved selection.

Project layout

cmd/krowser CLI entry point (flags, kubeconfig wiring)<br>internal/k8s Kubernetes client helpers (list, logs, top, forwards, actions)<br>internal/tui Bubble Tea application<br>app.go root model, navigation, theming, chrome<br>resource.go typed resource tables with filtering<br>detail.go YAML / describe / secret views<br>logs.go streamed, syntax-highlighted pod logs<br>top.go live CPU/memory gauges<br>picker.go contexts, namespaces, kinds, containers, themes<br>theme(s).go theme registry and palette<br>loghl/ log syntax-highlighting engine (see Acknowledgments)

Testing

make test

The suite covers the resource tables, pickers, themes, metrics formatting, and...

krowser theme logs kubeconfig namespaces resource

Related Articles