Documentation menu
TUI walkthrough
TUIBrowse, search, and sort open ports, then inspect or terminate the process behind each one.
Run either binary with no subcommand to open the terminal UI.
kickoutchi
kickBoth 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 quiton 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 |
LABEL | Your configured endpoint label, when the terminal is wide enough |
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 |
m | Open the full kill results and errors |
q or Ctrl+C | Quit |
Search and filter
Press / to start editing the filter, then type. The table narrows on every keypress.
Enterkeeps the filter and returns to the table.Escclears it.
Plain text matches across port, address, PID, process, path, command line, parent, and label. You can also use the same structured filters as the CLI:
port:3000 proto:udp scope:public protected:true parent:node
label:web address:127.0.0.1 scope_id:3 family:ipv6Terms combine with AND, and address: compares parsed addresses rather than text. state: is
reserved for kick watch and is rejected here rather than being treated as a plain search word.
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.
The UID and children appear only when they were read from the same process as the row, so a reused
PID never mixes two processes in one view.
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 area reports the outcome and the next refresh shows the port
gone. Kill results and errors get their own wrapped rows above the routine status line. When a
report is longer than that space, such as a cleanup failure listing many stopped PIDs, the preview
says so and m opens the complete, scrollable report.
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
Escis 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.
- Warnings that don’t fit • a kill confirmation wraps its warnings instead of cutting them off. If the terminal can’t show every warning and the prompt, the confirmation is cancelled rather than shown partially.
Next
Already know which port to clear? The CLI walkthrough is the swamp shortcut. Need the big green boot? Read Scoped kills.