Skip to content
Documentation menu

TUI walkthrough

TUI

The swamp tour • open the terminal UI and let Kickoutchi walk you through open ports.

Take the swamp tour: open the TUI and let Kickoutchi walk you through open ports. Run either binary with no subcommand and you land in the terminal UI.

open the TUI
kickoutchi
kick

Both names do the same thing • kickoutchi is canonical, kick is the short one.

The layout

The screen is split into four regions, top to bottom:

  • Header • the title and a one-line key hint (r refresh / search s sort x/X kill t/T tree ? help q quit on Linux/macOS; Windows omits the tree keys).
  • Open Ports table • one row per confirmed socket, with a >> marker on the selected row.
  • Details panel • live context for whatever row is selected.
  • Status line • visible/total port counts, last refresh age, current sort, active filter, and the result of your last kill.

Table columns

Column What it shows
PROTO TCP (listening) or UDP (bound)
ADDRESS The bound local address
PORT The local port
PID Owning process ID, or - when the OS won’t say
PROCESS Process name, or - when withheld
STATE LISTEN or BOUND
SCOPE public, local, or loopback

Rows are colour-coded: protected processes and rows with partial metadata (visible socket, unreadable owner) are tinted so you notice them before acting.

Moving around

Key Action
j / Move selection down
k / Move selection up
Enter Open the details modal for the selected row
? Open the help modal
q or Ctrl+C Quit

Search and filter

Press / to start editing the filter, then type. The table narrows on every keypress.

  • Enter keeps the filter and returns to the table.
  • Esc clears it.

Plain text matches across port, address, PID, process, path, command line, and parent. You can also use the same structured filters as the CLI:

filter syntax
port:3000   proto:udp   scope:public   protected:true   parent:node

See the command reference for the full grammar.

Sorting

Press s to cycle the sort mode. The order steps through port → pid → protocol → process → parent → scope, then wraps. Sorting by scope surfaces public binds first • the ones most worth a second look.

Refreshing

Kickoutchi re-collects ports automatically (every few seconds by default • tune it with refresh_interval_seconds in your config). Press r to refresh immediately. The status line shows how long ago the last refresh happened.

Details

The details panel always reflects the selected row. Press Enter for the full details modal, which also lazily loads the owner UID, the process’s children, and any protected-process warnings. When the Docker CLI is available, Docker-owned ports show their container context here too.

Kicking a process out

Key Action
x Terminate the selected process (normal)
X (Shift+x) Force-kill the selected process
t Terminate the selected process tree (Linux/macOS)
T (Shift+t) Force-kill the selected process tree (Linux/macOS)

Either opens the Confirm Termination modal showing the target identity, the affected ports, and the equivalent shell command (e.g. kill 18422, or kill -9 18422 for a force kill).

Tree kill opens a separate Confirm Tree Termination modal. Kickoutchi enumerates the bounded tree on a background worker, shows the process count and preview, then requires typing tree (or force for T). Execution always re-runs the tree scan fresh before the first freeze signal.

After a successful kick, the status line reports the outcome and the next refresh shows the port gone.

For process-group cleanup, use the CLI --group flow. The TUI intentionally exposes only tree scope, so the broader process-group blast radius is reviewed in a full CLI banner.

A few edge states

  • Esc is context-aware • it clears the search, closes an open modal, cancels a kill confirmation, or quits, depending on what’s on screen.
  • Terminal too small • below 80×20 the TUI shows a “Terminal too small” notice instead of a cramped, unreadable table. Resize and it returns.

Next

Already know which port to clear? The CLI walkthrough is the swamp shortcut. Need the big green boot? Read Scoped kills.