KubeGlass vs k9s
k9s is a terminal UI for Kubernetes: one program per person, driven from the keyboard, with plugins that bind shell commands to keys. KubeGlass is a web console that runs as one binary on your computer or in a cluster, and its lists use k9s’s keys.
You can use both: k9s in a terminal, and KubeGlass when you want a browser, several clusters side by side, history or access reviews, or something to share with a team.
At a glance
Section titled “At a glance”| KubeGlass | k9s | |
|---|---|---|
| License | AGPL-3.0 | Apache-2.0 |
| Runs as | A binary that opens the UI in your browser, a container, or a Helm chart in a cluster | A terminal program for Linux, macOS, Windows and FreeBSD; latest release v0.51.0, 6 June 2026 |
| Needs | A browser | A 256-colour terminal; kubectl on the PATH for shells and editing |
| Team use | One deployment in each cluster for everyone, each person signed in and acting as themselves | Each person runs their own copy |
| Several clusters | Run from a kubeconfig: every context in one list with its problem counts, a diff between clusters and scheduled drift checks. Installed in a cluster: that cluster only | One context at a time; :ctx switches, and many settings can be set per context |
| Live updates | Watches | Watches |
| Logs | One container, all of a pod’s containers, or merged across a workload’s pods; previous run, search, JSON expansion | One container, all of a pod’s containers, or a workload’s pods; previous run, filter |
| Shells | Pod exec, node shells (opt-in), a shell on your computer (opt-in); split panes, broadcast to several sessions, recording | Pod shell, attach, node shells (opt-in) |
| Port forward | Pods and Services, when KubeGlass runs on your computer | Pods, Services and containers, with benchmarks through hey |
| YAML | View and edit in the browser, with a server-side dry run and a diff | View; e opens kubectl edit in your editor |
| Helm | Releases, history, values, upgrade, rollback, uninstall, and a chart catalog to install from | Releases, values, history, rollback and uninstall; no install or upgrade |
| Argo CD and Flux | Built in, with sync, refresh and rollback | Community plugins in the k9s repository |
| Custom resources | Yes | Yes |
| Access review | An access matrix for any user, group or ServiceAccount, who can do something, and a form for roles and bindings | :can u:<user>, g:<group> or s:<serviceaccount> shows one subject’s rules |
| Metrics | CPU and memory from metrics-server or Prometheus, PromQL, Alertmanager alerts and silences, rightsizing | CPU and memory from metrics-server, and the Pulses view |
| Relationships | A tree on each object’s page | XRay, a tree for Pods, Services, Deployments, ReplicaSets, StatefulSets and DaemonSets |
| Vulnerabilities | Reads the Trivy Operator’s reports | Scans images when you turn it on (marked experimental) |
| Change history | Changes to Deployments, StatefulSets, DaemonSets, CronJobs, Services, Ingresses, ConfigMaps, Secrets and autoscalers, field by field, with revert after a dry run | No |
| Customizing | An extensions file for links, commands to copy, list columns and palette names; light, dark and higher-contrast themes | Plugins that run commands, hotkeys, aliases, custom columns and skins |
| Read-only | --read-only for the server, or one cluster at a time |
--readonly, or readOnly per context |
| UI languages | 8 | English |
Choose k9s if
Section titled “Choose k9s if”- You work in a terminal, including on remote machines over SSH, and want nothing else running: no server, no port, no browser.
- You want plugins that run any command on a key, with the selected object’s name, namespace and context filled in. KubeGlass copies commands from its extensions file to the clipboard and never runs them.
- You want skins, hotkeys and settings per context.
- You use attach, benchmarks with hey, or image scans run by k9s itself, which KubeGlass doesn’t have.
- You prefer the Apache-2.0 license.
Choose KubeGlass if
Section titled “Choose KubeGlass if”- You want the same keys in a browser, or something to give people who don’t use a terminal.
- A team should share one deployment in a cluster, with each person signed in and limited by their own RBAC.
- You want several clusters at once: one list with each cluster’s problems, a diff between clusters, drift checks and an upgrade check.
- You want to know what changed before something broke, who changed it, and to revert it after a dry run.
- You review access and need to know who may do something, not only what one subject may do.
- You install or upgrade Helm charts, or work with Argo CD, Flux and Argo Rollouts without plugins.
- You want Alertmanager alerts, PromQL and rightsizing next to the objects.
Moving from k9s
Section titled “Moving from k9s”KubeGlass reads the same kubeconfig and starts on its current context. Install it and run kubeglass:
brew install kubeglass/tap/kubeglasskubeglassThe keys in KubeGlass’s lists follow k9s. Where they differ, the table says so:
| In k9s | In KubeGlass |
|---|---|
:pod, :deploy kube-system |
The same: : opens the command palette at that kind, with an optional namespace, or all |
:ctx |
@ in the command palette, or ⌘⇧K |
:ns |
# in the command palette, or n |
/ filter, /-l app=web |
/, where app=web, tier!=db and !canary filter by label |
j k, Enter |
j k move; Enter opens the object’s page |
l, p |
Logs and the previous run’s logs |
s |
Shell, for pods. On a Deployment, k9s’s s scales; in KubeGlass scaling is on the object’s page |
y, e |
y and e both open the YAML. KubeGlass edits it in the browser instead of your editor |
d |
Describe |
Shift F |
Forward a port of a pod or Service |
c |
Copy the name |
Space |
Space or x selects; Shift-click selects a range |
Ctrl d |
Delete, after asking |
Ctrl k |
No key. Force delete is on the object’s page |
Shift N, Shift A, Shift S |
The same sorts, plus Shift R, C and M for restarts, CPU and memory |
:xray |
The tree on each object’s page |
:pulses |
The Overview |
:helm |
:helm opens Helm releases |
? |
? lists the shortcuts |
Your k9s configuration moves over in parts:
- Plugins in
plugins.yamlbecomeactionswith acommandin the extensions file. Use{name},{namespace}and{context}where k9s uses$NAME,$NAMESPACEand$CONTEXT. KubeGlass copies the command for you to paste; it doesn’t run it. - Aliases in
aliases.yamlbecomealiases, so:certcan open cert-manager’s Certificates. - Columns in
views.yamlbecomecolumns, each with a path such as.spec.issuerRef.name. - Skins and hotkeys have no equivalent.
To keep k9s at hand, start KubeGlass with --local-shell. Its terminal then opens a shell on your computer with KUBECONFIG set to the cluster you are viewing, so k9s starts there. See Terminal.
Sources
Section titled “Sources”Checked on 5 October 2026.
- License, key bindings, plugins and install: k9s README and LICENSE
- Features (live tracking, RBAC reverse lookup, XRay, Pulses, metrics): k9scli.io
- Commands,
:ctx,--readonlyand XRay’s kinds: k9s commands - Plugins, hotkeys, aliases, columns and skins: plugins, hotkeys, aliases, columns, skins
- Image scans and per-context read-only: k9s configuration and release notes v0.29.0
- Shells and editing run
kubectl: exec.go at v0.51.0 - Node shells: k9s shell
- Benchmarks: k9s bench
- Community plugins for Argo CD, Flux and debug containers: k9s plugins folder
- Latest release: k9s v0.51.0
- Helm releases view: release notes v0.19.3 and helm_history.go at v0.51.0 (rollback)
:can: command.go at v0.51.0- Logs of a workload’s pods: logs_extender.go at v0.51.0
- KubeGlass: keys in lists, command palette, Keyboard shortcuts, Extensions, Terminal, Helm, Access, Timeline, Clusters