Skip to content

Port janitor · v1.1.2

Your ports have squatters.Kick them out.

Kickoutchi shows which process owns each open TCP/UDP port, lets you inspect the family around it, then terminates stale port-owning processes safely — from a guided TUI or a script-friendly CLI.

linux · macos · windowstwo binaries: kickoutchi & 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

01 · Inspect first

See the whole family before you swing the boot.

A stale dev server is rarely one process. kick inspectshows ancestors, descendants, and the process group — read-only — then tells you the exact command for the scope you choose. Nothing dies until you type it.

  • 01Inspect the PID or port — who spawned it, what it spawned.
  • 02Pick a scope: one process, the tree, or the Unix process group.
  • 03Type the scope word to confirm. Kickoutchi verifies the port is really free.

02 · Two ways in

Two ways to clear the swamp

Open the TUI when you want to look around. Reach for the CLI when you already know the target.

The swamp tour

Guided TUI

Run either binary with no command to open the terminal UI. Browse, search, sort, inspect details, and use x/X for one PID or t/T for Linux/macOS tree cleanup.

shell
kickoutchi
Explore the TUI

The swamp shortcut

Scriptable CLI

Print ports as a table or stable JSON, inspect process families, and choose process, tree, or Unix group scope with a fixed exit-code contract.

shell
kick list --json
Explore the CLI

03 · The arsenal

A small tool that takes ports seriously

Practical first, playful second. Everything here is real behaviour.

See every open port

Lists listening TCP sockets and bound UDP sockets using native collectors • no scraping ss, netstat, or lsof.

Know what owns it

Shows PID, process name, parent, path, command line, bind scope, and permission status whenever the OS lets it through.

Tree and group cleanup

Opt in to --tree for descendants when a stale dev stack has more than one PID. POSIX process-group cleanup stays Linux/macOS-only.

Inspect before you kick

Read-only inspect shows ancestors, descendants, siblings, command lines, ports, and scoped kill hints. Linux/macOS also show process groups.

TUI or CLI

Open the guided terminal UI for a tour of open ports, or drive the script-friendly CLI when you already know the target.

Safe by default

Every termination is confirmed. Unix scoped kills freeze and verify; Windows tree kill contains via Job Objects; ambiguous ports are never guessed.

Linux, macOS, Windows

Native collection per OS. Linux/macOS support tree and group scope; Windows supports inspect and CLI tree kill, with --group unavailable.

Docker-aware

Explains Docker-owned or partial-metadata ports in details when the Docker CLI is available. Docker owners are protected by default; Docker itself is optional.

Filters & sorting

Narrow the table with port:, proto:, scope:, protected:, and parent: filters, then sort by port, pid, protocol, process, parent, or scope.

Built for scripts

Stable JSON, fixed exit codes, --yes gates that re-check fresh scope, and explicit CLI-only inspect/group commands make automation predictable.

04 · Guardrails

Safe by default

Terminating the wrong process is the scary part. Kickoutchi treats it that way: lots of guardrails, no silent surprises.

How termination stays safe
  1. 00Every termination is confirmed — and --yes still prints the banner, warnings, and fresh-scan refusals.
  2. 01PID 0, PID 1, Kickoutchi's own PID, and Windows PID 4 are blocked outright.
  3. 02kill --port refuses ambiguous ports instead of guessing which PID to hit.
  4. 03Protected processes, including Docker owners, require typing the PID or process name to confirm.
  5. 04Tree scope is opt-in, typed, and bounded; group scope stays Linux/macOS-only.
  6. 05Unix scoped kills freeze first; Windows tree kill uses Job Object containment.
  7. 06Names, paths, and status text are sanitized against control, ANSI, bidi, and zero-width tricks.

05 · Get it

Install in one line

Linux, macOS, and Windows get installers, archives, inspect, and explicit tree cleanup. Group scope stays Unix-only.

All install methods

Platforms & packages

Honest status, kept compact.

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.

AvailableInstaller, Release archives, Cargo, Nix flake, Homebrew, ScoopPausedAUR

CLEAR THE SWAMP.

Install Kickoutchi, run it once with no arguments, and see the processes and process families using your local ports.

$ kickoutchi