Switchboard sits in your Mac menu bar and shows everything running on localhost, grouped by project. Open it, restart it, read its logs or stop it without going back to the terminal.
Free and open source. Needs macOS 14 or later.




You have five projects and eight servers. Which one is holding port 3000?
Switchboard reads what is listening on your Mac, works out which project owns each port, and puts the right action next to it.
A map shows which servers talk to each other. Stop the database and it tells you the API and the web app are still using it, before you pull the plug.
Type a port to see who has it. If you start something whose port is taken, Switchboard says who is using it and offers the next free one. You can also move a running server to another port, and undo it.
Next.js (dashboard) is using it, so Node.js would fail to start. Start it on :3001 instead?
Stopped servers stay on the list. One click starts the whole project again, in the order its servers depend on each other. Save a switchboard.json in your repo and a teammate gets the same stack.
// switchboard.json { "name": "billing", "services": [ { "name": "db", "port": 5432 }, { "name": "api", "port": 8000, "dependsOn": ["db"] } ] }
Open for web pages. Copy URL for APIs and databases. No guessing which one you want.
Stopped the wrong thing? Undo starts it again, in the same folder with the same command.
Output follows live inside the popover. Filter it, copy it, or send it to Terminal, iTerm, Ghostty, Warp, tmux and more.
Crash, closed terminal, or another process took the port. It tells you which, with the last lines of output.
The Homebrew install adds a switchboard command for status, start and stop.
Install with Homebrew, or download the app.
Switchboard is not notarized yet, so macOS asks you to confirm the first launch. Open System Settings, then Privacy & Security, and click Open Anyway. You can also run xattr -dr com.apple.quarantine /Applications/Switchboard.app once.
Type 3000 in Switchboard's filter box. It shows whether the port is free and, if not, which process and project holds it. In Terminal the equivalent is lsof -i :3000.
Click Stop on the server's row. In Terminal: kill $(lsof -t -i :3000).
It looks at the open connections between servers on your Mac right now. A solid line means a connection was seen. A dashed line means a project's .env names that port but no connection was seen. A missing line does not prove two servers are unrelated, because a connection can be idle or closed when it looks. The dashed box is the project folder, nothing more.
Yes. Containers with published ports are listed next to your other servers, and you can stop, restart and read their logs.
Very little. Switchboard reads your local ports and processes and keeps its settings on your Mac. At launch and every few hours it asks GitHub whether a newer version exists, and sends nothing about you. You can turn that off in the settings menu. A public link only starts if you ask for it and uses cloudflared or ngrok. The code is on GitHub if you want to check.
Yes. It is open source under the MIT license and installs with Homebrew.