Skip to content

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.

SCAN
KICK
INSPECT

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. 1.Inspect a PID or port in read-only mode.
  2. 2.Choose one process, its tree, or a Unix process group.
  3. 3.Type the scope to confirm, then verify the port is free.
kick • inspect, confirm, verify
$ kick inspect --port 3000Target: PID 18422 (node)  Ports: TCP 127.0.0.1:3000Ancestors (nearest first):  PID 18190 (pnpm); pnpm devTree (3 processes):  PID 18422 (node) [TCP 127.0.0.1:3000]    PID 18431 (vite)    PID 18444 (esbuild)To terminate this tree: kick kill --pid 18422 --tree$ kick kill --pid 18422 --treeScope: tree (3 processes)Type tree to terminate all 3 processes, or press Enter to cancel: treesent SIGTERM to 3 process(es) in the tree rooted at PID 18422 (node)confirmed target ports are no longer visible

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.

Read about Watch & Why →

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
  1. 01Every interactive termination is confirmed, then checked against a fresh process snapshot.
  2. 02PID 0, PID 1, Kickoutchi's own PID, and Windows PID 4 are blocked outright.
  3. 03kill --port refuses ambiguous ports instead of guessing which PID to hit.
  4. 04Protected processes, including Docker owners, require typing the PID or process name to confirm.
  5. 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.

shell
kickoutchi
Explore the TUI

Headless

Scriptable CLI

List ports, explain failed binds, watch changes, inspect process families, and terminate an explicit scope.

shell
kick list --filter 'label:web family:ipv4'
Explore the CLI

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.

Linux & macOS
$ curl --proto '=https' --tlsv1.2 -LsSf \    https://github.com/nuggocto/kickoutchi/releases/latest/download/kickoutchi-installer.sh \    | sh
See install and verification options

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.