Skip to content
greenfield-incPublic

About

See every dev server on your machine, or any box you can reach, in your menu bar. macOS, Windows, Linux.

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Everyport: every dev server on every machine, one click from your menu bar

Everyport

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.

The Everyport popover: a server's detail with its Claude Code session, the server list with a leaking Storybook, a leak alert, and Clean up

CI MIT License Platforms Latest release npm crates.io PyPI Built with Tauri


Quick install

Desktop app and CLI: macOS, Linux

curl -fsSL https://everyport.dev/install.sh | sh

Desktop app and CLI: Windows (PowerShell)

[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor 3072; irm https://everyport.dev/install.ps1 | iex

Other 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 | sh

Website · 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.

Features

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 everyport on a machine the first time you connect
  • Opening a remote server's URL forwards its port to your machine (except for everyport serve machines)

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

  • everyport opens the same server list as a terminal UI
  • everyport list --json and everyport watch --jsonl feed scripts and other tools

Screenshots

Server detail with memory and CPU charts, the process tree, and the session menu Clean up: servers whose worktree was deleted or that are idle, with protected databases skipped
Server detail. Memory and CPU history, the process tree, and the session that started it. Clean up. Deleted worktrees, idle and leaking servers. Protected databases are never touched.
The machine switcher: this Mac, a devbox over SSH, a WSL distro and a GPU box Stopping a protected Postgres asks for confirmation first
Any machine. Switch between this Mac, a devbox over SSH, a WSL distro and more. Safe by default. Stopping a protected server asks first.

The Everyport terminal UI listing servers
The same list in your terminal: run everyport.

Install

Desktop app

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 | sh

On Windows, in PowerShell:

[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor 3072; irm https://everyport.dev/install.ps1 | iex

On 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 -- --cli

On Windows the options are -Cli and -NoOpen:

[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor 3072; & ([scriptblock]::Create((irm https://everyport.dev/install.ps1))) -Cli

Or 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.

CLI only

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 now

On 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 | iex

The 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.

Quick start

  1. Open Everyport. On macOS, its menu bar icon shows how many servers are running.
  2. 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.
  3. 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 and auto-kill

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.

Remote machines

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 devbox

everyport --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.

Connect through Tailscale or a proxy

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 code

everyport 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.

CLI

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.

Permissions and privacy

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 everyport to 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).

Build on 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}'

Build from source

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 CLI

See AGENTS.md for the repo layout and checks.

Documentation

For coding agents, llms.txt links every page.

Credits

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.

License

MIT

About

See every dev server on your machine, or any box you can reach, in your menu bar. macOS, Windows, Linux.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages