I launched Port Pilot
By Flavio Copes
I launched Port Pilot, a local service command center with a macOS menu bar app, live terminal dashboard, and agent-friendly CLI.
Today I launched Port Pilot on Prototyped.
It shows every local service running on your computer, what launched it, and whether it is healthy.
You can use it from a native macOS menu bar app, an interactive terminal dashboard, or the command line.
I built it because a busy port always sent me on the same scavenger hunt.
Which process is using port 3000?
Which project does it belong to?
Is it still doing something useful, or can I stop it?
The answer was usually spread across lsof, ps, Docker, browser tabs, and a few carefully typed kill commands.
Port Pilot puts that information in one place.
Start with the dashboard
Run this command:
ports
Port Pilot opens a live terminal dashboard.
It shows the port, project, framework, process, owner, memory use, uptime, command, and process ancestry.
For web services, it can also show the local URL, HTTP status, page title, and response time.
If Docker published the port, Port Pilot adds the container name, image, and private port.
The default view focuses on development services. You can switch to all listeners when you need to inspect system processes or something Port Pilot could not identify.
You can search, sort, copy a URL, open the service in a browser, open its project in your editor, or inspect more details without leaving the dashboard.
A native macOS companion
I also built a native SwiftUI menu bar app.
It gives me a compact list of local services without keeping another terminal window open.
I can see what is running, check its health, open the project, copy its URL, create an alias, or stop it from the menu bar.
The app remembers the last successful scan, so it can show useful information immediately while it refreshes in the background.
It can also notify me when a service starts, stops, or changes health.
The menu bar app does not implement a second port scanner.
It uses the same command-line engine and the same JSON output as the terminal interface. This keeps port discovery and process safety in one place.
Commands for people, scripts, and agents
The dashboard is useful when I am looking at the machine.
Coding agents and scripts need predictable commands instead.
For example, you can list the current development services as JSON:
ports list --json
You can inspect one port:
ports check 4321 --json
You can test whether a port is available:
ports is-free 4321
You can wait until a local server returns the expected HTTP status:
ports wait 4321 --http 200
And you can watch for services starting, stopping, or changing:
ports watch --json
The commands return structured output and meaningful exit codes.
An agent does not need to scrape a colored terminal table or guess whether a server is ready.
Stopping the right process
Stopping a process is the part that needed the most care.
A port number alone is not enough information.
Before Port Pilot stops anything, it shows the process, project, directory, command, PID, and process chain.
The terminal dashboard and command-line flow both require confirmation.
Automation must explicitly pass --yes. Asking for JSON output does not grant permission to stop a process.
Port Pilot finds the descendants of the listening process and stops them before the parent. It starts with a graceful signal and only forces termination when a process does not exit after the grace period.
The macOS app follows the same rule. It shows a native confirmation screen, then sends the approved action back through the command-line engine.
Everything stays local
Port Pilot reads the current state of your computer.
It does not need an account, API key, database, or hosted service.
The command-line tool only saves optional aliases to a local configuration file. The macOS app keeps its preferences and last successful scan on your Mac.
Process details and HTTP health results are not sent anywhere.
The command-line tool supports macOS and Linux. The native menu bar companion requires macOS 13 or newer and Xcode or Swift to build from source.
Node.js 20 or newer is required. Docker support is optional.
What you get
Port Pilot is available on Prototyped for a one-time $20 purchase.
The download includes:
- the complete TypeScript command-line tool
- the React and Ink terminal dashboard
- the complete SwiftUI menu bar app source
- macOS and Linux port scanners
- HTTP health and Docker integration
- JSON commands, exit codes, waits, watch events, aliases, and shell completions
- automated TypeScript and Swift tests
- setup, configuration, architecture, security, and customization documents
- instructions for coding agents
- an MIT license
You can use it as it is, change the interface, add a Windows adapter, connect it to your editor or CI system, or build another developer tool on top of its scanners and typed records.
Related posts about news: