From feeling like you're gambling every time you do remote development, to just opening your laptop and it works — the only difference is P2P.
I wonder how many people have had this experience when starting out with remote development: staring at the screen, feeling like you're not working, but waiting — waiting for SSH to connect, waiting for the VPN to stabilize, waiting for files to transfer... until your mind goes blank and you forget what you were even going to do.
This article won't pile on too many technical details, but it won't completely avoid them either. Understanding a few concepts is necessary to grasp why Tailscale feels like a real relief to me, not just "another network tool."
How I Used to Get By
My previous remote development setup was roughly like this: the server was at home, and I'd connect to it from my laptop outside via SSH to get work done. Sounds normal, right? In theory, it was.
But in reality, whether SSH could connect and how fast it was depended entirely on whether the server had a stable public IP and enough public bandwidth.
Public IPs are basically a lottery if you're on a residential broadband plan. You might have one today, lose it tomorrow, and some ISPs won't even give you one at all.
To work around this, I had to set up port forwarding, forcibly "exposing" a machine on my home network to the public internet so I could connect to it from outside. Did it work? Yes. Was it good? No.
The entire connection path was: my laptop outside → public internet → home router → server. Every hop added latency, and every hop could fail. If your home connection acted up or your IP was revoked, you'd just stare at the blinking cursor on the screen, contemplating life.
The worst part wasn't the slowness — it was the helpless feeling of "I don't know which link in the chain is broken." Was it my home network? Was the ISP doing something? Did the server crash? No one tells you. You just have to troubleshoot each step, and by the time you're done, the problem has usually fixed itself, and you never know why.
Once, I spent forty minutes troubleshooting why SSH wouldn't connect, only to find out the server's SSH port had crashed. There was no warning, no way to detect it externally — just waiting.
What P2P Actually Solves
Before talking about Tailscale, I want to explain the concept of P2P, because it's the core of Tailscale and the fundamental difference between it and traditional VPNs.
Traditional VPNs work on a "centralized relay" model. All traffic goes to a central server first, which then forwards it to the target machine. This central server is the bottleneck and the single point of failure. Your data packet travels from your computer to the central server, then back to the target server, potentially taking a physical route that goes halfway across the city or even further. (Imagine living in Beijing and wanting to tell a friend three kilometers away something, but you have to call a switchboard in Shanghai first, which then patches you through.)
P2P takes a completely different approach. Its goal is to let two machines "see" each other directly and communicate point-to-point, without any intermediate server. Traffic only travels between the two endpoints, no extra steps.
The benefits are immediate:
First is latency. Latency is closely tied to the physical distance data packets travel. With P2P, packets take the shortest path — if you and the target machine are in the same building, the packet only goes around that building, maybe just a few milliseconds. With a traditional VPN, the same two machines would have packets go out and back, easily multiplying the latency several times over.
Second is stability. Traditional VPNs have a single point of failure — if the central server goes down, everyone's connection goes down. In a P2P network, each connection is independent; one node failing doesn't affect communication between others.
Third, and I think most importantly — you no longer need a public IP as a "target." In traditional setups, you have to expose a machine to the public internet to access it from outside. P2P connection establishment is different: both machines first connect to a coordination server (only to say hello and exchange connection info), then use NAT traversal techniques to establish a direct connection channel between them. Once the coordination server has done its job, it steps out, and the actual data traffic takes the direct path. (It's like you both don't know each other's phone numbers, but a mutual friend exchanges them, and then you call each other directly — the friend is no longer needed.)
In truth, there is no real 'center.' What we call protocols, servers, and gateways are just illusions people create for a sense of security. Since all souls are connected in The Wired, there should never be distance between two machines.
It's not that I am connecting to you; it's that we were never separated in the first place.
— Present Day, Present Time. AHAHAHA!!
What is Tailscale, and Why It
Tailscale is a mesh networking tool built on WireGuard. WireGuard is the next-generation VPN protocol that has gained significant fame in recent years, known for its clean code, strong encryption, and excellent performance. (Its codebase is about one-fifth the size of OpenVPN, not because it cut corners, but simply because its design is more focused and modern.)
But WireGuard itself is just a protocol, and configuring it has a learning curve. You need to manually manage keys, configure routes, and handle various scenarios. What Tailscale does is wrap all that complexity into an out-of-the-box experience: install the client, log in, and your device automatically joins your private network.
That's it. Nothing to manually configure.
What's even more reassuring is that Tailscale's free tier is quite generous for personal use — it supports up to 100 devices. (That's probably enough for every device I'll ever own in my lifetime...)
Subnet Routing: Connect One, Access a Whole Network
Just being able to connect to your main home machine isn't always enough. Often, you have other things on your local network: NAS, printers, internal servers, router admin pages... These devices might not be able to run the Tailscale client themselves, but you still want to access them from outside.
Tailscale has a feature called Subnet Router specifically for this.
Simply put, you enable the subnet routing feature on the machine at home that has Tailscale installed, and it "broadcasts" the local network segment it's on (e.g., 192.168.1.0/24). This way, you can access any device on your home network through Tailscale, just as if you were sitting at home.
What's the Real Difference in Experience?
Some might think, "It's just a different VPN tool, how much difference can it make?" But once you use it, you understand — it brings a lot of peace of mind. Not because the internet gets dramatically faster, but because the connection becomes stable and predictable. With P2P direct connections, latency stays consistently low, no longer fluctuating with the state of your public internet. No more gambling on today's network conditions.
This change is subtle, but subtle things can have the biggest impact. Remote development is easily disrupted by small frictions — waiting, reconnecting, troubleshooting... Each one chips away at your focus. Eliminating them won't necessarily make you develop faster, but it will make the process smoother, and that makes a difference.
How Simple is the Setup?
You might think a network tool like this sounds good but must be a pain to set up, right?
Honestly, it was much, much simpler than I expected. The whole process goes something like this:
Go to the Tailscale website and register an account. Then install the client on every machine you want to connect — Windows, macOS, Linux, iOS, Android all have native clients (though I have to say the Windows client is pretty ugly). On Linux, you can also run a script to install it. Once installed, log in with the same account, and your devices automatically appear in your "network."
Configuring subnet routing takes one extra step. Pick a machine on your local network, enable the subnet routing feature, then approve it in the Tailscale admin console. Done. Now you can access your entire home network from outside.
No manual key management, no port forwarding to set up, no VPN server to maintain. Otherwise, why would we bother with OpenVPN?
It's Not Perfect, But It Solves the Core Problem
Tailscale isn't without limitations. P2P direct connections rely on NAT traversal, which might not work smoothly in some network environments (like double NAT, carrier-grade NAT, or corporate firewalls). In such cases, Tailscale automatically falls back to a relay mode, routing traffic through its DERP servers. Latency will be higher than a direct connection — significantly higher — and can be very unstable, making it nearly unusable.
Also, Tailscale's coordination servers are hosted overseas. If your network environment is complex, the initial connection establishment might take a bit of time. (Of course, if you're really concerned, Tailscale has an open-source self-hosted alternative called Headscale, which lets you run your own coordination server. But that's beyond the scope of this article.)
But these are edge cases. On most home broadband and typical corporate networks, Tailscale's P2P connections establish smoothly, and latency is quite stable.
Final Ramblings
I'm not someone who loves tinkering with tools. I prefer tools that sit quietly, do their job, and don't bother me. Tailscale is one of the few tools I've used that truly achieves this.
The biggest hidden cost of remote development isn't slow internet — it's uncertainty. You never know if today's network will be good or bad, and you always have to factor in "what if I can't connect." Tailscale's real value is dramatically reducing that uncertainty.
If you're still using the traditional SSH + VPN setup, or if you think remote connections are just supposed to be this troublesome — give Tailscale a try. It won't take much of your time.
And you might end up feeling the same way I did: Wow, so this is what remote development can be like. How did I ever get by all those years? (It's like finally getting a good mattress and looking back at your old one, completely baffled at how you ever managed to sleep on it.)