Porta

See what's listening on your ports, from the tray, and stop it.

Download for Windows Download for macOS

Windows 10 or later. Also for macOS.

or brew install --cask kidchenko/tap/porta

Try it: pick a server, copy its address, or stop it.

"Port 3000 is already in use"

Then comes the hunt: lsof -i :3000, a pid, and a guess at which of six node processes it is. Porta is a door in the tray that already knows.

Next.jsDjangoPostgreSQLDocker

Knows your stack

Next.js, Vite, Django, Rails, Laravel, Spring, Postgres, Redis, Docker, or plain Node, Python, Go and Rust. About 90, each with its logo.

Named after your project

A server started in ~/projects/shop reads as shop, so two Next.js apps never look alike.

Two clicks to stop it

Open it in the browser, copy its URL, show its folder, or stop it. With a few running, stop them all at once.

Ready for your phone

A server your network can reach shows the address to type on another device. Click it and it's copied.

Your servers first

What you started from a terminal is at the top. Spotify, VS Code and the OS's own ports are tucked away underneath.

Small and quiet

A 1 MB app with nothing else to install. In the tray it uses about 2 MB of memory and no measurable CPU.

Reading the door

One look at the tray says whether anything of yours is still running.

ShutNothing you started from a terminal is listening.
2
AjarYour servers are up. On macOS, with how many beside it.

How it knows

Porta asks the OS which processes are listening on TCP ports: GetExtendedTcpTable on Windows, lsof on macOS. Then it reads each one's command line, working folder and start time.

A server is yours when a shell or terminal is among its parents: Terminal, iTerm2, Ghostty, Windows Terminal, VS Code's terminal and so on. The rest is filed under other apps and services.

Stopping asks nicely first. On macOS a server gets a SIGTERM so it can shut down cleanly, with Force quit if it won't. Porta never offers to stop the OS's own processes, and nothing it sees leaves your computer.

From a terminal

The same answers without opening the menu.

$ porta list
  3000  node     41859  2h 05m   LAN    terminal  shop
  5173  node     42210  14m      local  terminal  docs
  5432  postgres   917  3d 01h   local
$ porta stop 3000
Stopped node (pid 41859) on 3000.

Install

macOSPorta.dmg (Apple silicon and Intel)
Homebrewbrew install --cask kidchenko/tap/porta
Windows installerPorta-Setup.exe

macOS 11 or later, or Windows 10 or later. It's about 1 MB and needs nothing else installed.

More small tray apps