See every dev server on your machine, or on any box you can reach, from your menu bar.
What it is, which branch it's on, which agent started it, and what it costs you.
Quick install
Desktop app and CLI: macOS, Linux
curl -fsSL https://everyport.dev/install.sh | shDesktop app and CLI: Windows (PowerShell)
[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor 3072; irm https://everyport.dev/install.ps1 | iexOther ways
Download from Releases · brew install --cask greenfield-inc/tap/everyport
CLI only: servers, VMs, containers
curl -fsSL https://github.com/greenfield-inc/everyport/releases/latest/download/install.sh | shWebsite · Features · Install · Quick start · Remote machines · CLI · Docs
Everyport finds every local server listening on a port. It shows what the server is, which branch it's on, which coding agent started it, and how much memory and CPU it uses. Stop the ones you forgot about in one click.
It runs on macOS, Windows and Linux. It also watches remote machines over SSH, Docker, Kubernetes, WSL, or any command that can run a program there.
Free and open source. No account. No telemetry.
See what's running
- Every listening dev server with its port, project, git branch or worktree, framework and uptime
- Memory and CPU for the whole process tree behind each port, with a 10-minute history chart
- A total at the top: memory used by your servers, other apps, and what's free
Keep your machine fast
- Spike alerts when a server's memory crosses your threshold or keeps climbing
- Clean up: servers whose worktree was deleted, or that are idle, long-running or leaking memory
- Auto-kill for those servers, set to ask first or act on its own
- Stop or restart any server. Clean up and auto-kill skip protected processes, such as databases, and Stop and Restart ask before touching them. You can edit the protected list in Settings → Clean up.
Jump to the work
- Open
localhost:<port>in your browser, or the Vercel preview for the same branch - See the Claude Code or Codex session that started a server, and resume it in your terminal (on this computer and in WSL)
- See the Conductor workspace, Pane worktree or git worktree each server runs in. Pane is our workspace app for coding agents.
Watch any machine
- On Windows, every WSL distro shows up on its own, with the real Linux process behind each port
- Add machines from
~/.ssh/config, your Pane remote hosts, your Tailscale peers, or by hand - Connect over
ssh,docker exec,kubectl exec,wsl, or any command you choose - The app offers to install
everyporton a machine the first time you connect - Opening a remote server's URL forwards its port to your machine (except for
everyport servemachines)
Feels native
- Opens instantly from the menu bar, the tray, or a global shortcut
- Floats over full-screen apps without stealing focus, with the system's blur behind it on macOS and Windows
- Follows light and dark mode, with 40 color themes
Works in your terminal too
everyportopens the same server list as a terminal UIeveryport list --jsonandeveryport watch --jsonlfeed scripts and other tools

The same list in your terminal: run everyport.
Install the app and the everyport CLI with one command. It checks both against the release's SHA-256 checksums, then opens the app. The app opens without a Gatekeeper or SmartScreen prompt.
curl -fsSL https://everyport.dev/install.sh | shOn Windows, in PowerShell:
[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor 3072; irm https://everyport.dev/install.ps1 | iexOn macOS the app goes into /Applications, or ~/Applications if that isn't writable. On Linux it's an AppImage in ~/.local/share/everyport with a menu entry. On Windows it installs for your user, with no admin prompt. Linux on arm64 gets the CLI only, since there is no arm64 desktop build yet.
Options: --cli installs only the CLI, --no-open skips opening the app, and --deb installs the .deb with apt on Debian and Ubuntu. Pass them after sh -s --:
curl -fsSL https://everyport.dev/install.sh | sh -s -- --cliOn Windows the options are -Cli and -NoOpen:
[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor 3072; & ([scriptblock]::Create((irm https://everyport.dev/install.ps1))) -CliOr install it another way:
| Platform | Install |
|---|---|
| macOS 13+ | brew install --cask greenfield-inc/tap/everyport, or the .dmg from Releases |
| Windows 10/11 | The .msi or -setup.exe from Releases |
| Linux (x86_64) | .deb, .rpm or .AppImage from Releases |
macOS builds are signed and notarized. Windows builds are not signed yet, so SmartScreen asks you to confirm when you install the .msi by hand; the one-command install doesn't trigger it.
On GNOME, the tray icon needs the AppIndicator extension.
The first launch opens a short onboarding: live memory status, the agents and editors it found, Vercel previews, the everyport command, and your other machines. It also turns on launch at login, which you can turn off there or in Settings.
Use the CLI on servers, VMs and containers, or if you prefer the terminal. It's one self-contained binary, everyport, for macOS, Windows and Linux (x86_64 and arm64). Pick one of these:
curl -fsSL https://github.com/greenfield-inc/everyport/releases/latest/download/install.sh | sh
brew install greenfield-inc/tap/everyport
npx everyport # or: npm i -g everyport; npm has 0.1.0 for nowOn Windows, use PowerShell instead of the install script:
[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor 3072; irm https://github.com/greenfield-inc/everyport/releases/latest/download/install.ps1 | iexThe install scripts and the npm package download the release binary for your platform and check its SHA-256 checksum. The PyPI (uvx, pipx) and crates.io (cargo install) packages are placeholders until a release publishes there.
- Open Everyport. On macOS, its menu bar icon shows how many servers are running.
- Click the icon to see your servers. On many Linux desktops, the click opens a menu: pick Open Everyport. Click a server for its details, charts and process tree.
- Click Clean up to stop the servers you no longer need.
Press ⌥ ⌘ P (Ctrl Alt P on Windows and Linux) to open it from anywhere. Change the shortcut in Settings → General.
With the CLI only, run everyport. See Getting started for more.
Clean up suggests stopping servers whose folder or worktree was deleted, or that are idle, long-running or leaking memory. Set the limits in Settings → Clean up.
Auto-kill acts on servers as they start to qualify. Pick one mode in Settings → Clean up → When servers qualify:
- Off (default): they wait under Clean up.
- Ask: a notification asks before stopping each one.
- Stop them: the app stops them for you.
Auto-kill runs only in the desktop app, for this computer. everyport watch, the terminal UI and everyport stdio never turn it on by themselves. It skips protected servers, and leaves leaking ones under Clean up for you to decide. See Settings and clean up.
On Windows, each installed WSL distro is added for you. Servers running inside WSL show under their distro with their Linux process tree, and open at localhost as usual.
To add another machine, open Settings → Machines. Hosts from ~/.ssh/config, your Pane remote hosts and online Tailscale peers are listed under Found on this computer. Add one, and its servers appear in the app next to your local ones. If a machine can't connect, the app shows which step failed and how to fix it. See Connect a machine.
A machine is any command that runs a program on it:
| Connection | Command |
|---|---|
| SSH | ssh devbox |
| Docker | docker exec -i my-container |
| Kubernetes | kubectl exec -i my-pod -- |
| WSL | wsl -d Ubuntu -- |
| Anything else | your own command prefix |
The first time you connect, the app checks the machine's OS and CPU and asks to install the matching everyport binary in ~/.local/bin (%LOCALAPPDATA%\everyport on Windows). It copies the binary through the same connection, verifies its checksum, and updates that copy when the app updates. On read-only machines, or to install it yourself, use any command from CLI only.
From the terminal:
everyport remote add devbox -- ssh devbox
everyport remote list # saved and discovered machines, and the everyport on each
everyport --on devbox # terminal UI for devbox; Tab switches machines
everyport --on devbox list --json
everyport --on devbox open 5173 # forwards the port and opens it here
everyport remote rm devboxeveryport --on <machine> works with list, watch, stop, restart, open, clean, doctor and the terminal UI. A machine can be a saved one or any host everyport remote list discovers. The first time, everyport asks before installing itself there. Pass --yes to install without asking, as in scripts. open forwards the port through ssh or kubectl. For other connections, such as Docker, everyport runs everyport connect on the machine to relay it. The forward stays open until you press Ctrl-C.
See Remote machines for more.
When you can't run a command on the machine, or want to reach it from a web page, run everyport serve there:
tailscale serve --bg http://127.0.0.1:7767
everyport serve --url https://devbox.tail1234.ts.net # listens on 127.0.0.1:7767 and prints a connection codeeveryport serve only listens on loopback, so it's reachable only through a tunnel or proxy you set up, and every request needs the token in the connection code. --url puts the address clients use into the code. Keep everyport serve running, for example in tmux or as a service.
Paste the code into Settings → Machines → Add a machine, or add it from the terminal with the code everyport serve printed: everyport remote add devbox --code everyport://….
Web pages can't read its responses unless you allow their origin, as in everyport serve --allow-origin https://dash.example.com. See docs/protocol.md.
everyport Terminal UI with your servers
everyport list [--json] List servers once
everyport watch --jsonl Print a snapshot on every change
everyport stop <port> Stop the server on a port (--protected if it's protected, --force to kill)
everyport restart <port> Stop it, then rerun its command in the folder it started from (--protected if it's protected)
everyport open <port> Open the server in your browser, forwarding its port with --on
everyport clean [--yes] Stop the servers Clean up suggests
everyport stdio Speak the Everyport protocol on stdin and stdout
everyport serve Speak the Everyport protocol over HTTP on loopback
everyport remote add|list|rm Manage remote machines
everyport --on <machine> ... Run the command on another machine
everyport doctor [--on <machine>] Check permissions and platform support, and the way to each machine
everyport update Update everyport to the newest release
Every command and option is in the CLI reference.
everyport needs no special permissions or admin rights. It shows full details for processes your user owns. Ports owned by other users or the system show with less:
- Linux: the port and its owner. Linux shows which process holds the port only to root, so run
sudo everyportto see it. - Windows: the port, its owner and the process name. Without admin rights, the owner can be missing.
- macOS: the port, its owner and the process name. A new one can take up to 10 seconds to appear.
Everything stays on your machine. The app goes online only to look up Vercel previews, through the GitHub CLI (gh) and only if you turn previews on, to download everyport from GitHub Releases when you install it on another machine, and to check GitHub for a newer release, which you can turn off in Settings. Settings live in your OS config folder (~/Library/Application Support, %APPDATA% or ~/.config, under everyport).
everyport speaks one JSON protocol, over stdin and stdout (everyport stdio) or over HTTP with server-sent events (everyport serve). Anything that can run a command or open a URL can show your servers: an editor extension, a status bar, a dashboard, or a workspace app like Pane. See docs/protocol.md.
everyport watch --jsonl | jq '.servers[] | {port, project: .project.name, memory}'You need Rust (stable), Node.js 20+ and pnpm.
git clone https://github.com/greenfield-inc/everyport
cd everyport
pnpm install
pnpm dev # run the desktop app
cargo run -p everyport -- list # run the CLISee AGENTS.md for the repo layout and checks.
- Website: try the popover and the terminal UI in your browser
- Docs: the pages below, with search
- Getting started
- Connect a machine: SSH, your key, and what to do when a machine can't connect
- Remote machines: SSH, Docker, Kubernetes, WSL,
everyport serveand Tailscale - Settings and clean up
- CLI reference
- Troubleshooting:
everyport doctor, Windows installs and SmartScreen, the Linux tray and blank windows - The Everyport protocol
- FAQ
For coding agents, llms.txt links every page.
Everyport began as a cross-platform port of WhatThePort, a macOS app by Tomjohn Design released under the MIT license. It's built by Dcouple, Inc., the team behind Pane.





