Remote machines
Everyport shows servers on any machine where it can run a program: a devbox over SSH, a Docker container, a Kubernetes pod or a WSL distro. The app runs everyport stdio there through a command you give it, and reads the same protocol it reads from this computer.
For SSH setup, and what to do when a machine can’t connect, see Connect a machine .
WSL
On Windows, the app adds each installed WSL distro for you. Servers inside WSL show under their distro, with their Linux process tree, and open at localhost as usual.
Add a machine
In the app, open Settings → Machines:
- Found on this computer lists hosts from
~/.ssh/config, your Pane remote hosts, online Tailscale peers and WSL distros. Click Add. - Add a machine takes a name and a command that runs a program on the machine:
| 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 command must run without asking for a password. For SSH, use a key or an agent.
From the terminal:
everyport remote add devbox -- ssh devbox
everyport remote list # saved and discovered machines, and the everyport on each
everyport remote rm devboxThe app and the CLI share the saved machines, in machines.toml in the settings folder.
Install Everyport on the machine
The first time you connect, the app checks the machine’s OS and CPU and asks to install the matching everyport. It downloads the release from GitHub, copies it over the same connection, and checks its SHA-256 checksum on the machine. It installs to ~/.local/bin/everyport, or %LOCALAPPDATA%\everyport\everyport.exe on Windows. When the app updates, it updates an everyport it installed there, without asking. An everyport you installed yourself, such as with Homebrew, stays as it is.
On read-only machines, or to install it yourself, use any command from CLI only .
Use a machine from the terminal
everyport --on devbox # terminal UI for devbox
everyport --on devbox list --json
everyport --on devbox stop 5173
everyport --on devbox open 5173 # forwards the port and opens it here--on works with list, watch, stop, restart, open, clean, doctor and the terminal UI. The machine can be a saved one or any host everyport remote list discovers.
The first time, everyport asks before installing itself there, and asks again before updating an older copy. Pass --yes to skip the question, as in scripts. Without a terminal to ask in, and without --yes, everyport stops with an error when it’s missing, and uses an older copy as it is.
In the terminal UI, Tab or m switches between this computer and your saved machines.
Open a remote server
Opening a remote server’s URL forwards its port to this computer, then opens it in your browser:
| Connection | How the port is forwarded |
|---|---|
| SSH | ssh -L |
| Kubernetes | kubectl port-forward |
| WSL | Not needed. WSL servers already open at localhost. |
| Docker and other commands | everyport connect on the machine relays each connection through the same command |
everyport serve | Not supported. Forward the port yourself. |
everyport --on devbox open 5173 keeps the forward open until you press Ctrl C.
Opening a server’s folder, its editor, or resuming its Claude Code or Codex session works for this computer and WSL only.
Connect through Tailscale or a proxy
When a command connection won’t work, such as from a browser or a device that can’t run ssh, run everyport serve on the machine. It speaks the same protocol over HTTP:
tailscale serve --bg http://127.0.0.1:7767
everyport serve --url https://devbox.tail1234.ts.neteveryport serve listens only on loopback (127.0.0.1:7767 by default, change it with --listen), so it’s reachable only through a tunnel or proxy you set up. Every request needs the token in the connection code it prints. --url puts the address clients use into the code. everyport serve runs until you stop it, so keep it running, for example in tmux or as a service.
Add the machine with the connection code everyport serve printed, in Settings → Machines → Add a machine, or from the terminal:
everyport remote add devbox --code everyport://eyJ0b2tlbiI6… # the whole codeThe code holds the token, so share it only with people who may stop your servers. To make a new token, delete serve-token from the settings folder and restart everyport serve.
From a web page
Browsers can’t read everyport serve responses unless you allow the page’s origin. Pass --allow-origin once per origin:
everyport serve --allow-origin https://dash.example.com --allow-origin http://localhost:5173See the protocol for the HTTP API.