Target processes by port, PID, name or path.
proc is a semantic CLI tool for process management on macOS, Linux and Windows. Find what's on a port, why it's there, and stop it, in one command you'd guess on the first try.
~proc kill :3000
Ends whatever is listening on port 3000 immediately (SIGKILL). Asks first, and --dry-run
previews.
A leading colon means a port: proc acts on whatever is listening on it.
brew install yazeed/proc/proc
One command instead of a pipeline
The same jobs, without remembering which flags lsof
needs or piping PIDs into kill
.
lsof -i :3000 -P -n
proc on :3000
lsof -i :3000
, then ps -o ppid=
up the chainproc why :3000
lsof -t -i:3000 | xargs kill && sleep 1 && lsof -i:3000
proc free :3000
while ps aux | grep node | grep -v grep; do sleep 5; done
proc wait node
kill -STOP $(pgrep node)
proc freeze node
proc orphans --in .
Nineteen commands, three jobs
Every command takes the same targets, and almost all take --in
to stay inside one project, --json
for scripts, and --dry-run
before anything changes.
Find out
Read-only. Nothing is touched.
Change it
Asks first, or previews with --dry-run
.
Keep watching
Live views and waiting.
Made for scripts and coding agents
Every command prints one JSON document with --json
, and exit codes always mean the same thing. An agent can read proc the way you do, without parsing tables.
0
success,1
error,2
not found,3
permission denied,4
invalid input--dry-run
shows what would be touched, and nothing else- The agent skill teaches Claude Code, Codex, Cursor, Gemini CLI and others when to reach for proc
❯ proc on :8080 --json | jq '.process | {pid, cwd, uptime_secs}'
{
"pid": 177,
"cwd": "/home/dev/code/shop",
"uptime_secs": 35
}