How it works
A browser, your kubeconfig, the API server.
No Go backend, no agents, no WebSocket multiplexer. K8Lens is a Next.js app that uses the official Kubernetes JavaScript client to read straight from your cluster.
01 — The shape of it
Request path
Browser→Next.js route handler→@kubernetes/client-node→kube-apiserver
Credentials never reach the browser. Every call is made server-side with the context you selected, and the response is cached for the few seconds a dashboard needs it.
02 — Two ways to run it
Local for one engineer, in-cluster for a team.
Same app either way. The only difference is whose credentials it uses — your kubeconfig, or an in-cluster service account you control.
Mode A · Dockeravailable now
Run it locally
Pull the image, point it at whatever context you're on. Nothing changes inside the cluster.
$ docker run --rm -p 3000:3000 \
-v ~/.kube:/home/node/.kube:ro \
ghcr.io/codescapes-dev/k8lens:latest
Mode B · Helmcoming soon
Share one dashboard
Deploy into the cluster and let it use the in-cluster service account — best for teams sharing one view.
helm install k8lens k8lens/k8lens \
--namespace k8lens-system --create-namespace
03 — What it needs, what it touches
Kubernetes1.24 and newerTested on kind, k3s, EKS, GKE and AKS
Permissionsget · list · watchA read-only ClusterRole is enough; no verbs that mutate
Metricsmetrics-serverOptional — CPU and memory panels degrade gracefully without it
Footprint~60MB imageMulti-arch (amd64, arm64), sub-second cold start
Data leavingNoneNo telemetry, no account, no outbound calls beyond your cluster
Point it at a cluster and look.
Under five minutes, nothing to uninstall.