Kaval (காவல், Tamil for "Guard/Watch") is a developer-focused port and process manager TUI built in Rust.
Stop running lsof -i :3000 | grep LISTEN. Kaval shows all listening ports, maps them to processes, identifies known dev tools, and lets you kill with a keystroke.
- See everything at a glance — all listening ports with process name, PID, CPU, memory, uptime
- Smart service detection — recognizes Vite, Next.js, PostgreSQL, Redis, Django, Docker, and 30+ more
- Interactive TUI — filter, sort, navigate, kill processes — all from one screen
- One-shot commands —
kav list,kav check 3000,kav kill 3000for scripting - JSON output —
kav list --jsonfor piping to other tools - Color-coded — green for dev servers, yellow for databases, purple for caches
Homebrew (recommended):
brew update && brew tap AppachiTech/kaval && brew install kavalManual (macOS):
curl -sL https://downloads.appachi.tech/macos/kav-macos-latest.tar.gz | tar xz
sudo mv kav /usr/local/bin/Manual (Linux):
curl -sL https://downloads.appachi.tech/linux/kav-linux-latest.tar.gz | tar xz
sudo mv kav /usr/local/bin/Build from source:
cargo build --release
sudo cp target/release/kav /usr/local/bin/brew upgrade kaval # HomebrewManual install users can re-run the install command — the URL always points to the latest release.
kav # Launch interactive TUI
kav list # Print all listening ports
kav list --json # JSON output
kav check 3000 # What's on port 3000?
kav kill 3000 # Kill process on port 3000
kav kill 3000 -f # Force kill (SIGKILL)| Key | Action |
|---|---|
↑/↓ or j/k |
Navigate |
/ |
Filter by port, name, or service |
Ctrl+X |
Kill selected process (with confirmation) |
Ctrl+K |
Force kill (SIGKILL, no confirmation) |
Ctrl+D |
Toggle detail pane |
Ctrl+S |
Cycle sort (Port → Name → CPU → Mem) |
Ctrl+T |
Toggle TCP/UDP filter |
Ctrl+R |
Force refresh |
Ctrl+Q / Esc |
Quit |
- Zero storage: Kaval writes nothing to disk. No config, no logs, no database.
- Zero network: Kaval makes no network connections of any kind.
- Zero telemetry: No analytics, no crash reports, no data collection.
MIT — Madhubalan Appachi