netshow


Namenetshow JSON
Version 0.2.2 PyPI version JSON
download
home_pageNone
SummaryA real-time network connection monitor with friendly service names
upload_time2025-07-15 02:40:37
maintainerNone
docs_urlNone
authorTaylor Wilsdon
requires_python>=3.9
licenseMIT
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;">

![Python versions](https://img.shields.io/badge/python-3.9%2B-blue?logo=python&logoColor=white) ![Platform](https://img.shields.io/badge/platform-macOS%20%7C%20Linux-lightgrey) ![Code style: ruff](https://img.shields.io/badge/code%20style-ruff-black?logo=ruff) ![Built with Textual](https://img.shields.io/badge/UI-Textual-purple) ![uv](https://img.shields.io/badge/dependencies-uv-orange?logo=uv)

</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![Python versions](https://img.shields.io/badge/python-3.9%2B-blue?logo=python&logoColor=white) ![Platform](https://img.shields.io/badge/platform-macOS%20%7C%20Linux-lightgrey) ![Code style: ruff](https://img.shields.io/badge/code%20style-ruff-black?logo=ruff) ![Built with Textual](https://img.shields.io/badge/UI-Textual-purple) ![uv](https://img.shields.io/badge/dependencies-uv-orange?logo=uv)\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"
}
        
Elapsed time: 1.67834s