A terminal UI for monitoring and managing local listening ports
Project description
PorTUI
A terminal UI application for monitoring local listening ports and managing the processes that own them.
Features
- Real-time display of listening ports with process information
- Configurable columns (Port, IP, Protocol, Process, PID, User, State, Command)
- Sortable by Port, IP, Process, PID, User, State, or Protocol (numerical IP sorting)
- Sort order maintained during auto-refresh
- Inline tree view with real process hierarchy (toggle with
t) — parent processes are resolved from the OS even when they don't hold ports (e.g. Chrome → Chrome Helper) - Protocol filter to show TCP only, UDP only, or both (cycle with
h) - Real-time text filtering across all fields
- Port detail overlay with full untruncated command line (press Enter, Escape to close)
- Auto-refresh with configurable interval (pauses during interaction)
- Prominent visual indicator when auto-refresh is paused
- Kill processes with choice of graceful (SIGTERM) or force (SIGKILL)
- Cross-platform (macOS, Linux, Windows)
Installation & Usage
Run without installing (recommended)
uvx portui
Install globally
uv tool install portui
portui
Install with pip
pip install portui
portui
Run from source
uv run portui.py
Keyboard Shortcuts
| Key | Action |
|---|---|
↑/↓ or j/k |
Navigate rows |
Enter |
Show full port/process details |
/ |
Focus filter input (Escape to clear and exit) |
h |
Cycle protocol filter (Both → TCP → UDP) |
c |
Toggle column configuration |
s |
Cycle sort column (Port → IP → Process → PID → User → State → Protocol) |
t |
Toggle tree view (htop-style process hierarchy) |
x |
Kill selected process |
r |
Manual refresh |
p |
Pause/resume auto-refresh |
i |
Set refresh interval |
? |
Show help |
q |
Quit |
Requirements
- Python 3.9+
- uv (for
uvxusage)
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
portui-0.1.1.tar.gz
(11.4 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
portui-0.1.1-py3-none-any.whl
(11.9 kB
view details)
File details
Details for the file portui-0.1.1.tar.gz.
File metadata
- Download URL: portui-0.1.1.tar.gz
- Upload date:
- Size: 11.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6361ca9ba5397f52a21be8252f08637eedf9688c22844bef20383222225b7b98
|
|
| MD5 |
98cb41de7dd421b5f5d314eb8ebf59a5
|
|
| BLAKE2b-256 |
47533f94eaf0857e227475eb02162bbd0a8648e82fd132a8975e768506f9748c
|
File details
Details for the file portui-0.1.1-py3-none-any.whl.
File metadata
- Download URL: portui-0.1.1-py3-none-any.whl
- Upload date:
- Size: 11.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3dbcb1aaa51912a7d8561b2206e9558188c141b5d82ed763c260b7767e70d76e
|
|
| MD5 |
113bed50e4425923ea4e44eb3309f431
|
|
| BLAKE2b-256 |
cc00470fac548ca826bf96deaeb47a28a72cc5976d8ef7de051767c8c197cea1
|