kubetbe is a lightweight TUI companion for kubectl. It focuses on the daily workflow of jumping between namespaces, finding pods, watching logs, deleting resources and quickly answering questions like “which service owns this IP?” – all from the terminal.
Built with Bubble Tea and Go.
- 🎯 Namespace navigator with optional CLI filtering (
kubetbe prod) and built‑in paging (10 items per page). - 🔁 Live pod view that refreshes automatically while preserving scroll position.
- 🪵 Structured log panes – each pod gets its own scrollable panel.
- 📝 Describe on demand: press
ito fetchkubectl describe pod, rendered inline. - ❌ Resource actions: delete namespaces (
din namespace view) and pods (din pod view) with confirmation. - 🔎 Find service by IP: press
f, enter an IP, immediately see matchingkubectl get services --all-namespaces -o widerows. - 🧭 Keyboard-first UX with Vim style movement, tab cycling between panels, and page navigation via
Tab,Shift+Tab,←,→.
kubectlconfigured to talk to the cluster you want to inspect.- To build from source: Go 1.21+.
- To use prebuilt binaries: no Go toolchain required.
Prebuilt binaries are published per release. Run:
curl -fsSL https://raw.githubusercontent.com/alpdogan/kubetbe/main/install.sh | bashThe script:
- Fetches the latest version from GitHub Releases automatically.
- Detects your platform (macOS Intel/Apple Silicon, Linux AMD64).
- Downloads the matching binary from the latest GitHub Release.
- Installs it to
~/.local/bin(change viaINSTALL_DIR=/custom/path). - If
kubetbeis already installed, it will update to the latest version (or skip if already up to date).
PATH reminder
Add~/.local/binto your shell configuration if it is not already there:# zsh (default on macOS) echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc && source ~/.zshrc # bash (often default on Linux) echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc
You can also clone the repo and run the script locally:
git clone https://github.com/alpdogan/kubetbe.git
cd kubetbe
INSTALL_DIR=/usr/local/bin bash install.sh # requires sudo, optionalgit clone https://github.com/alpdogan/kubetbe.git
cd kubetbe
go build -o kubetbe .
./kubetbe # optional search term: ./kubetbe prod| Key(s) | Action |
|---|---|
↑ / k / ↓ / j |
Move selection (automatically flips pages) |
Tab / → / l |
Next page (10 namespaces per page) |
Shift+Tab / ← / h |
Previous page |
Enter |
Open selected namespace (switch to panel view) |
d |
Delete namespace (confirmation required) |
f |
Find service by IP (enter IP, Esc to cancel) |
Esc |
Close service lookup results |
r |
Refresh namespace list |
q, Ctrl+C |
Quit |
Tip: you can start the app filtered by a string: kubetbe zeus shows only namespaces containing “zeus”.
Layout:
- Pods Panel (top, fixed height) – follows
kubectl get pods. - Log Panel(s) (bottom) – one per pod; only the active log pane is shown at a time.
Describe: appears in place of logs when toggled.
| Key(s) | Action |
|---|---|
Tab / Shift+Tab |
Cycle between pods panel, describe (if open), log panels |
↑ / k / ↓ / j |
Scroll pods or logs (depending on active panel) |
PgUp / PgDn |
Page scroll logs/describe |
Home / End |
Jump to top/bottom of logs/describe |
i |
Toggle describe for the selected pod |
d |
Delete highlighted pod (with confirmation) |
b |
Back to namespace view |
q, Ctrl+C |
Quit |
While in the namespace selection screen press f:
- Enter an IP (e.g.,
0.0.0.0). - Hit
Enter– matching rows fromkubectl get services --all-namespaces -o wideappear. Escclears the results.
- Pods and logs refresh continuously using Bubble Tea commands.
- Log tail is currently
--tail=50; tweak inkubectl/commands.go. - Namespace pagination adapts to terminal height but caps list length at 10 per page.
- The application keeps
kubectlinvocations simple so you can reason about what is happening under the hood.
go test ./...
go run main.goBinary builds for release:
GOOS=darwin GOARCH=amd64 go build -o kubetbe-darwin-amd64 .
GOOS=darwin GOARCH=arm64 go build -o kubetbe-darwin-arm64 .
GOOS=linux GOARCH=amd64 go build -o kubetbe-linux-amd64 .Upload these artifacts to a GitHub Release so the install script can fetch them.
Happy debugging! Contributions, bug reports and feature suggestions are welcome. Data plane feeling a little foggy? kubetbe is here to help. 🎉