Name | netshow JSON |
Version |
0.2.2
JSON |
| download |
home_page | None |
Summary | A real-time network connection monitor with friendly service names |
upload_time | 2025-07-15 02:40:37 |
maintainer | None |
docs_url | None |
author | Taylor Wilsdon |
requires_python | >=3.9 |
license | MIT |
keywords |
connections
monitoring
network
tui
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
<div align="center">
<img align="center" width="50%" src="https://github.com/user-attachments/assets/51b8f028-2d25-4664-b4a1-44dcf9490140" />
### netshow ยท interactive, process-aware network monitoring for your terminal
<div style="margin: 20px 0;">
    
</div>
</div>
---
<div align="center" width="600px">
<video width="600px" src="https://github.com/user-attachments/assets/e110f7db-f803-4aad-bef8-c3e928eed6e5"></video>
</div>
---
### A quick plug for AI-Enhanced Docs
<details>
<summary>But why?</summary>
**This README was written with AI assistance, and here's why that matters**
>
> As a solo dev building open source tools that many never see outside use, 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 7/10/25.
</details>
## โจ **Features**
<table style="width: 100%; border-collapse: collapse;">
<tr>
<td width="35%" style="font-weight: bold;">๐ Live TCP monitor</td>
<td>Refreshes every 3 s (configurable) while preserving scroll position</td>
</tr>
<tr>
<td style="font-weight: bold;">๐ค Human-friendly service names</td>
<td>Shows <em>Docker</em>, <em>Plex</em>, <em>VS Code</em>, etc. instead of cryptic binaries</td>
</tr>
<tr>
<td style="font-weight: bold;">๐ฌ Deep process drill-down</td>
<td>Path, PID, cmdline, cwd, threads, CPU %, memory %, open files, active connections</td>
</tr>
<tr>
<td style="font-weight: bold;">๐ฑ๏ธ Clickable / keyboard navigation</td>
<td>Press <code>โต</code> or click a row for a dedicated detail screen; refresh pauses automatically</td>
</tr>
<tr>
<td style="font-weight: bold;">๐ Runs privileged<br>or unprivileged</td>
<td>Uses <code>psutil</code> (root) for full fidelity, falls back to <code>lsof</code> if run as a regular user</td>
</tr>
<tr>
<td style="font-weight: bold;">๐ Real-time metrics</td>
<td>Live connection counts, bandwidth monitoring with per-interface selection</td>
</tr>
<tr>
<td style="font-weight: bold;">๐ Advanced filtering</td>
<td>Regex-powered search with live filtering across all connection fields</td>
</tr>
<tr>
<td style="font-weight: bold;">๐ Smart sorting</td>
<td>Sort by status or process name with optimized rendering for large datasets</td>
</tr>
<tr>
<td style="font-weight: bold;">๐จ Modern Textual UI</td>
<td>Smooth scrolling, dark theme, status bar with connection count & data source</td>
</tr>
<tr>
<td style="font-weight: bold;">โก Zero-pain install</td>
<td>Powered by <a href="https://github.com/astral-sh/uv"><code>uv</code></a> for lightning-fast dependency resolution</td>
</tr>
</table>
---
## ๐ **Quickstart**
```bash
# 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 `lsof` and still gives you most connections.
---
## ๐ ๏ธ **Usage**
```bash
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 |
| **e** | Toggle emoji display on/off |
| **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 `f` or `/` 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)
**๐จ Emoji Toggle**
- Press `e` to toggle emoji display on/off for a cleaner interface
- When disabled, removes all emoji prefixes from UI elements
- Useful for terminals with limited emoji support or accessibility preferences
- Setting persists during the session
**๐ Bandwidth Monitoring**
- Real-time bandwidth display in the metrics bar
- Press `i` to 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**
```bash
git clone https://github.com/taylorwilsdon/netshow.git
cd netshow
uv sync --extra dev
```
### **Quality Gates**
```bash
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](https://github.com/taylorwilsdon/netshow/issues).
---
## ๐ **License**
MIT โ see [`LICENSE`](LICENSE) for full text.
Raw data
{
"_id": null,
"home_page": null,
"name": "netshow",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "connections, monitoring, network, tui",
"author": "Taylor Wilsdon",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/2b/dc/7dde1dd71210311e124155309b38b209e0e81c631422e58c762821b37b61/netshow-0.2.2.tar.gz",
"platform": null,
"description": "<div align=\"center\">\n<img align=\"center\" width=\"50%\" src=\"https://github.com/user-attachments/assets/51b8f028-2d25-4664-b4a1-44dcf9490140\" />\n\n### netshow \u00b7 interactive, process-aware network monitoring for your terminal\n\n<div style=\"margin: 20px 0;\">\n\n    \n\n</div>\n</div>\n\n---\n\n<div align=\"center\" width=\"600px\">\n <video width=\"600px\" src=\"https://github.com/user-attachments/assets/e110f7db-f803-4aad-bef8-c3e928eed6e5\"></video>\n</div>\n\n---\n\n### A quick plug for AI-Enhanced Docs\n<details>\n<summary>But why?</summary>\n\n**This README was written with AI assistance, and here's why that matters**\n>\n> As a solo dev building open source tools that many never see outside use, 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.\n>\n> In this case, Sonnet 4 took a pass & a human (me) verified them 7/10/25.\n</details>\n\n## \u2728 **Features**\n\n<table style=\"width: 100%; border-collapse: collapse;\">\n<tr>\n<td width=\"35%\" style=\"font-weight: bold;\">\ud83d\udd0d Live TCP monitor</td>\n<td>Refreshes every 3 s (configurable) while preserving scroll position</td>\n</tr>\n<tr>\n<td style=\"font-weight: bold;\">\ud83d\udc64 Human-friendly service names</td>\n<td>Shows <em>Docker</em>, <em>Plex</em>, <em>VS Code</em>, etc. instead of cryptic binaries</td>\n</tr>\n<tr>\n<td style=\"font-weight: bold;\">\ud83d\udd2c Deep process drill-down</td>\n<td>Path, PID, cmdline, cwd, threads, CPU %, memory %, open files, active connections</td>\n</tr>\n<tr>\n<td style=\"font-weight: bold;\">\ud83d\uddb1\ufe0f Clickable / keyboard navigation</td>\n<td>Press <code>\u21b5</code> or click a row for a dedicated detail screen; refresh pauses automatically</td>\n</tr>\n<tr>\n<td style=\"font-weight: bold;\">\ud83d\udd10 Runs privileged<br>or unprivileged</td>\n<td>Uses <code>psutil</code> (root) for full fidelity, falls back to <code>lsof</code> if run as a regular user</td>\n</tr>\n<tr>\n<td style=\"font-weight: bold;\">\ud83d\udcca Real-time metrics</td>\n<td>Live connection counts, bandwidth monitoring with per-interface selection</td>\n</tr>\n<tr>\n<td style=\"font-weight: bold;\">\ud83d\udd0d Advanced filtering</td>\n<td>Regex-powered search with live filtering across all connection fields</td>\n</tr>\n<tr>\n<td style=\"font-weight: bold;\">\ud83d\udd04 Smart sorting</td>\n<td>Sort by status or process name with optimized rendering for large datasets</td>\n</tr>\n<tr>\n<td style=\"font-weight: bold;\">\ud83c\udfa8 Modern Textual UI</td>\n<td>Smooth scrolling, dark theme, status bar with connection count & data source</td>\n</tr>\n<tr>\n<td style=\"font-weight: bold;\">\u26a1 Zero-pain install</td>\n<td>Powered by <a href=\"https://github.com/astral-sh/uv\"><code>uv</code></a> for lightning-fast dependency resolution</td>\n</tr>\n</table>\n\n---\n\n## \ud83d\ude80 **Quickstart**\n\n```bash\n# uvx (easiest)\nuvx netshow\n\n# Local Builds\ngit clone git@github.com:taylorwilsdon/netshow.git\nuv run netshow\n\n```\n\n> \ud83d\udca1 **Tip:** Without root/sudo, NetShow silently switches to `lsof` and still gives you most connections.\n\n---\n\n## \ud83d\udee0\ufe0f **Usage**\n\n```bash\nnetshow [--interval 1.0] [--no-colors]\n```\n\n### **Options**\n| Option | Description | Default |\n|--------|-------------|---------|\n| `--interval <sec>` | Refresh rate (float) | `3.0` |\n| `--no-colors` | Disable ANSI colors | Off |\n\n### **Keybindings**\n| Key / Mouse | Action |\n|-------------|--------|\n| **\u2191 / \u2193** | Move cursor |\n| **\u21b5 / Click** | Open detail view |\n| **Esc / \u2190** | Back to list |\n| **q** | Quit NetShow |\n| **Ctrl+C** | Force quit (hard quit) |\n| **Ctrl+R** | Force refresh |\n| **e** | Toggle emoji display on/off |\n| **f** | Toggle filter input |\n| **/** | Quick search (focus filter) |\n| **s** | Sort by connection status |\n| **p** | Sort by process name |\n| **i** | Cycle network interface for bandwidth monitoring |\n\n### **Advanced Features**\n\n**\ud83d\udd0d Filtering & Search**\n- Press `f` or `/` to open the filter input\n- Supports regex patterns for advanced matching\n- Filters across process names, addresses, and connection status\n- Live updates as you type (with debouncing)\n\n**\ud83c\udfa8 Emoji Toggle**\n- Press `e` to toggle emoji display on/off for a cleaner interface\n- When disabled, removes all emoji prefixes from UI elements\n- Useful for terminals with limited emoji support or accessibility preferences\n- Setting persists during the session\n\n**\ud83d\udcca Bandwidth Monitoring**\n- Real-time bandwidth display in the metrics bar\n- Press `i` to cycle through network interfaces (`all`, `eth0`, `wlan0`, etc.)\n- Accurate per-interface monitoring for multi-NIC hosts\n- Automatic fallback to global stats if interface unavailable\n\n**\ud83d\udd04 Smart Performance**\n- Optimized table rendering for large connection sets (5k+ connections)\n- In-place cell updates to prevent flicker during sorting\n- Preserves scroll position and cursor during refreshes\n- Debounced filter input to avoid excessive updates\n\n---\n\n## \ud83d\udc69\u200d\ud83d\udcbb **Development**\n\n```bash\ngit clone https://github.com/taylorwilsdon/netshow.git\ncd netshow\nuv sync --extra dev\n```\n\n### **Quality Gates**\n```bash\npytest # tests\nruff format . # auto-format\nruff check . # lint\nmypy src/ # type check\n```\n\n---\n\n## \ud83d\udccb **Requirements**\n\n\u2022 Python **\u2265 3.9** \n\u2022 macOS or Linux \n\u2022 `lsof` (usually pre-installed)\n\n---\n\n## \ud83e\udd1d **Contributing**\n\nPull requests and \u2b50 stars are welcome! Found a bug or have a feature request? Please [open an issue](https://github.com/taylorwilsdon/netshow/issues).\n\n---\n\n## \ud83d\udcdc **License**\n\nMIT \u2013 see [`LICENSE`](LICENSE) for full text.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A real-time network connection monitor with friendly service names",
"version": "0.2.2",
"project_urls": null,
"split_keywords": [
"connections",
" monitoring",
" network",
" tui"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "d7463c56bd493c17c9a194e8765f2fa20a68e685ae0dc0f6150ed76dbb844a79",
"md5": "a5650eae0f5e69e0e6f9add289fb73cd",
"sha256": "40054a5a581be96c2db02d5c442f873a7a35c6e425bc8b23d519ff1d3177047c"
},
"downloads": -1,
"filename": "netshow-0.2.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "a5650eae0f5e69e0e6f9add289fb73cd",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 17228,
"upload_time": "2025-07-15T02:40:24",
"upload_time_iso_8601": "2025-07-15T02:40:24.651523Z",
"url": "https://files.pythonhosted.org/packages/d7/46/3c56bd493c17c9a194e8765f2fa20a68e685ae0dc0f6150ed76dbb844a79/netshow-0.2.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "2bdc7dde1dd71210311e124155309b38b209e0e81c631422e58c762821b37b61",
"md5": "14d87a0c466f7e6ccda3a917039e0144",
"sha256": "c3a684d186463033b99df13d2408669d779cbd8051f031a45fab6380dd34a1e7"
},
"downloads": -1,
"filename": "netshow-0.2.2.tar.gz",
"has_sig": false,
"md5_digest": "14d87a0c466f7e6ccda3a917039e0144",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 1353874,
"upload_time": "2025-07-15T02:40:37",
"upload_time_iso_8601": "2025-07-15T02:40:37.767320Z",
"url": "https://files.pythonhosted.org/packages/2b/dc/7dde1dd71210311e124155309b38b209e0e81c631422e58c762821b37b61/netshow-0.2.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-15 02:40:37",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "netshow"
}