proc
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/procOne command instead of a pipeline
The same jobs, without remembering which flags lsof needs or piping PIDs into kill.
lsof -i :3000 -P -nproc on :3000lsof -i :3000ps -o ppid=proc why :3000lsof -t -i:3000 | xargs kill && sleep 1 && lsof -i:3000proc free :3000while ps aux | grep node | grep -v grep; do sleep 5; doneproc wait nodekill -STOP $(pgrep node)proc freeze nodeproc 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.
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
}