Tailscale's client joins one tailnet at a time. tailmux joins them all and sends each connection to the tailnet that owns it.
brew install growlyx/tap/tailmux
tailmux setup # add tailnets, log in
sudo brew services start tailmux # every app can now reach every tailnetssh db.home, curl http://grafana.work, psql -h db.corp.internal: names
and subnets from every tailnet work side by side, even when two tailnets use the same IPs.
- Install: Homebrew, service modes, without Homebrew
- Setup and config: the tailmux setupTUI and every config key
- Routing: how tailmux picks a tailnet, and what happens on conflicts
- TUN mode: proxy-free, for every app
- Proxy mode: SOCKS5, HTTP, PAC, ssh, kubectl
- Menu bar app: switches, throughput, local API
- Updates: automatic, and how to turn that off
- Development: the in-process test lab, CI, releases