porthog
A CLI and TUI tool to find and kill dev servers hogging your ports.
Ever run npm start only to find port 3000 is already in use? porthog helps you quickly identify what's running on your dev ports and kill it with a single command.
Features
- Interactive TUI - Browse all dev server ports in a beautiful terminal UI
- CLI commands - Quick one-liners for scripting and fast actions
- Smart detection - Automatically identifies Node, Python, Java, Ruby, Go, Rust, PHP, and .NET processes
- Framework recognition - Detects Next.js, Vite, Django, FastAPI, Rails, and 20+ other frameworks
- Dev port focused - Filters to common dev ports (3000-9999) by default
- Cross-platform - Works on macOS and Linux
Installation
pip install porthog
Or with uv:
uv tool install porthog
Usage
Interactive TUI
Simply run porthog to launch the interactive terminal UI:
porthog
Keyboard shortcuts:
k- Kill selected process (graceful)K- Force kill selected processr- Refresh the lista- Toggle between dev ports and all portsq/Ctrl+C- Quit
CLI Commands
List dev server ports:
porthog ls
List all listening ports:
porthog ls --all
Get info about a specific port:
porthog info 3000
Kill a process on a port:
porthog kill 3000
Kill multiple ports:
porthog kill 3000 8080 5173
Force kill (SIGKILL):
porthog kill 3000 --force
Kill all dev servers (use with caution!):
porthog kill-all
Skip confirmation prompts:
porthog kill 3000 --yes
Dev Port Ranges
By default, porthog focuses on common development server ports:
- 3000-3999 - React, Next.js, Rails, Express
- 4000-4999 - Phoenix, Gatsby, Remix
- 5000-5999 - Flask, Vite, SvelteKit
- 6000-6999 - Various dev tools
- 8000-8999 - Django, FastAPI, Spring Boot
- 9000-9999 - PHP, SonarQube, various tools
Use --all or press a in the TUI to see all listening ports.
Detected Frameworks
porthog recognizes these frameworks and displays friendly names:
| Framework | Process Type |
|---|---|
| Next.js, Vite, Webpack, Vue CLI, Angular, Nuxt, Gatsby, Remix, Astro, SvelteKit | Node |
| Django, Flask, FastAPI, Uvicorn, Gunicorn | Python |
| Spring Boot | Java |
| Rails | Ruby |
| Phoenix | Elixir |
| Hugo, Jekyll | Static |
Requirements
- Python 3.10+
- macOS or Linux
License
MIT License - see LICENSE for details.
Metadata
Release files for porthog 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| porthog-0.1.3.tar.gz | 17.0 kB | Without provenance | Details for porthog-0.1.3.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| porthog-0.1.3-py3-none-any.whl | Python 3 | none | any | Details for porthog-0.1.3-py3-none-any.whl |
Total release size: 29.8 kB
Release files / porthog-0.1.3.tar.gz
| Download URL | porthog-0.1.3.tar.gz |
|---|---|
| Size | 17.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
587f90898bff3e1abab2498dae144e60974652165bd1c12c64a90b80b88983fa
|
|
BLAKE2b-256 checksum How to use checksums |
03d338f47be983bb8404cad9c145222c049a005c57d63bec00f423e37dbcdfb7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / porthog-0.1.3-py3-none-any.whl
| Download URL | porthog-0.1.3-py3-none-any.whl |
|---|---|
| Size | 12.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5f2fff4e66cb588ce5cbbcae35e1bab90e734f03493c05310c8dc1fb86c23689
|
|
BLAKE2b-256 checksum How to use checksums |
b0f20a2992980568be6a4d41c0d90b2f64744b6a3b321d0372edc97c8b7b932f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for porthog 0.1.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.