Radar OSS · Topology

Your cluster, drawn automatically. Live.

Every Deployment, Service, Ingress, and CRD — laid out by ELK.js, updated via Server-Sent Events, groupable by namespace or label. Open-source, runs on your laptop, installs in 30 seconds.

Apache 2.0 · Runs on your laptop or in-cluster · No account needed
radar · topology
Radar topology view showing a live graph of Kubernetes workloads, services, and dependencies
The problem

kubectl tells you what. It doesn't tell you how things connect.

You can kubectl get ingress, then kubectl describe to find the Service, then grep the selector, then get pods matching those labels, then maybe notice the Service actually points at a different namespace because someone overrode the externalName. By that point you've typed thirteen commands and lost track of what you were trying to answer.

The information is there. The graph is implicit in every YAML on disk. It just doesn't render anywhere.

Radar draws it. Every node is a real resource, every edge is a real relationship, everything is clickable, everything updates without a reload. The thing you've been mentally reconstructing every time you open a terminal — that's the default view.

What it does

Six things the topology view handles by default.

Resources mode + Traffic mode

One view per question. Resources mode shows the ownership DAG — which Deployment owns which Pod, which Service routes to which workload, which Ingress resolves where. Traffic mode shows live flows between services (via Hubble, Caretta, or Istio) with animated RPS.

Group by namespace, app label, or ungrouped

On a 20-namespace cluster the ungrouped view is noise. Flip to namespace grouping and the graph collapses into visual districts. Group by `app.kubernetes.io/name` and you see logical services regardless of which namespace they live in.

Live updates via SSE, not polling

The agent watches your cluster through SharedInformers (the same client-go pattern controllers use). Changes push to the browser over Server-Sent Events. Nothing polls. The graph updates the instant a pod transitions to Ready or an Ingress starts resolving.

Filter by kind, name, or status

Hide Jobs and ReplicaSets when you only care about live workloads. Search by name. Highlight resources in `CrashLoopBackOff` or `ImagePullBackOff`. The graph is the query; the filters are the WHERE clause.

Click any node to open its detail view

Nodes aren't just labels — they're clickable handles into the full resource inspector. YAML, logs, events, related resources, live exec. The graph is your entry point, not your destination.

Custom resources auto-discovered

Argo Rollouts, Flux Kustomizations, Istio VirtualServices, Karpenter NodePools, cert-manager Certificates, your own CRDs — all appear in topology without plugins, via dynamic informers.

Under the hood

Why the graph feels fast.

Three engineering decisions that show up in the UX without being marketing bullet points.

01

SharedInformers, not polling

Same client-go pattern a Kubernetes controller uses. List once, watch deltas forever. No duplicated API calls, no periodic full scans, no rate limits being tripped on large clusters.

02

ELK.js auto-layout

The layered graph layout algorithm from Eclipse Layout Kernel, in the browser. Handles hundreds of nodes without collapsing into spaghetti, and relayouts incrementally as the cluster changes.

03

SSE push, not WebSocket

Server-Sent Events survive corporate proxies, re-establish automatically on disconnect, and don't require a second protocol stack. Updates land in the browser as they happen.

Grouping modes

Flip the grouping. Same data, different story.

The same cluster can be read as a namespace map, a service-label map, or a flat resource graph. Radar keeps all three one click apart. The mode that makes sense at 10am is not the mode that makes sense at 3am.

  • Namespace — collapses the graph into per-namespace districts. Best for ops overview.
  • App label — groups by app.kubernetes.io/name. Best when services span namespaces.
  • Ungrouped — raw DAG. Best for debugging ownership or label chaos.
radar · topology · namespace grouping
Radar topology with namespace-based grouping
Open source

Apache 2.0. Yours to inspect, fork, or self-host.

Radar's source is on GitHub. Every feature on this page is in the binary you install with brew install. No telemetry, no mandatory login, no phone-home. If we ever change that, you'll see it in a diff first.

skyhook-io/radar
1.3k★ GitHub stars
Apache 2.0 · Actively maintained
When one laptop isn't enough

Radar Cloud adds the multi-cluster layer on top.

The topology view stays the same. What Hub adds: one workspace for every cluster, shared deep-links your team can paste into Slack, retention that survives restarts, and RBAC scoped per-namespace instead of whoever-holds-the-kubeconfig.

See what Hub adds vs OSS

Stop reconstructing the graph in your head.

Radar renders it for you. brew install, and you're looking at your cluster in 30 seconds.

Apache 2.0 OSS · Unlimited clusters self-hosted · Hosted free tier for up to 3 clusters