kubewall: a single-binary Kubernetes dashboard that reads your kubeconfig directly
kubewall - Kubernetes Dashboard for Multi-Cluster Management Real-Time, Self-Hosted, Single Binary, AI-powered. Manage, monitor & debug K8s clusters in your browser, no cloud, no agents.
At a glance
- What is it?
- kubewall combines a multi-cluster web UI, live resource views and optional LLM integration into one Go binary distributed through Docker, Helm, Homebrew, Snap, Winget and Scoop. It is convenient for laptops and jump hosts, and it inherits every weakness of the kubeconfig it reads.
- Who is it for?
- Adopt kubewall if you want a browser view of several clusters from one binary on a workstation or jump host, and you accept that it authenticates with the kubeconfig it is given. Do not adopt it for shared production access until you have checked whether the Helm chart's self-signed certificate on port 8443 fits your ingress and trust model, and whether you want any dashboard holding cluster-admin credentials at all.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 3 days ago.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
The problem kubewall targets: too many terminals, too many contexts
Anyone who operates more than one Kubernetes cluster spends a lot of time in kubectl. Switching contexts, listing pods in a namespace you half-remember, tailing logs across replicas, opening a port forward to check a service: each of these is a separate command with its own flags. The existing web dashboards solve part of this, but they generally assume they are installed inside the cluster they display, which means one dashboard deployment per cluster and a separate access path for each.
kubewall takes the opposite position. The README describes it as an "Open-Source, Single-Binary Kubernetes Dashboard with Multi-Cluster Management & AI Integration", and the install section shows one binary or one container that you point at your local kubeconfig. The Docker example mounts both a kubewall state volume and ~/.kube, which tells you where the cluster list comes from. The intended user is a platform engineer, SRE or developer who already has several contexts in their kubeconfig and wants a browser view over all of them without deploying anything into the clusters themselves. The stated benefits include aggregated pod logs, one-click port forwarding, live refresh and search across namespaces, labels, images and nodes. Those are the daily tasks, not the exotic ones.
How the binary, the kubeconfig and the browser fit together
The architecture visible in the material is a local server plus a browser client. kubewall listens on an address you choose, 127.0.0.1:7080 by default, and serves the dashboard there. It reads cluster credentials from the kubeconfig on the machine where it runs, which is why the Docker command mounts ~/.kube into the container. A second volume, named kubewall and mounted at /.kubewall, holds whatever state the process keeps between runs.
The README's HTTPS tip explains one consequence of that design. The live views use server-sent events, and the note points at Mozilla's documentation on EventSource to explain that without HTTP/2 the browser limits how many connections can be open at once. That is a real architectural detail, not marketing: the dashboard pushes updates to the browser rather than polling, and the transport matters when you have many views open. The optional AI integration is described as connecting to OpenAI, Claude 4, Gemini, DeepSeek, OpenRouter, Ollama, Qwen or LMStudio. Because Ollama and LMStudio are in that list, a fully local setup is possible, and the README's privacy claim ("zero cloud dependency") is consistent with that, though the claim only holds if you do not point the AI feature at a hosted provider.
The throttle flags tell you something about how requests are issued. --k8s-client-qps defaults to 100 and --k8s-client-burst defaults to 200. Those are client-side rate limits for the Kubernetes API. A dashboard that opens many resource views at once can generate a lot of list calls, and these flags exist so you can turn that down on a cluster with a busy API server or a strict API Priority and Fairness configuration.
Install paths and the flags that actually matter
There is no shortage of ways to get the binary. Docker, Helm, Homebrew, Snap, Arch via yay, Winget and Scoop are all listed, plus prebuilt archives for macOS, Linux on amd64, arm64 and i386, and Windows on the same three architectures. The Docker invocation is the one that shows the data flow most clearly:
docker run --network host -v kubewall:/.kubewall -v ~/.kube:/.kube ghcr.io/kubewall/kubewall:latest
The Helm route is a single command against an OCI registry, with the README noting that it runs on port 8443 with self-signed certificates by default. After a local install the README says the dashboard is reachable at http://localhost:7080.
The flag set is small, which is a point in its favour. --listen takes an IP and port (for example 127.0.0.1:7080 or :7080), --no-open-browser stops the process from launching your default browser, and --certFile plus --keyFile enable HTTPS. The README walks through generating local certificates with mkcert: run mkcert kubewall.test localhost 127.0.0.1 ::1, then start the binary with kubewall --certFile=kubewall.test+3.pem --keyFile=kubewall.test+3-key.pem. The Docker section mentions mounting a host directory to /.certs so the same flags can point at certificates inside the container. The throttle flags, --k8s-client-qps and --k8s-client-burst, are the two knobs you would reach for if the dashboard is putting pressure on an API server.
Where kubewall is the wrong tool
The design assumes the person running the binary already has credentials. That is fine for a laptop and questionable for anything shared. A dashboard that reads a kubeconfig is a dashboard that can do whatever that kubeconfig allows, and the README does not describe any user accounts, role separation or audit trail. If your requirement is that each engineer sees only the namespaces they are entitled to, with an access log to prove it, this is not that product. The in-cluster Helm install narrows the gap slightly because the service account can be scoped, but the README does not document what that service account is granted, so you would have to read the chart before trusting it.
The HTTPS guidance is also a signal about deployment posture. The default local listener is 127.0.0.1, which is sensible. The Helm chart ships self-signed certificates on 8443, and the README recommends HTTPS for on-premises or in-cluster use. Self-signed certificates are a development convenience; putting this behind a real hostname means terminating TLS yourself or managing certificate rotation. Neither is described.
Finally, the AI feature is the part I would treat with the most caution. The README lists the providers but does not describe what data leaves the process when you ask a question about a failing pod. Manifests, logs and events are exactly the material that tends to contain environment variables, internal hostnames and occasionally secrets. If you enable a hosted provider, you are making a judgement about that data flow that the documentation does not help you make.
How it compares with the in-cluster dashboard model
The obvious alternative is the official Kubernetes Dashboard, which is deployed into a cluster and reached through an API server proxy or an ingress. The difference in approach is fundamental rather than cosmetic. The official dashboard is a workload in your cluster, subject to your RBAC, your network policies and your ingress. It shows you one cluster per deployment. kubewall is a client-side process that aggregates contexts from a kubeconfig, so multi-cluster is free but per-user authorization is not.
There is a second alternative worth naming for the AI angle: reading logs and manifests with kubectl and piping them into whatever model you already use. That gives you the same summarization without a persistent process holding cluster credentials. The trade-off is that you lose the live views, the port forwarding UI and the search across namespaces, which is most of what kubewall is for. For teams whose clusters are locked down and whose access is already brokered through a bastion with short-lived credentials, the official dashboard plus a terminal is the lower-risk combination. For a single operator who wants one window over six contexts on a laptop, kubewall is the shorter path.
Maintenance cost, release cadence and the licence
The release history shows v0.0.21 in late July, v0.0.22 in mid August and v0.0.23 at the start of September, all in the same year. Three releases in roughly six weeks at a 0.0.x version number means the project is moving quickly and has not declared a stable API. Expect the interface and possibly the flags to change between releases. The binary is distributed through several package managers, so upgrades are cheap on the platforms that have a formula, and manual on the ones that do not. The Docker volume at /.kubewall is the thing to watch during an upgrade, since persisted state may need to survive a version bump and the README does not describe any migration behaviour.
The licence is Apache-2.0, which permits commercial use, modification and redistribution, and includes an explicit patent grant. It also requires that you preserve notices and state significant changes if you redistribute a modified version. That is a permissive arrangement and should not create problems for internal deployment. This is a description of the licence text, not legal advice; if you plan to redistribute a modified build, have someone qualified read the terms.
Editorial conclusion
Adopt kubewall if you want a browser view of several clusters from one binary on a workstation or jump host, and you accept that it authenticates with the kubeconfig it is given. Do not adopt it for shared production access until you have checked whether the Helm chart's self-signed certificate on port 8443 fits your ingress and trust model, and whether you want any dashboard holding cluster-admin credentials at all. Verify first what context the binary picks up from ~/.kube, what the AI feature sends to whichever provider you configure, and how the /.kubewall volume behaves across upgrades.
Community notes