Port Watcher
Your Mac has more open ports than you think, and most apps never close the ones they used. Port Watcher shows every process currently listening on a network port, tells you whether it is reachable from your local network or only from your own machine, and lets you kill it instantly — no Terminal, no lsof, no copy-pasted commands.
Getting Started
How to enable
- Open ProToys from the menu bar and click Open ProToys…
- Select Port Watcher from the sidebar under System.
- Toggle the switch to enable the module.
Opening the panel
Press ⌥⌘P at any time. A floating panel opens over your current window without taking focus away from what you are doing. Press the shortcut again, press ESC at the bottom of the panel, or click anywhere outside the panel to close it.
The panel updates every 2 seconds automatically. You can also tap the refresh button (↺) in the top-right corner to force an immediate rescan.
Reading the Port List
Each row in the panel represents one process that is actively listening for incoming connections. The list is sorted by port number and filters out ephemeral OS-assigned ports (above 49151), so you only see ports that were deliberately opened.
| Element | What it means |
|---|---|
| App icon | The icon of the running application. Command-line tools (like node or python) show a colored badge with a short symbol instead. |
:PORT |
The port number the process is listening on. |
| 🌐 Globe | LAN — the port is bound to 0.0.0.0 or ::, meaning other devices on your network can reach it. |
| 🔒 Lock | Local only — the port is bound to 127.0.0.1 or ::1, meaning only your own machine can connect to it. |
| Process name | The name of the executable that opened the port. |
| PID | The process ID assigned by macOS. Useful for cross-referencing with Activity Monitor. |
LAN vs Local
The globe and lock indicators answer the question: can someone else on my Wi-Fi reach this port? A globe means yes — a development server, database, or background service is exposed to your local network. A lock means the port is only accessible from your own Mac.
If you see an unexpected globe icon next to a port you do not recognise, that service is reachable by any device on your current network. Use the kill button to stop it if it should not be running.
Filtering
The search field at the top of the panel filters the list in real time. You can search by:
- Port number — type
3000to jump straight to that port. - Process name — type
nodeorpythonto see only rows matching that name.
The filter is case-insensitive and matches partial names. Clear it with the × button that appears when a search is active.
Killing a Process
Click the × button on any row to terminate the process that owns that port. A confirmation prompt appears before anything is sent.
- Click the × button on the row you want to stop.
- Confirm with Kill Process in the dialog.
- The process is terminated immediately and the row disappears within 2 seconds.
Port Watcher sends SIGKILL — a forced termination handled by the OS kernel. Unlike SIGTERM, the process has no way to catch or ignore it. The port is freed immediately.
When a killed process comes back
If you kill a process and it reappears a moment later with a different PID, it is being supervised. macOS launchd is a system-level service manager that can automatically restart registered services when they exit. Apps like Homebrew services, Adobe background helpers, and some developer tools register themselves this way.
In that case, killing the process only removes the current instance — launchd restarts it immediately. To permanently stop a supervised service, you need to unload it from launchd:
Run launchctl list | grep <name> to find the service label, then launchctl unload -w <plist-path> to disable it.
System processes
Ports owned by system processes running as root (like configd or kernel extensions) cannot be killed by a user-level application. Port Watcher will show an error: Can't kill [process]: system process. This is an OS-level permission restriction and cannot be bypassed without elevated privileges.
Notifications
When a new port opens — a process starts listening that was not there in the previous scan — Port Watcher can fire a macOS notification.
On first enable, macOS will ask whether to allow notifications from ProToys. Approve the request to receive alerts.
Notifications are throttled to at most one alert per unique port every 30 seconds to avoid noise from services that restart frequently.
Settings
| Setting | Description |
|---|---|
| Hotkey | Default ⌥⌘P. Customisable in ProToys Settings. |
| Poll interval | How often the port list refreshes. Default: 2 seconds. |
| Notifications | Show a macOS notification when a new port opens. |