Open-source mesh VPN · Rust · Apache-2.0
Your machines, one network. No server in between.
meshvpn connects laptops, servers, Raspberry Pis, containers and GPU boxes into one private network. There is no control plane to run or rent, no account and no cloud: the machines find each other, punch through NAT and firewalls, and relay for each other where they must.
$ curl -fsSL https://github.com/PlugOvr-ai/meshvpn/releases/latest/download/install.sh | sudo sh$ meshvpn status ● desktop 100.91.20.7 (network "home") NAME IP STATUS RTT PATH laptop 100.122.64.143 online 31ms direct [2a02:…]:7870 pi 100.94.140.208 online 2ms direct LAN $ ssh laptop.mesh
Why another VPN
Most mesh VPNs still need a server. meshvpn doesn't.
Tailscale needs its coordination service (or a self-hosted Headscale), NetBird a management and signal server, Nebula its lighthouses, ZeroTier its root servers. Those servers are convenient, but they are one more thing to run, trust, pay for, or lose. In meshvpn every node is equal, and the network is just its machines.
Finds each other again
Home routers change their address every day, phones move between networks. With the DHT switched on, nodes leave an encrypted, signed note in the public BitTorrent DHT that only members can find and read. No DynDNS, no anchor server.
Through routers and 5G
UDP hole punching through NAT, hole punching over IPv6 (TCP and UDP) through the firewalls of home routers and mobile networks, automatic port forwarding (UPnP, NAT-PMP, PCP), STUN. Relays over other nodes when nothing else works.
Through corporate firewalls
A machine that may only open SSH joins over a supervised reverse tunnel. Networks that may only reach out connect to a node outside with meshvpn connect.
More than a tunnel
Everything you do between your machines, built in.
Password-less SSH
Decide per machine who may log in as whom, in one grid. Keys are bound to the node's mesh address. A built-in SSH server for containers without sshd.
A desktop in the browser
meshvpn desktop gpu1 opens a remote Xfce, MATE or Cinnamon desktop in your browser, over SSH, with 3D and H.264 on the GPU.
Multi-node AI work
Launch distributed training across nodes, reserve GPUs, share datasets and checkpoints peer to peer, and check the network before a run.
Made for AI agents
--json everywhere, clear exit codes, meshvpn guide and an MCP server, so an agent can run commands and move files across your machines.
Exit nodes
Send a machine's internet traffic through another node, to appear with your home or office address. Nothing leaks while the exit is down.
Admins and invites
Single-use, expiring invites; admins; bans that rotate the network key; members for a limited time; several networks on one machine.
Get started
Two commands per machine.
$ sudo meshvpn init --network home Invite code: mesh1-eyJuZXR3b3Jr... $ sudo meshvpn install
$ sudo meshvpn join mesh1-eyJuZXR3b3Jr... $ sudo meshvpn install $ ssh desktop.mesh
Windows, packages and builds from source: Download. A step-by-step walk-through, also for a home router and a laptop on 5G: Get started.