A native macOS menu bar app that shows you which processes are listening on which ports — and lets you kill them with one click. No more lsof | grep followed by kill -9.
- Live port scanning — every TCP port your apps are listening on, refreshed every two seconds.
- One-click termination — sends
SIGTERM, thenSIGKILLif the process doesn't go away. - Lives in your menu bar — no Dock clutter; click the icon at the top of your screen.
- Quick search — filter by port number or command name.
- Context menu — right-click a row to copy the port, PID, or full command.
- Launch at login — toggle in Settings; uses
SMAppService. - Native UI — built with SwiftUI, uses system materials and Liquid Glass on macOS 26.
- macOS 15.0 (Sequoia) or later
- Apple Silicon or Intel Mac
- Grab the latest
portman.dmgfrom the Releases page. - Open the DMG and drag portman.app to your Applications folder.
- Launch it once. macOS may warn that the developer cannot be verified — right-click the app and choose Open to bypass this on first launch.
A community tap is available:
brew tap meliharik/portman
brew install --cask portmanThe cask installs the latest signed DMG release. It does not require Xcode.
git clone https://github.com/meliharik/portman.git
cd portman
open portman.xcodeprojThen ⌘R in Xcode. Requires Xcode 16 or later.
- Click the portman icon in the menu bar.
- Browse listening ports — each row shows the port, the launching command, and the PID.
- Search to filter, or right-click a row for copy options.
- Click ✕ on a row to terminate that process. portman tries
SIGTERMfirst, then escalates toSIGKILLafter 1.5 seconds if the process is still alive. - Open Settings (gear icon) for "Launch at login" and other options.
portman shells out to lsof -a -iTCP -sTCP:LISTEN -nP -u <you> and parses the output. Only your own processes are listed — it does not require admin privileges and does not show other users' processes.
To run lsof and send signals to other processes, the app needs to spawn binaries and use kill(2) on PIDs outside its own bundle. This is incompatible with the App Sandbox, so portman ships with the sandbox disabled. The build is still code-signed and uses the Hardened Runtime.
Pull requests are welcome. See CONTRIBUTING.md for development setup, coding style, and the PR process.
Found a bug or want a feature? Please open an issue using one of the issue templates — they prompt for the details we need to investigate.
If you discover a security vulnerability, please follow the process in SECURITY.md. Please do not open a public issue for security reports.
See CHANGELOG.md for release notes.
MIT © Melih Arık
