macOS menu bar app
Every dev server on your Mac, one click from stopped.
The pnpm dev from a closed tab. Yesterday's Vite server. The API still holding port 8000. DevPorts shows them in the menu bar with project, port, and uptime, and stops the one you pick without taking anything else down.
One-time purchase · macOS 14+ · Apple silicon & Intel
- storefrontNext.js:30002h 14m
- billing-apiUvicorn:800047m
- docsAstro:43213d
- design-systemStorybook:60061d
Instead of this
$ lsof -nP -iTCP -sTCP:LISTEN
rapportd 860 *:60164
ControlCe 1020 *:7000
ollama 1781 127.0.0.1:11434
node 3619 127.0.0.1:3000
OrbStack 6814 *:54322
node 96623 127.0.0.1:3310
Cursor 57001 127.0.0.1:60191
... 31 more lines
$ ps -o pgid= -p 3619 # which of these is safe to kill?You scan past system daemons, guess which node is which project, then kill a pid and hope the package manager above it doesn't restart it.
DevPorts does that lookup every few seconds and shows only the servers that belong to your projects.
Features
Only the dev servers
DevPorts lists processes that listen on a port and run inside a project folder. Chrome, OrbStack, your editor, and system daemons stay out of the list.
Stops the whole server
pnpm dev → next dev → next-server goes down together, so nothing respawns and the port is actually free.
Leaves the rest alone
Stopping one app in a turbo or concurrently setup keeps its siblings running. Your terminal shell is never signalled.
Knows what it's looking at
Project name, framework (Next.js, Vite, Astro, Uvicorn, Rails, and more), every port, uptime, and the project's own favicon.
One click to open
Open localhost in your browser, reveal the project in Finder, or copy the pid from the row.
Scriptable
Run the app binary with --list to print what the menu shows, or --stop <pid> to use the same safe stop path.
DevPorts 0.1.0
$9
One-time. No subscription, no account. Tax shown at checkout.
You'll download a .dmg right after paying. Requires macOS 14 or later.
Questions
macOS says it can't verify the developer. Is that expected?
Yes, for now. This build isn't notarized by Apple yet. After dragging DevPorts to Applications, open it once, then go to System Settings → Privacy & Security and click Open Anyway. macOS remembers the choice.
What counts as a dev server?
A process you own that listens on a TCP port and whose working directory is inside a project, meaning a folder with package.json, pyproject.toml, requirements.txt, Cargo.toml, go.mod, Gemfile, composer.json, deno.json, mix.exs, or manage.py.
Does it see servers in Docker or OrbStack?
No. Containers show up as the container runtime, which DevPorts skips on purpose. Use your container tool for those.
Could it stop the wrong thing?
It checks the process start time right before stopping, so a reused pid is refused. It only climbs to parents that exist solely to run that server, and it never signals shells, launchd, other users' processes, or sibling servers.
Does it phone home?
No. The only network requests are favicon lookups to your own servers on localhost, capped at 1 MB. There is no account, analytics, or license server.
How do I pay, and who handles tax?
Checkout runs on Stripe, sold through Link as the merchant of record, so VAT and sales tax are calculated and handled for your country. You'll see the total before you pay, and Link emails your receipt.