Tailscale released tailcat on August 31: an open-source Go library and CLI that works like netcat, but over Tailscale’s data plane. WireGuard encryption, NAT traversal and DERP relays, with the control plane left out. No account, no users, no IP addresses, no admin rights, and it never touches your routing tables or DNS. One side runs a listener and prints a tailcat address; the other connects with it. Everything between them is encrypted end to end.
Brad Fitzpatrick wrote the first version in September 2023 on a ten-hour flight, as a novelty, and mostly forgot about it. Customers asked for it, then agentic coding made it useful: hand an agent an address and it can reach one specific machine without joining anything. Tailscale’s stated reason for releasing it now is that the idea was inevitable, and they would rather people use and improve their data plane.
How it works
The server generates a keypair, picks a DERP server for rendezvous, and prints a tailcat address, a string of the form tc + base64(CBOR(public key + DERP bootstrap info)). You pass that on out of band, or in a DNS TXT record. The client sends a MEOW message over the relay to join the server’s netmap, and the server can lock access down to a key allowlist. TCP then runs inside a userspace stack on both ends; the synthetic IPv6 addresses come from the public keys and never surface in your operating system. magicsock tries to upgrade the connection to a direct UDP path, and the relay is the fallback.
What you can do with it
Pipe stdin and stdout between two machines, like netcat. Serve a local port through the tunnel, or bring ports from the far side back to localhost, including an exit-node mode. There’s a SOCKS mode that runs a child process pointed at the tunnel, and a browse command that opens a forwarded web port. The repo has an experimental WebAssembly build that runs in a browser tab and talks to the CLI.
The self-hosting angle
The default relays are Tailscale’s, rate-limited and spread across a few regions, and they keep metadata logs, which the docs say are not for privacy. Run your own derper and the connection owes nothing to Tailscale as a company. The tailcat address is the credential, so don’t log it, commit it or tweet it.
My read
There is nothing to sign up for, and nothing keeps running when you’re done. The trade is that Tailscale promises no stability for the API, the flags or the wire format, and it can revoke the free relays at any time.