KDash - A fast and simple dashboard for Kubernetes

A simple terminal dashboard for Kubernetes built with Rust

New since v0.6.2
- Troubleshoot tab surfaces severity-ranked findings for Pods, PVCs, and ReplicaSets, then lets you jump straight into containers, logs, describe, and YAML.
- Events tab shows Kubernetes events with namespace, involved kind, reason, count, message, and age, with the same describe/YAML workflows as other resources.
- Deeper drill-down navigation lets you move from workloads to owned Pods, from Pods to Containers, and from Nodes to the Pods scheduled on them.
- Aggregate workload logs combine logs from all pods owned by a workload into a single stream.
- Inline
/filtering now works across resource tables and views, including Contexts, Help, Utilization, Troubleshoot, More, and Dynamic resource menus. - Smarter resource tab and menu counts hide zero-count badges in the resource tabs, show cached counts for Dynamic menu entries, and use
?when a Dynamic kind has not been fetched into cache yet. - Configurable keybindings and themes let you override shortcuts and colors, and
log_tail_lineslets you set the initial history fetched before live log streaming starts. - Better diagnostics and reliability include recent-error dump to file, kubeconfig live reload, friendlier errors, and smoother log/render performance.
- Configurable CLI Info lets you disable built-in probes, add custom commands with optional regex-based version extraction
- More columns are shown if viewport is wide enough for most resources including a new 'w' keybind to show all.
Sponsors
Thanks to the sponsors of @deepu105 who makes maintaining projects like KDash sustainable. Consider sponsoring if you like the work.
Installation
Homebrew (Mac & Linux)
# If you need to be more specific, use:
To upgrade
Scoop (Windows - Recommended way)
Chocolatey (Windows)
Chocolatey package is located here. Since validation of the package takes forever, it may take a long while to become available after a release. I would recommend using Scoop instead for Windows.
# Version number may be required for newer releases, if available:
To upgrade
Cargo
If you have Cargo installed then you install KDash from crates.io
# if you face issues with k8s-openapi crate try the below
You can also clone the repo and run cargo run or make to build and run the app
Nix (Maintained by third party)
Try out kdash via nix run nixpkgs#kdash or add kdash to your
configuration.nix for permanent installation.
Install script
Run the below command to install the latest binary. Run with sudo if you don't have write access to /usr/local/bin. Else the script will install to the current directory. Alternatively, set BIN_DIR environment variable e.g. BIN_DIR=~/.local/bin to override the default install location.
|
Manual
Binaries for macOS (x86_64, arm64), Linux GNU/MUSL(x86_64, armv6, armv7, aarch64) and Windows (x86_64, aarch64) are available on the releases page
- Download the latest binary for your OS.
- For Linux/macOS:
cdto the file you just downloaded and runtar -C /usr/local/bin -xzf downloaded-file-name. Use sudo if required.- Run with
kdash
- For Windows:
- Use 7-Zip or TarTool to unpack the tar file.
- Run the executable file
kdash.exe
Docker
Run KDash as a Docker container by mounting your KUBECONFIG. For example the below command for the default path
# If you want localhost access from the container
You can also clone this repo and run make docker to build a docker image locally and run it using the above command
Troubleshooting
Note: This may not work properly if you run Kubernetes locally using Minikube or Kind
Note: On Debian/Ubuntu you might need to install
libxcb-xfixes0-devandlibxcb-shape0-dev. On Fedoralibxcbandlibxcb-develwould be needed.
Note: On Linux you might need to have package
xorg-dev(Debian/Ubuntu) orxorg-x11-server-devel(Fedora) or equivalent installed for the copy to clipboard features to work
Note: If you are getting compilation error from openSSL. Make sure perl and perl-core are installed for your OS.
USAGE:
Press ? while running the app to see keybindings
Configuration
KDash supports config-based keybinding and theme overrides, plus a configurable default for historical log lines fetched before live streaming starts.
By default it reads config from:
~/.config/kdash/config.yaml
You can also point it at a specific file with:
KDASH_CONFIG=/path/to/config.yaml
Theme overrides support separate light and dark values:
theme:
dark:
primary: "#89B4FA"
background: "#11111B"
light:
primary: "#D20F39"
background: "#FAF7F0"
Keybindings are overridden by binding name:
keybindings:
filter: f
help: h
describe_resource: i
resource_yaml: v
Log streaming history can also be tuned:
log_tail_lines: 250
CLI Info entries can be configured too. Built-in entries remain enabled by default, missing binaries are hidden by default, you can disable any built-in by label, and you can add custom probes with a label plus command:
cli_info:
hide_missing_binaries: false
disable_defaults:
- docker
custom:
- label: istioctl
command:
regex: '\b(v?[0-9]+\.[0-9]+\.[0-9]+)\b'
Set hide_missing_binaries: false if you want missing CLIs to stay visible as Not found.
Built-in labels are: kubectl client, kubectl server, docker, docker-compose, podman, containerd, helm, and kind. For custom commands, regex is optional: if provided, the first capture group is shown; otherwise the first non-empty stdout line is shown.
See the sample config in assets/kdash.sample-config.yaml for a complete example with both custom keybindings and custom light/dark theme overrides.
FLAGS:
-h, --help: Prints help information-V, --version: Prints version information-t, --tick-rate <tick-rate>: Set the tick rate (milliseconds): the lower the number the higher the FPS.-p, --poll-rate <poll-rate>: Set the network call polling rate (milliseconds, should be multiples of tick-rate): the lower the number the higher the network calls.--log-tail-lines <log-tail-lines>: Set how many historical log lines to fetch before live streaming starts.-d, --debug[=<debug>]: Enables debug mode and writes logs tokdash-debug-<timestamp>.logfile in the current directory. Default behavior is to write INFO logs. Pass a log level to overwrite the default [possible values: info, debug, trace, warn, error]
Limitations/Known issues
- [Linux/Docker] Copy to clipboard feature is OS/arch dependent and might crash in some Linux distros and is not supported on
aarch64andarmmachines. - [macOS] KDash looks better on iTerm2 since macOS's default Terminal app makes the colors render weird.
- [Windows] KDash looks better on CMD since Powershell's default theme makes the colors look weird.
- [Windows] If using k3d for local clusters, set the server URL to 127.0.0.1 as 0.0.0.0 doesn't work with kube-rs. You can use
k3d cluster create --api-port 127.0.0.1:6550or change thecluster.servervalue in your.kube/configfor the k3d cluster to127.0.0.1:<port>.
Features
- CLI info
- Node metrics
- Resource watch (configurable polling interval with
-pflag) - Custom resource definitions
- Troubleshoot tab for Pods, PVCs, and ReplicaSets
- Describe resources & copy the output
- Get YAML for resources & copy the output
- Stream container logs
- Aggregate workload logs
- Drill down from workloads/nodes to Pods and from Pods to Containers
- Open a shell in the selected pod container from the Containers view. KDash temporarily suspends the UI while the interactive shell is active and restores it when you exit.
- Context
- Context info
- Context watch
- Change namespace
- Context switch
- Resources utilizations for nodes, pods and namespaces based on metrics server. Requires metrics-server to be deployed on the cluster.
- Dark/Light themes (Catppuccin Macchiato/Latte by default)
- Sensible keyboard shortcuts
- Configurable keybindings, theme overrides, and log tail defaults
- Inline filtering across resource views and menus
- Dynamic menu entries show cached item counts when available and
?when the count is not cached yet
Screenshots
Overview screen

Container logs screen (light theme)

Pod describe screen (light theme)

Contexts screen

Utilization screen

Libraries used
How does this compare to K9S?
K9S is a beast compared to this as it offers way more features including CRUD actions.
KDash only offers a view of the resources with a focus on speed and UX. Really, if something is slow or has bad UX then please raise a bug. Hence the UI/UX is designed to be more user-friendly and easier to navigate with contextual help everywhere and a tab system to switch between different resources easily.
At least for now, there are no plans to add full CRUD for resources but in the future, we might.
Licence
MIT