DEV Community

Cover image for Why we stopped using Lens and built a new OSS K8s IDE/Dashboard
Nadav Erell
Nadav Erell

Posted on • Originally published at skyhook.io

Why we stopped using Lens and built a new OSS K8s IDE/Dashboard

And why you should take 15 seconds to try it yourself :)

The "Good Old Days" of K8s Debugging

If you've been working with Kubernetes for a few years, you probably remember when Lens was the undisputed king of local development. It was fast, it was free, and it just worked. It was just so nice to not have to always resort to plain kubectl.

Of course, things haven't stayed that way...

Lens got acquired and is no longer open source. It also got bloated and slow, and requires you to log in.

Alternatives and forks like Freelens and Headlamp exist, but they're just... ok. Not very feature rich, somewhat plain UI, awkward setup.

K9s is great sometimes, for some people... but the terminal experience is not for everyone, and it's still limiting for lots of things.

Kubernetes Dashboard was another option that got some traction as an official tool, but it was never exceptional, and now that's shut down too.

So our team at Skyhook got frustrated and one day asked: what if we just built the tool we ourselves would want to use? We've already been doing related pieces of this as part of the main Skyhook platform.

So without further ado:

Meet Radar

Radar is our attempt to fix the local K8s development experience.

Radar Main View

We had a few design rules:

  1. Local-First: No cloud logins. No data leaving the machine.
  2. Zero Config: It uses your existing ~/.kube/config. It should just work.
  3. Fast: We hate waiting on slow tools.
  4. Real-Time: No "Refresh" buttons. If a pod dies, I want to see it turn red instantly.

How we built it (The Tech Stack)

Instead of wrapping a heavy web app in Electron, we built Radar as a single Go binary with a React frontend embedded inside (using go:embed).

To get that "instant" feel, we avoided the standard API polling. Instead, we use Kubernetes SharedInformersβ€”the same machinery that K8s controllers use internally.

  • We open a persistent connection to the API server.
  • We watch for deltas (add/update/delete events).
  • We push those changes to the browser frontend via Server-Sent Events (SSE).

Now everything is super fast, updates in real time. Just works.

Cool things you can do

Beyond the table-stakes resource browsing, we added features specifically for the "what is going on?" debugging moments:

  • Topology Graph: We use a structured DAG layout (not a bouncy physics graph) so you can actually see ownership chains and ingress paths.
  • GitOps Native: If you use Flux or ArgoCD, Radar shows their sync status and common operations right alongside the workloads they manage. No plugins required.
  • Helm Dashboard: View, manage, search and install new charts. See their health, upgrade versions.
  • Network Visualization: See real data flows across your microservices and in/out of your cluster, with support for Hubble (for Cilium) and Caretta.
  • Timeline: Because sometimes you really need to track what happened, not just the current state. See events and resource changes over time, grouped by connected resources.
  • Image Filesystem Viewer: A nice hidden gem - browse the files inside a container image directly from the UI without exec-ing in.

Try it out

It’s open source (Apache 2.0), no surprises.

Quick install (15 seconds to install and see live dashboard - yes we timed it):

curl -fsSL skyhook.io/get-radar.sh | bash && kubectl radar
Enter fullscreen mode Exit fullscreen mode

Or install with brew, krew, scoop, or direct download - check out the repo: github.com/skyhook-io/radar

We built this because we needed it, but we’re hoping it helps other devs who are tired of fighting their tools. Let me know what you think!

Top comments (0)