██╗ ██╗██████╗ ███╗ ███╗ ██║ ██╔╝██╔══██╗████╗ ████║ █████╔╝ ██║ ██║██╔████╔██║ ██╔═██╗ ██║ ██║██║╚██╔╝██║ ██║ ██╗██████╔╝██║ ╚═╝ ██║ ╚═╝ ╚═╝╚═════╝ ╚═╝ ╚═╝
Monitor Docker containers and Kubernetes pods from a single terminal interface.
KDM (Kubernetes Docker Monitor) is a lightweight CLI tool that automatically detects and monitors running Docker containers and Kubernetes pods. It provides real-time health status, live dashboards, log fetching, and alert notifications — all from your terminal.
Unlike tools that focus on a single runtime (k9s for Kubernetes or lazydocker for Docker), KDM gives you a unified view of both worlds.
| Feature | Description |
|---|---|
| Auto-Detection | Automatically discovers Docker containers and Kubernetes pods in your environment |
| Unified Runner View | Combined table of Docker and Kubernetes workloads in a single command |
| Health Monitoring | Color-coded health status with watch mode for continuous polling |
| Live Dashboard | Real-time Ink-based TUI that refreshes every 3 seconds |
| Log Fetching | Retrieve logs from containers or pods with automatic Docker-to-Kubernetes fallback |
| Alert Notifications | Send alerts via Discord webhook or email SMTP on failures |
| Minikube Support | Check Minikube profile status and connectivity |
Requirements:
- Node.js >= 18
- Docker daemon (for container features)
- Kubernetes cluster or Minikube (for pod features)
Once installed, run KDM with no arguments to display the welcome banner, connection status, and available commands:
kdmYou should see output similar to:
Docker: ✔ CONNECTED (3 running)
Kubernetes: ✔ CONNECTED (5 running)
Minikube: ✔ RUNNING
Display running containers, pods, or both in a formatted table.
kdm show runners # Combined view: pods + containers
kdm show pods # Kubernetes pods only
kdm show containers # Docker containers only
kdm show minikube # Minikube profile statusCheck and monitor the health of your workloads with color-coded output.
kdm health all # Both pods and containers
kdm health pods # Pods only
kdm health containers # Containers only
kdm health all -w # Watch mode: auto-refresh every 5 seconds
kdm health pods -w -i 2 # Watch mode: refresh every 2 secondsMonitor all workloads in real time with an interactive terminal dashboard.
kdm watch # Opens Ink-based live dashboard (Ctrl+C to exit)Retrieve the last 100 lines of logs from a container or pod. Docker is tried first; Kubernetes is used as a fallback.
kdm logs <name> # Container name/ID prefix or pod nameSet up notification services and manage configuration interactively.
kdm config setup # Interactive setup (Discord webhook / Email SMTP)
kdm config list # Show current configuration
kdm config set <key> <value> # Set a specific value
kdm config clear # Clear all configurationkdm --help # Show all commands and options
kdm <command> --help # Show help for a specific commandKDM stores configuration locally using the conf package.
| OS | Path |
|---|---|
| macOS | ~/Library/Application Support/kdm-cli |
| Linux | ~/.config/kdm-cli |
| Windows | %APPDATA%\kdm-cli |
| Variable | Description |
|---|---|
KDM_SMTP_PASSWORD |
SMTP password (overrides stored config for security) |
Set up alerts to be notified when containers restart or pods enter failure states (CrashLoopBackOff, ImagePullBackOff, Failed, etc.).
kdm config setupSupports:
- Discord — via webhook URL
- Email (SMTP) — via SMTP credentials
Alerts are rate-limited with a configurable cooldown (default: 300 seconds).
kdm config set alert_cooldown 600 # 10 minutes between alertsKDM automatically checks for failure conditions and sends notifications when configured:
| Condition | Severity | Source |
|---|---|---|
| Container restarting | Warning | Docker |
| Container non-zero exit | Critical | Docker |
Pod phase is Failed |
Critical | Kubernetes |
CrashLoopBackOff |
Critical | Kubernetes |
ImagePullBackOff |
Critical | Kubernetes |
CreateContainerConfigError |
Critical | Kubernetes |
| Technology | Purpose |
|---|---|
| TypeScript + Node.js | Runtime and language |
| Commander.js | CLI framework and argument parsing |
| dockerode | Docker daemon API client |
| @kubernetes/client-node | Kubernetes API client |
| Ink + React | Interactive terminal UI (watch mode) |
| chalk | Terminal string coloring |
| cli-table3 | Table rendering |
| conf | Persistent configuration |
| nodemailer | Email alerts |
| tsup | High-performance bundler |
For detailed command reference, see:
We welcome contributions of all kinds — bug reports, feature suggestions, and pull requests.
Please read our Contribution Guide and Code of Conduct before getting started.
git clone https://github.com/KDM-cli/kdm-cli.git
cd kdm-cli
npm install
npm run dev # Watch mode for development
npm test # Run test suite
npm run build # Production buildThanks goes to these wonderful people (emoji key):
This project follows the All Contributors specification. Contributions of any kind are welcome!
GNU Affero General Public License v3.0 — See LICENSE for full terms.
Maintained by KDM-cli · Built with ❤️ by the community