A real-time network connection monitor with friendly service names
Project description
netshow · interactive, process-aware network monitoring for your terminal
A quick plug for AI-Enhanced Docs
This README was crafted with AI assistance, and here's why that matters
As a solo developer building open source tools that may only ever serve my own needs, comprehensive documentation often wouldn't happen without AI help. Using agentic dev tools like Roo & Claude Code that understand the entire codebase, AI doesn't just regurgitate generic content - it extracts real implementation details and creates accurate, specific documentation.
In this case, Sonnet 4 took a pass & a human (me) verified them 6/28/25.
✨ Features
| 🔍 Live TCP monitor | Refreshes every 3 s (configurable) while preserving scroll position |
| 👤 Human-friendly service names | Shows Docker, Plex, VS Code, etc. instead of cryptic binaries |
| 🔬 Deep process drill-down | Path, PID, cmdline, cwd, threads, CPU %, memory %, open files, active connections |
| 🖱️ Clickable / keyboard navigation | Press ↵ or click a row for a dedicated detail screen; refresh pauses automatically |
| 🔐 Runs privileged or unprivileged |
Uses psutil (root) for full fidelity, falls back to lsof if run as a regular user |
| 📊 Real-time metrics | Live connection counts, bandwidth monitoring with per-interface selection |
| 🔍 Advanced filtering | Regex-powered search with live filtering across all connection fields |
| 🔄 Smart sorting | Sort by status or process name with optimized rendering for large datasets |
| 🎨 Modern Textual UI | Smooth scrolling, dark theme, status bar with connection count & data source |
| ⚡ Zero-pain install | Powered by uv for lightning-fast dependency resolution |
🚀 Quickstart
# uvx (easiest)
uvx netshow
# Local Builds
git clone git@github.com:taylorwilsdon/netshow.git
uv run netshow
💡 Tip: Without root/sudo, NetShow silently switches to
lsofand still gives you most connections.
🛠️ Usage
netshow [--interval 1.0] [--no-colors]
Options
| Option | Description | Default |
|---|---|---|
--interval <sec> |
Refresh rate (float) | 3.0 |
--no-colors |
Disable ANSI colors | Off |
Keybindings
| Key / Mouse | Action |
|---|---|
| ↑ / ↓ | Move cursor |
| ↵ / Click | Open detail view |
| Esc / ← | Back to list |
| q | Quit NetShow |
| Ctrl+C | Force quit (hard quit) |
| Ctrl+R | Force refresh |
| f | Toggle filter input |
| / | Quick search (focus filter) |
| s | Sort by connection status |
| p | Sort by process name |
| i | Cycle network interface for bandwidth monitoring |
Advanced Features
🔍 Filtering & Search
- Press
for/to open the filter input - Supports regex patterns for advanced matching
- Filters across process names, addresses, and connection status
- Live updates as you type (with debouncing)
📊 Bandwidth Monitoring
- Real-time bandwidth display in the metrics bar
- Press
ito cycle through network interfaces (all,eth0,wlan0, etc.) - Accurate per-interface monitoring for multi-NIC hosts
- Automatic fallback to global stats if interface unavailable
🔄 Smart Performance
- Optimized table rendering for large connection sets (5k+ connections)
- In-place cell updates to prevent flicker during sorting
- Preserves scroll position and cursor during refreshes
- Debounced filter input to avoid excessive updates
👩💻 Development
git clone https://github.com/taylorwilsdon/netshow.git
cd netshow
uv sync --extra dev
Quality Gates
pytest # tests
ruff format . # auto-format
ruff check . # lint
mypy src/ # type check
📋 Requirements
• Python ≥ 3.9
• macOS or Linux
• lsof (usually pre-installed)
🤝 Contributing
Pull requests and ⭐ stars are welcome! Found a bug or have a feature request? Please open an issue.
📜 License
MIT – see LICENSE for full text.
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
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
File details
Details for the file netshow-0.2.0.tar.gz.
File metadata
- Download URL: netshow-0.2.0.tar.gz
- Upload date:
- Size: 1.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dbc1719623271fa61ebb8af33414033c376116269700c4ddf8501bbc9811c923
|
|
| MD5 |
f1ff801cff932242c9859d4993f7b524
|
|
| BLAKE2b-256 |
32081b048e08ad818fc696eb8b559f76824d4738666c3ac5a4a7aeb5848061e8
|
File details
Details for the file netshow-0.2.0-py3-none-any.whl.
File metadata
- Download URL: netshow-0.2.0-py3-none-any.whl
- Upload date:
- Size: 15.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5bf8966392981087de56c5b50ebbeba41d0941bbe09ff530ada307d6b5eca1ae
|
|
| MD5 |
6d6e5ae0c3a01e74010563340ff860db
|
|
| BLAKE2b-256 |
254b6f80abfe5e1048664ab53726ab6c9ecdcb8f120bfb62587b3684b8cf8786
|