PortHawk

macOS · menu bar · native SwiftUI

Every listening port,
on one ledger page.

PortHawk keeps a ledger of every TCP listening port on your Mac: who is listening, which project it belongs to, and whether the LAN can reach it. Native SwiftUI, about 1 MB, no Electron.

Latest v0.1.2 · macOS 13+ · Apple Silicon

01

Ports arrive as they open

Every TCP listener lands in the ledger with its process, PID, and owning project — inferred from the process's working directory, so dev servers stop being anonymous.

02

Favorites keep their place

Star the ports you care about. An idle favorite still shows a faint placeholder row, so a service that quietly died is obvious at a glance.

03

End a process in two steps

Hover for "end"; the first click arms a solid confirm, the second sends the signal. The row is struck through with a vermilion line, like ink cancelling a ledger entry.

04

Know when a port is taken

When something new grabs a port you favorited, the menu bar lights a dot and the row gets a "taken" seal. New listeners get a blue "new" seal.

05

See your attack surface

Anything not bound to loopback gets an ochre "LAN" badge — wildcards and specific interface addresses alike. The "LAN only" chip filters the ledger to what the network can reach.

06

Drill into any row

A full page per process: complete command line, executable path, working directory, user, threads, memory, and live CPU%. Open the port in your browser, copy its PID or port, or end the process — all from here.

07

Small, quiet, out of the way

Refresh interval, menu bar count, launch at login. If a scan ever fails it keeps the last snapshot and says so — it never pretends there are no ports.

Install

One terminal command downloads the latest build into /Applications and sidesteps Gatekeeper entirely:

curl -fsSL https://volcanicll.github.io/PortHawk/install.sh | bash

Or download the DMG and drag it in. Building from source needs only Command Line Tools: git clone, then ./build.sh.

Ad-hoc signed, not notarized — if macOS reports it as damaged, run xattr -cr /Applications/PortHawk.app.