PortShelf is a menu-bar utility that shows every local listening port, the process behind it, and the project that owns it - with safe actions for your localhost workflow.
Free download from GitHub. No backend. All inspection stays on this Mac.PortShelf walks up from the process working directory past marker files - .git, package.json, go.mod, Cargo.toml - to name the project, not just the PID.
Next.js, Vite, Rails, Django, Go, Rust, Postgres, Redis and more, inferred from the command that started the listener.
Open the URL, copy it, reveal the project in Finder, or open it in your editor. One click each, right from the menu bar.
Confirmation-first termination sends SIGTERM, then offers Force Kill only if the process is still running. Bulk-select supported.
Copy Diagnostics strips token=, secret=, bearer and other secret-looking values before anything reaches your clipboard.
Menu-bar first with no Dock icon. Optional local notifications when common dev ports change. Launch at login if you want it.
PortShelf inspects the local machine using the same macOS tools you would: lsof for listening sockets, ps for command and parent data. No packet sniffing, no network interception, no sudo.
PortShelf does not send process, project, port, diagnostic, or usage data anywhere. It has nothing to send it to.
PortShelf is distributed as a direct download from GitHub Releases. It requires macOS 13.0 or newer.
This build is not notarized with an Apple Developer ID yet, so macOS will warn you on first open. The source is public, and you can build it yourself.
Or clear the quarantine flag in Terminal: