
PortKiller
github.com/productdevbook/port-killer- Category
- Developer Tools
- Rank
- No. 943Tools index
- Pricing
- Open Source
- Type
- APP
- Use case
- Deployment & Operations
- Interfaces
- Desktop
- Builder
- @productdevbook
- GitHub
- 5.1k stars
- Latest release
- v3.3.3
- Date
About
A cross-platform desktop application that helps developers monitor and manage network ports, terminate processes with one click, and handle Kubernetes port forwarding. It features smart categorization of ports, favorites management, and integration with Cloudflare Tunnels.
What it does
PortKiller replaces the usual hunt through terminal output when a development address is already occupied. It inventories listening TCP endpoints, links them to process names, commands, and IDs, then lets you search, label, watch, or stop the culprit. It also keeps local forwarding and tunnel sessions visible beside that process inventory.
Why it's ranked here
The strongest case is its tight focus on common local-development friction. Port discovery, filtering, persistent favorites, change notifications, forwarding logs, and controlled termination form a coherent daily workflow. The termination path first requests shutdown, waits 500 milliseconds, then escalates when necessary. Separate native desktop interfaces also respect each supported operating system.
What's good
The kill path favors graceful shutdown before force, while still handling vanished processes and permission failures. Port detection preserves listening addresses, enriches entries with full commands, removes duplicates, and recognizes IPv6 forms. Process categories cover common servers, databases, development tools, and system services. Watched ports can notify on state changes, and macOS keeps inactive favorites visible.
Tradeoffs
Platform parity is unclear. The README distributes only macOS and Windows builds, while Linux code exists without documented installation steps. macOS requires version 15 or newer, and Windows requires version 10 or newer. Linux discovery depends on external commands such as lsof, ss, and ps. Some listeners may appear with unknown ownership when process details are unavailable.
How to use it well
Use it on a developer workstation where several local servers, databases, cluster forwards, or temporary tunnels compete for attention. Favorite stable service ports, watch dependencies whose availability matters, and keep confirmation enabled until termination targets feel predictable. It does not cover UDP listeners, packet inspection, traffic analysis, or remote fleet process administration.
Technical notes+
platforms/macos/Package.swift defines a Swift 6.2 macOS 15 executable, a test target, and dependencies for shortcuts, defaults, login startup, and Sparkle updates. platforms/macos/Sources/AppState.swift centralizes filtering, favorites, watched ports, refresh state, Kubernetes forwards, Cloudflare quick and named tunnels, and auto-kill rules. platforms/linux/src/scanner.py scans with ss before falling back to lsof, enriches results through ps, and escalates SIGTERM to SIGKILL after 500 milliseconds. The separate Rust implementation in portkiller-core/src/lib.rs, portkiller-core/src/scanner/linux.rs, and portkiller-core/src/process/linux.rs exposes asynchronous Linux scanning and termination, but reverses the scanner preference by trying lsof before ss.
Observed
- License
- MIT
- Desktop platforms
- macOS 15.0 or newer and Windows 10 or newer are documented; Linux desktop source is also present.
- Installation surface
- macOS installs through a Homebrew cask or DMG. Windows ships as an extractable ZIP from GitHub Releases.
- Interface
- Desktop graphical application with macOS menu bar and Windows system tray integration.
- Languages and architecture
- The repository contains a native Swift macOS application, a Python GTK Linux application, and a Rust Linux core; comments reference a separate .NET Windows application.
- Linux runtime dependencies
- Port discovery and process management call operating-system tools including lsof, ss, ps, and kill.
- Tests
- The supplied Swift package declares a test target, and the supplied Rust modules contain unit and asynchronous tests.
Read from README.md, package.json, portkiller-core/src/lib.rs, platforms/macos/Package.swift, portkiller-core/src/models.rs, platforms/linux/port-killer.py, platforms/linux/src/main.py, platforms/linux/src/config.py, platforms/linux/src/scanner.py, platforms/linux/src/__init__.py, portkiller-core/src/process/mod.rs, portkiller-core/src/scanner/mod.rs, portkiller-core/src/process/linux.rs, portkiller-core/src/scanner/linux.rs, platforms/macos/Sources/AppState.swift.
What it can do
Auto-discover active TCP ports
System network state → List of active TCP ports with details
Terminate processes using specific ports
Selected port/process → Killed process and freed port
Manage Kubernetes port forwards
Kubernetes cluster and port configuration → Active port forwarding connection
Categorize ports by service type
Discovered ports and process information → Organized port groups by category
Save frequently used ports as favorites
Selected ports → Favorites list for quick access
Integrate with Cloudflare Tunnels
Cloudflare Tunnel configuration → Managed tunnel connections
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.