Free & open source

Operate your whole Kubernetes fleet from one desktop app.

Browse every resource, triage events across clusters, tail logs and port-forward — then scale, restart, drain or evict, with a confirmation in front of every destructive step.

  • MIT licensed
  • macOS (Apple Silicon) · Windows · Linux
  • One installer, Java runtime included
KubeKubeDashDash Cluster Overview: KPI tiles, cluster usage gauges, pod status and recent events

Highlights

Runs on your kubeconfig

No account and no agent in your cluster: it connects with the contexts and cloud CLIs you already use.

Safe by design

YAML edits show a diff and pass a server dry run before anything is written. Destructive actions confirm first; reversible ones offer Undo.

Keyboard-first

⌘K jumps to any screen, resource or action. Back and forward work like a browser.

Picks up where you left off

Tabs, screens and window layout come back on the next launch.

Features

Built for the 2 a.m. page.

Triage the whole fleet

The All Clusters tab puts a fleet total, one panel per open cluster and the busiest nodes side by side, counts each cluster's warnings, and merges their events into one filterable feed — with saved presets and a reason heatmap.

All Clusters tab: a fleet total, one usage panel per cluster, top nodes, and a merged warning-event feed

See why a pod fails

Warnings surface at the top of the pod, and each container card says why: the waiting reason, the exit code, and when the last run ended.

Pod detail panel with a warnings callout and a container in CrashLoopBackOff

Secrets stay masked

Secret values are masked in YAML until you reveal them — on purpose, one resource at a time.

Secret YAML with every value masked

Usage history from Prometheus

Pods, Deployments, Jobs, CronJobs, Spark apps and namespaces chart their CPU and memory from 15 minutes to 7 days back, with a marker at each rollout — read from Google Cloud Managed Prometheus or a Prometheus the app finds in your cluster.

A Deployment's resource usage over six hours: CPU, memory, network and CPU throttling charts with a marker at each of two rollouts and the earlier pod's line in grey

Act on many at once

Select pods across the list and evict or delete them together. Scale, rollout restart, cordon, drain, trigger and suspend sit in each resource's header.

Pods list with six rows selected for a bulk action

Port-forward in two clicks

Forward a pod or service to 127.0.0.1, then open, copy or stop it from the drawer's Port forwards tab.

Port forward dialog for a service, mapping port 80 to a local port

Jump anywhere with ⌘K

A fuzzy palette: type part of a name and jump straight to any screen, cluster, namespace, pod, node or CRD.

Command palette matching frontend pods and deployments

Tail a whole namespace

A stern-style merged tail follows a namespace's running pods (up to 40 streams), color-coded per pod — next to per-container log tabs with filter, wrap, timestamps and previous-run logs.

Logs drawer tailing a namespace's pods, color-coded per pod
Retro mode

Or flip it to Retro.

Pixel headings, a retro terminal font, squared corners, and a CRT that powers on when you switch — with optional scanlines. Pure nostalgia; every feature still works.

The app switching to Retro style: a CRT power-on flash, then pixel headings and scanlines
For your AI assistant

Let your AI assistant read your clusters — safely.

Turn on the embedded Model Context Protocol server in Settings → Integrations and point any MCP client at it. It is read-only by design: it binds to 127.0.0.1, can require a bearer token (always required when you open it to your network), and keeps Secret, ConfigMap and Node contents out of its YAML results.

  • list_clusters every open cluster
  • list_resources any kind, any namespace
  • get_resource_yaml one object's YAML
  • get_pod_logs recent lines, by container
MCP client config · SSE
{
  "mcpServers": {
    "kubekubedashdash": {
      "type": "sse",
      "url": "http://127.0.0.1:3001/",
      "headers": {
        "Authorization":
          "Bearer <token from Settings>"
      }
    }
  }
}
Coverage

Every resource kind, one consistent interface

Sortable, live-updating tables — via Kubernetes watch where available, polled otherwise — with keyboard navigation, truncation-on-hover, and a side panel that pairs an Overview with read-only, syntax-highlighted YAML. The same UI covers everything from core workloads to admission webhooks and any CRD on your cluster.

Show all 35 resource kinds, plus any CRD

Cluster

  • Nodes
  • Namespaces
  • Events

Workloads

  • Pods
  • Deployments
  • StatefulSets
  • DaemonSets
  • ReplicaSets
  • Jobs
  • CronJobs

Config

  • ConfigMaps
  • Secrets

Network

  • Services
  • Ingresses
  • IngressClasses
  • Endpoints
  • EndpointSlices
  • NetworkPolicies

Storage

  • PersistentVolumes
  • PersistentVolumeClaims
  • StorageClasses
  • CSIDrivers

Access control (RBAC)

  • ServiceAccounts
  • Roles
  • ClusterRoles
  • RoleBindings
  • ClusterRoleBindings
  • CertificateSigningRequests

Autoscaling & disruption

  • HorizontalPodAutoscalers
  • PodDisruptionBudgets

Governance

  • ResourceQuotas
  • LimitRanges
  • PriorityClasses

Admission

  • ValidatingWebhookConfigurations
  • MutatingWebhookConfigurations

Custom

  • Any CRD discovered on the cluster
Download

Get KubeKubeDashDash

Free and open source under the MIT license. Each installer bundles its own Java runtime — there's nothing else to install.

Homebrew. On an Apple Silicon Mac, brew install --cask beytullah-gunduz/tap/kubekubedashdash installs it, and brew upgrade keeps it up to date.

First launch on macOS. The app isn't notarized yet, so macOS blocks the first launch, and again after each Homebrew upgrade. Open it once, then go to System Settings → Privacy & Security and click Open Anyway (macOS 15 Sequoia and later). On older macOS, Control-click the app in Applications → Open.

Intel Mac or another Linux? The macOS build is Apple Silicon only and the Linux build is a Debian package for amd64. Anything else can be built from source on Temurin 21. Each installer ships with a matching .sha256 on the releases page.

You'll need a ~/.kube/config with at least one cluster. Connecting to EKS, GKE, or AKS uses your existing aws, gcloud, or kubelogin/az CLI; CPU and memory figures need a Metrics Server.

No cluster handy? Try the demo.

Pick Demo Cluster in the connection picker and explore every screen against a built-in simulator — synthetic nodes, pods, seeded CRDs, live-updating metrics, and a steady trickle of events. No kubeconfig required.

Download and explore