qb-0.3.0-beta.2 is not a library.
qb — EMACS for Kubernetes
A powerful, extensible terminal UI for managing Kubernetes clusters.
qb communicates directly with the Kubernetes API server using your kubeconfig.
It does not shell out to kubectl — all cluster communication is native via the kube crate.
┌ minikube > All Namespaces > Deployments ──────────────────── ⟳ just now ──┐
├──────────────────────────┬────────────────────────────────────────────────┤
│ CLUSTER │ NAME NAMESPACE READY UP AGE │
│ Cluster │▶ nginx-ingress ingress 3/3 3 12d │
│ Overview │ coredns kube-system 2/2 2 30d │
│ Nodes │ metrics-server monitoring 1/1 1 5d │
│ Namespaces │ │
│ Events │ │
│ Workloads │ │
│ Deployments (3) │ │
│ StatefulSets (1) │ │
│ Pods (8) │ │
│ Network │ │
│ Services (4) │ │
│ Config │ │
│ ConfigMaps │ │
│ Secrets │ │
│ GLOBAL │ │
│ Port Forwards │ │
├──────────────────────────┴────────────────────────────────────────────────┤
│ r Resources c minikube n All Namespaces ^p Palette ? Help q Quit │
└───────────────────────────────────────────────────────────────────────────┘
Features
Browse & Navigate
- All resource types — Deployments, StatefulSets, DaemonSets, ReplicaSets, Pods, CronJobs, Jobs, HPAs, Services, Ingresses, Endpoints, NetworkPolicies, ConfigMaps, Secrets, PVCs, PVs, StorageClasses, ServiceAccounts, Roles, RoleBindings, ClusterRoles, ClusterRoleBindings, Nodes, Namespaces, Events
- Resource count badges — Sidebar shows cached counts next to each type
- Multi-cluster — Switch between kubeconfig contexts (
c) or load a different kubeconfig (O) - All namespaces by default — Namespace column appears automatically; filter with
n - Smart detail view — Structured rendering per resource type with describe-style events
- YAML view — Syntax-highlighted YAML, toggle with
v - Auto-refresh — Lists and detail views refresh every 2s, preserving scroll and selection
- Watch mode — Detail view auto-refreshes (on by default, toggle with
w)
Act
- Edit resources (
e) — Opens in$EDITOR, shows diff preview, apply with Enter - Create resources (
C) — Opens$EDITORwith YAML template, applies on save - Delete resources (
D) — Confirmation popup - Scale workloads (
S) — Deployments, StatefulSets, ReplicaSets - Restart workloads (
R) — Deployments, StatefulSets, DaemonSets - Diff resources (
d) — Mark one resource, select another, see side-by-side diff
Logs
- Live streaming — Follow logs from all pods/containers of a workload
- Regex filter —
/to filter, matches highlighted - Line selection —
j/kor mouse click to select,Enterto open full line - Wrap toggle (
w) — Wrap long log lines - Pod/container selector —
p/cto narrow down
Favorites & Profiles
- Favorite resources (
*) — Star any resource from list or detail view - Favorites view — Dedicated sidebar section showing all starred resources
- Profiles — Save/load named profiles (
Ctrl+Sto save,Pto load) - Persistent config — Favorites and port forwards are saved to
~/.config/qb/config.yaml - Missing indicator — Shows
⚠for favorites whose cluster context is no longer reachable
Port Forwarding
- Create (
F) — Forward any service, deployment, or pod port to localhost - Auto-restart — Forwards survive pod restarts and rolling updates
- Persistent — Port forwards are saved to your profile and restored on next launch
- Manage — View all forwards under Port Forwards in sidebar; pause/resume/cancel
Exec (Experimental)
- Quick exec (
x) — Opens/bin/shin a new terminal window - Custom exec (
X) — Choose container, command, and terminal app - Requires
qb -eflag and$TERMINALor$TERM_PROGRAMenv var
Command Palette & Search
- Command palette (
Ctrl+P) — Fuzzy search resources,>prefix for commands - Global search (
Tabin palette) — Search across ALL resource types - Resources searchable as
type/name(e.g.deployment/myapp,service/frontend) - Help (
?) — Searchable keybinding reference
Secret Management
- Decode secrets —
Spaceto decode individual values in-place - Copy to clipboard —
yto copy decoded plaintext
Mouse Support
- Click to select resources, scroll wheel navigation, click popup items
- Click log lines to select (when not wrapping)
Installation
From crates.io
Requires Rust 1.75+.
From source
# Binary is at target/release/qb
Usage
Switch kubeconfig at runtime with O. Switch context with c. Switch namespace with n.
How It Works
qb uses the kube crate to communicate directly with the Kubernetes API server. Authentication and cluster connection details are read from your kubeconfig file (~/.kube/config or $KUBECONFIG).
The TUI is built with ratatui and crossterm. API calls are deferred and executed between render frames to keep the UI responsive. Log streaming and port forwarding use async tasks with channels.
License
MIT