Kaval
Guard your ports.

[kaa-val]Noun • Guard / Watch

See what's listening. Kill what shouldn't be. A developer-focused port and process manager for your terminal. Built in Rust. Fast. Interactive.

v0.0.4 • MIT • macOS & Linux

zsh — kav
Port
Process
PID
Service
CPU
Mem
───────────────────────────────────────────────────────
3000
node
8234
Next.js
2.1%
156MB
5173
node
8301
Vite
0.8%
89MB
5432
postgres
1205
PostgreSQL
1.2%
234MB
6379
redis-server
1189
Redis
0.3%
12MB
8080
nginx
1156
Nginx
0.1%
8MB
27017
mongod
1342
MongoDB
3.4%
512MB
/ Filter^X Kill^D Detail^S Sort^T TCP/UDP^Q Quit

Know your ports. Control your stack.

Stop running lsof | grep five times a day.

🔍

Port Scanner

See every listening port and the process behind it. TCP and UDP, all at a glance.

One-Key Kill

Terminate rogue processes with a single keystroke. SIGTERM or SIGKILL, your choice.

🏷️

Smart Detection

Auto-identifies 30+ dev tools by port and process name. Next.js, Postgres, Docker, and more.

🖥️

Cross-Platform

macOS and Linux. Same binary, same experience. No dependencies.

Interactive

Stop opening Activity Monitor

Kaval gives you a real-time interactive TUI. Filter by process name, sort by port or memory, and kill processes without leaving your terminal. No more switching between windows.

kav — filter active
Filter:/postgres
Port
Process
PID
Service
CPU
Mem
5432
postgres
1205
PostgreSQL
1.2%
234MB
3000
node
8234
Next.js
2.1%
156MB
5173
node
8301
Vite
0.8%
89MB
6379
redis-server
1189
Redis
0.3%
12MB
/ Filter^X Kill^D Detail^S Sort^Q Quit
CLI First

Scriptable. Pipeable. JSON-ready.

Every feature is available from the command line. Pipe output to jq, use exit codes in CI scripts, or build your own tooling on top of Kaval's structured output.

kav list
$kav list
3000 node 8234 Next.js 2.1% 156MB
5432 postgres 1205 PostgreSQL 1.2% 234MB
kav check
$kav check 5432
Port 5432 is in use by postgres (PID 1205)
kav list --json
$kav list --json
[{"port":3000,"process":"node","pid":8234,"service":"Next.js"}, ...]
Safe by default

Power with guardrails

Kaval always asks before killing. You see the process name, PID, and port before confirming. Use --force for SIGKILL when SIGTERM isn't enough. No accidental process murders.

kav — kill confirmation
Selected: postgres (PID 1205) on port 5432
Kill process?[y/N]y
Process 1205 terminated(SIGTERM)
Tip: Use --force flag for SIGKILL on stubborn processes
Smart detection

It knows your stack

Kaval auto-identifies 30+ common developer services by process name and port number. No configuration needed. Your stack, recognized instantly.

Dev Servers
Next.js:3000
Vite:5173
Webpack:8080
Rails:3000
Databases
PostgreSQL:5432
MySQL:3306
Redis:6379
MongoDB:27017
Containers
Docker:2375
Podman:—
Infrastructure
Nginx:80
Caddy:443
Grafana:3000

Kaval vs. the alternatives

See how Kaval compares to tools you already know.

FeatureKavallsof + grepActivity Monitor
Interactive TUI
Service Detection
One-Key Kill
JSON Output
Filter & Sort
Cross-Platform CLI

Ready to guard your ports?

Install Kaval in seconds. No dependencies, no setup, just run it.

zsh — brew
brew update && brew tap AppachiTech/kaval && brew install kaval

Quick Reference

Everything you need, one command away.

kav

Launch interactive TUI with all listening ports

kav list [--json]

Print all listening ports as a table or JSON

kav check <port>

Check if a specific port is in use

kav kill <port> [--force]

Kill the process on a specific port

Frequently Asked Questions

Everything you need to know about Kaval.

Stop guessing. Start guarding.

Free. Open Source. Built in Rust.

Install Now

Free. macOS & Linux. Built in Rust. Read every line.