v1.4.2 is out. Read the release notes
Your ports have squatters,so kick them out.
Find the process behind a local port, inspect its family, and clear stale dev servers from the TUI or a script.
Kickoutchi resolves the target again before sending a signal, and nothing dies until you choose a scope.
Linux · macOS · Windowsbinaries kickoutchi and kickMIT
Interactive demo device: a pocket port janitor. Use the scan, inspect, and kick buttons to replay how Kickoutchi finds a process squatting on a port and kicks it out.
See it first
Know the process before you touch it.
A stale dev server is rarely one process. kick inspect shows its parents, children, ports, and the exact cleanup command for the scope you choose.
- 1.Inspect a PID or port in read-only mode.
- 2.Choose one process, its tree, or a Unix process group.
- 3.Type the scope to confirm, then verify the port is free.
When the OS answer is vague
$ kick why 3000"Address already in use" is not an explanation.
kick why checks a process snapshot, tries a short-lived bind, and reports evidence and certainty so an unknown owner never becomes a guessed PID.
Guardrails
Safe by default
Termination starts with a process identity rather than only a port number, so changed or uncertain targets are refused.
Read the safety model- 01Every interactive termination is confirmed, then checked against a fresh process snapshot.
- 02PID 0, PID 1, Kickoutchi's own PID, and Windows PID 4 are blocked outright.
- 03kill --port refuses ambiguous ports instead of guessing which PID to hit.
- 04Protected processes, including Docker owners, require typing the PID or process name to confirm.
- 05Tree scope is opt-in, typed, and bounded; group scope stays Linux/macOS-only.
Pick an interface
Use the TUI to browse and the CLI to automate.
Both interfaces use the same native collectors, labels, filters, and target checks.
Interactive
Guided TUI
Browse a live port table, inspect process details, and confirm one-process or tree cleanup.
kickoutchiHeadless
Scriptable CLI
List ports, explain failed binds, watch changes, inspect process families, and terminate an explicit scope.
kick list --filter 'label:web family:ipv4'What it handles
One native snapshot drives every command.
Kickoutchi reads each operating system directly and uses the same snapshot for the table, process details, filters, JSON, watch events, and bind diagnostics.
Browse the full reference →See who's listening
Reads open TCP and UDP ports directly from each OS without shelling out to ss, netstat, or lsof.
Ask why a port won't bind
kick why PORT combines a process snapshot with a short-lived bind attempt, then reports the evidence behind its verdict.
Watch ports change hands
Emit bound, released, and replaced events in the terminal or as versioned NDJSON.
Inspect before you kick
Read-only inspect shows ancestors, descendants, siblings, command lines, ports, scoped kill hints, and process groups on Linux/macOS.
Linux, macOS, Windows
Each OS has native collection, with tree and group scope on Linux/macOS and inspect plus CLI tree kill on Windows.
Built for scripts
Stable JSON, fixed exit codes, fresh safety checks, and explicit process scopes make automation predictable.
Get it
Install in one line
Use the installer below, a package manager, or a release archive, with checksums and every supported method documented on the install page.
Platforms
- Linux
- Native /proc collection with pidfd-backed tree/group kill and inspect.
- macOS
- Native libproc / sysctl collection with tree/group kill and inspect.
- Windows
- Native IP Helper listing, inspect, single-process kill, and CLI tree kill via Job Objects.
Available packages
Installer, Release archives, Cargo, Nix flake, AUR, Homebrew, Scoop
CLEAR THE SWAMP.
Start with the TUI, or run kick list for a one-shot table.