no server. no relay.
just peers.
dangowrt/comrade release 0.2.2 license AGPL-3.0 coverity scan

comrade shares your terminal directly with another machine over a hole-punched peer-to-peer link — SSH end-to-end, gated on a one-time token. There is no central server and no relay in the data path: the two ends find each other over the DHT (or the local network) and talk straight to one another.

$ demo

# install

Debian / Ubuntu — signed apt repository

sudo install -d -m 0755 /etc/apt/keyrings
sudo curl -fsSL https://comrade.makrotopia.org/comrade-archive-keyring.asc \
     -o /etc/apt/keyrings/comrade.asc
echo "deb [signed-by=/etc/apt/keyrings/comrade.asc] https://comrade.makrotopia.org stable main" \
   | sudo tee /etc/apt/sources.list.d/comrade.list    # use "testing" instead of "stable" on Debian testing
sudo apt update && sudo apt install comrade

macOS — Homebrew

brew tap dangowrt/comrade
brew trust dangowrt/comrade   # Homebrew 4.3+ requires trusting the tap
brew install comrade          # hosting a session also needs tmux

OpenWrt — apk from packages feed, snapshot builds only for now

apk update
apk add comrade   # hosting a session also needs tmux: apk add tmux

Arch Linux — not in the official repos; build from the in-tree PKGBUILDs

git clone https://github.com/dangowrt/comrade
cd comrade/packaging/arch
(cd kcp && makepkg -si)
(cd comrade && makepkg -si)

PKGBUILD recipes →

Nix / NixOS — flake

nix run github:dangowrt/comrade
nix profile install github:dangowrt/comrade

flake.nix →

Windows — direct download today, winget planned

# grab a static exe from the latest release and put it on PATH:
#   comrade-x64.exe / comrade-arm64.exe
# hosting a session also needs tmux, a native ConPTY build:
winget install arndawg.tmux-windows

# future: once the manifest is accepted into winget-pkgs
#   winget install dangowrt.comrade

Latest release & binaries →