Free • macOS 13+ • Local-only

Know what's listening.

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.
Features

Your localhost, on a shelf.

Which project owns port 3000?

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.

Framework detection

Next.js, Vite, Rails, Django, Go, Rust, Postgres, Redis and more, inferred from the command that started the listener.

Safe actions

Open the URL, copy it, reveal the project in Finder, or open it in your editor. One click each, right from the menu bar.

Terminate with confidence

Confirmation-first termination sends SIGTERM, then offers Force Kill only if the process is still running. Bulk-select supported.

Redacted diagnostics

Copy Diagnostics strips token=, secret=, bearer and other secret-looking values before anything reaches your clipboard.

Quiet by design

Menu-bar first with no Dock icon. Optional local notifications when common dev ports change. Launch at login if you want it.

How it works

Fixed tools. No magic.

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.

$lsof -nP -iTCP -sTCP:LISTEN -Fpcfn
$ps -p <pid> -o pid= -o ppid= -o command=
$lsof -a -d cwd -p <pid> -Fn
Privacy

All inspection stays on this Mac.

PortShelf does not send process, project, port, diagnostic, or usage data anywhere. It has nothing to send it to.

No backendNo telemetryNo analyticsNo account systemNo sudoNo privileged helperNo packet sniffingNo cloud sync
Download

Free, from GitHub.

PortShelf is distributed as a direct download from GitHub Releases. It requires macOS 13.0 or newer.

First launch on an unsigned build

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.

  1. Unzip and move PortShelf.app to Applications.
  2. Right-click the app and choose Open.
  3. Click Open again in the dialog. That is it - once.

Or clear the quarantine flag in Terminal:

$xattr -d com.apple.quarantine /Applications/PortShelf.app