Software Mirrors
ProductsBlogs
Tailcat v0.7.0 - Secure Peer-to-Peer Networking

Tailcat v0.7.0 - Secure Peer-to-Peer Networking

Tailcat is a free, open-source networking tool from Tailscale that establishes encrypted, point-to-point connections between computers without requiring a Tailscale account or a control plane. It supports secure file transfers, SSH access, TCP and UDP port forwarding, network sharing, and remote connectivity using WireGuard and DERP relays.
(4.6)

Developer

Tailscale

Category

Internet Tools

Operating System

Windows / Linux / macOS

Date Published

Fri Nov 13 2026

Review Tailcat v0.7.0 - Secure Peer-to-Peer Networking

Tailcat is an open-source networking utility developed by Tailscale that functions much like Netcat, but built upon Tailscale’s networking technology. It creates encrypted connections between computers without the need for a Tailscale account, a centralized control plane, or administrative privileges.

Instead of relying on conventional VPN setups, Tailcat establishes connections using WireGuard encryption, NAT traversal, and DERP relays. Users exchange connection addresses out-of-band, allowing two machines to communicate securely even when they are on different networks.

Tailcat is particularly useful for developers, system administrators, and anyone in need of a simple way to transfer files, expose local services, access remote machines, or establish temporary network connections.

Download Tailcat v0.7.0 - Secure Peer-to-Peer Networking - Software Mirrors

Tailcat v0.7.0 - Secure Peer-to-Peer Networking for Windows

tailcat_0.7.0_windows_arm64.zip | 6.21 MB

tailcat_0.7.0_windows_amd64.zip | 6.92 MB

Tailcat v0.7.0 - Secure Peer-to-Peer Networking for Linux

tailcat_0.7.0_linux_armv7.tar.gz | 6.6 MB

tailcat_0.7.0_linux_armv7.rpm | 6.59 MB

tailcat_0.7.0_linux_armv7.deb | 6.58 MB

tailcat_0.7.0_linux_arm64.tar.gz | 6.32 MB

tailcat_0.7.0_linux_arm64.rpm | 6.3 MB

tailcat_0.7.0_linux_arm64.deb | 6.3 MB

tailcat_0.7.0_linux_amd64.tar.gz | 6.94 MB

tailcat_0.7.0_linux_amd64.rpm | 6.93 MB

tailcat_0.7.0_linux_amd64.deb | 6.93 MB

Tailcat v0.7.0 - Secure Peer-to-Peer Networking Source Code

Tailcat v0.7.0 - Secure Peer-to-Peer Networking Source code (zip)

Tailcat v0.7.0 - Secure Peer-to-Peer Networking Source code (tar.gz)

Tailcat v0.7.0 - Secure Peer-to-Peer Networking Release Notes:

tailcat changelog

v0.7.0 (2026-09-19)

  • --serve=exit-node servers now forward UDP flows; previously only

TCP was forwarded, so DNS, QUIC, and other UDP traffic through an exit node went nowhere.

  • Serving local ports works from Windows: the server resolves

localhost itself instead of using the hosts file, which Windows ships without localhost entries, so the name no longer escapes to real DNS servers. It also dials both 127.0.0.1 and ::1, reaching services bound to only one loopback address. Official binaries also no longer build with the netgo tag that forced Go's pure resolver on Windows and macOS; they now use the operating system's resolver there, like a default go build does. (#108, reported by @Sammy-T)

  • tailcat cp now works with OpenSSH 8.7 through 8.9 clients, such

as Ubuntu 22.04's. Those versions still speak the legacy SCP protocol unless scp -s asks for SFTP, which is all tailcat file services accept, so copies failed. tailcat now checks whether the installed scp understands -s and passes it when it does; older clients without the flag are unchanged. (#114, fixed in #123 by @BreezeDelegate)

  • Go library: Server.Status() now includes a Peer entry per

connected client, with CurAddr and Relay to tell a direct path from a DERP-relayed one. (#116, reported by @Mo3he)

  • Go library: the new Server.Listen(ctx, network, address) serves

TCP and UDP ports in the standard net.Listener shape, as an alternative to the OnTCP and OnUDP hooks; for UDP, each Accept returns one client flow as a net.Conn. Listeners claim their specific ports ahead of the wildcard hooks, and Listen starts the server if it isn't running yet.

  • tailcat forward takes an --open-browser flag that opens a web

browser to the forwarded local port; tailcat browse is an alias for tailcat forward --open-browser 0:80.

  • exec service: tailcat serve exec -- runs the command

for each incoming connection with the connection as its stdin and stdout, like inetd. With the ssh or no-auth-ssh service, the command after -- instead replaces the shell for every session, like OpenSSH's ForceCommand, with no shell, client-chosen command, or SFTP offered.

  • tailcat ssh to a DNS-named destination first probes the server the

way a stranger would, with no credentials, and refuses to connect if the server hands out a shell to anyone, since an address published in DNS is public; --skip-dns-safety-check opts out. The README, the root help's DNS section, and serve no-auth-ssh startup now all warn that DNS-published addresses need --allow or --ssh-authorized-keys. (#100)

  • Fixed argument parsing under Termux on Android, whose loader inserts

the executable's path as an extra argument. (#92, @shaunlee)

  • The linux binaries now work when run directly on Android, under

Termux, adb shell, or a rooted shell. Android has no /etc/resolv.conf, so a plain Go binary there could not resolve any name and failed at startup fetching the DERP map; it also found no CA roots and could not enumerate network interfaces. tailcat now links tailscale.com's androiddns and androidbin features, which detect Android at runtime, resolve names through Android's DNS resolver daemon, use the system certificate store, and fall back to a synthetic single interface. On regular Linux they do nothing. (#117, reported by @risharde)

  • Updated the tailscale.com dependency to its 2026-09-16 main branch,

which brings data path performance work from wireguard-go and gVisor. wireguard-go now moves each batch of packets through one buffer of about 128 KiB instead of a separate buffer per packet, which in upstream's iperf3 benchmarks between two Linux machines raised throughput by 7% to 35% depending on the workload and cut peak memory for TCP transfers by half to three quarters. Small outbound packets such as keepalives and handshakes now use 2 KiB buffers, so packets waiting on a peer with no active session hold at least 97% less memory than before. gVisor's TCP stack, which carries every tailcat connection, now uses CUBIC congestion control and RACK loss detection; both had been switched off because of gVisor bugs that have since been fixed upstream.

community-maintained, strictly confined snap; see INSTALL.md for where its config lives.

  • tailcat now has a Bluesky account for release and project news:

@tailcat.dev.

Changelog

  • 15ab9e68bfc6534a61797d7af28cedd42b54a3a5 tailcat: report peers in Server.Status so callers can see direct vs relayed

  • 6b106129b8877006744f19082cb6d0d02a3d2b15 cmd/tailcat: use SFTP when scp supports it

  • 79dc7eff30d78fbe9a2c69c725eb05c82d0d542d all: bump tailscale.com, run on Android, fix e2e test deadlock

  • 9777a392e9f845d1223751d68b399485c14e893d cmd/tailcat: fix nil Process crash in two e2e test timeouts

  • 6b73a2691cb6ff3a8ef0f8a99055762466ffd772 INSTALL.md: drop -t from the docker run example

  • cbbabaf30e18efbb02b28ac1a8126193354c7f19 README.md, INSTALL.md: move install instructions to their own page

  • ece58d81946ea830b8c17a3372a18fb4ce0ae8ef cmd/tailcat: fix ETXTBSY flake starting test-built binaries

  • 57b8ce5743d4471f65ad0334574505a0625bb9bf CHANGELOG.md: add unreleased entries for changes since v0.6.0

  • d0d599161bde327fb41db30cfd8da84c8715d47c cmd/tailcat: forward UDP through --serve=exit-node

  • 5ceb16639064e52064589d1c4be5d26dae585477 cmd/tailcat, internal/localhostdns: fix serving local ports from Windows

  • fd101889796a947ac514e9d86ec731af2965fad3 tailcat: add Server.Listen for net.Listener-style TCP and UDP serving

  • 91dc4979bd4ae88af6ae2c8bb549616de4bcaa5a cmd/tailcat: add a browse command and a forward --open-browser flag

  • 7a50a1abd8bca63432afbcc5c04dd278c7029e31 cmd/tailcat, tailcat: add an exec service and an SSH forced command

  • 12339608d78cae95598803da203ad8f8b4178557 cmd/tailcat: warn about public DNS in root help and at no-auth-ssh startup

  • 5a83b9f9e119aad6b558cbc122d94efdca87452d cmd/tailcat, README.md: warn when a DNS-named SSH destination is wide open

  • b3aeffb34d8f51c30143911e5e0fa06fd7f28ff9 cmd/tailcat: fix argument parsing under Termux on Android


Features

Encrypted Peer-to-Peer Connections

Tailcat uses Tailscale's networking components to establish secure connections between machines. WireGuard encrypts traffic, while its networking layer attempts to establish direct peer-to-peer UDP connections through NAT traversal.

When direct connectivity is unavailable, traffic can continue through a DERP relay. This makes it possible to connect machines across different networks without manually configuring port forwarding.

Unlike a conventional VPN, Tailcat operates entirely in userspace. It does not create a system-wide network interface or modify routing tables and DNS settings.

File Transfer and Sharing

Tailcat provides several ways to exchange files between computers.

The drop-box functionality is particularly useful for securely receiving files. Senders can upload content but cannot list the directory, retrieve existing files, or modify previously uploaded files.

Directory sharing also includes path restrictions to prevent access outside the configured directory.

SSH Access Without Public Port Forwarding

Tailcat can expose an SSH server through its encrypted tunnel without requiring an inbound port to be opened on the remote machine.

It supports public-key authentication through existing authorized_keys files, OpenSSH public keys, and GitHub accounts.

There is also a no-auth-ssh mode that relies on the encrypted tunnel identity rather than a separate SSH authentication step. However, this should only be used when possession of the Tailcat address is sufficient authentication. Anyone who obtains that address can access the shell.

For more permanent or publicly discoverable SSH access, additional client authentication is essential.

TCP and UDP Port Forwarding

Tailcat can expose local TCP services through its networking tunnel. This is useful for accessing applications and services that normally listen only on localhost.

For example:

# Remote machine
tailcat serve 8080,3306

# Client machine
tailcat forward tcXXXXXXXXX 18080:8080 3306

The client can then access the remote services through local ports.

The application also supports UDP forwarding and SOCKS5 UDP association. This makes it useful for more than ordinary web traffic and TCP-based applications.

SOCKS Proxy and Browser Access

Tailcat includes a SOCKS proxy that allows compatible applications to connect to remote services through the encrypted tunnel.

It also provides a browser command that automatically establishes a local port forward and opens the remote web service.

This is convenient when accessing a development server, administration interface, or internal web application without exposing its port directly to the internet.

Exit Node Support

Tailcat can operate as an exit node, allowing a connected client to access network resources reachable from the server.

This is useful when accessing devices or services inside a remote private network. Users can define individual forwarding mappings to reach specific remote IP addresses and ports.

DNS-Based Address Discovery

Tailcat addresses can be published in DNS TXT records and resolved by clients. This provides a convenient way to reference a server without manually exchanging its full connection address every time.

However, DNS records are public. Publishing a Tailcat address effectively shares its connection capability with anyone who can read the record. Servers using public DNS discovery must enforce additional authentication, such as restricting access to known client keys or requiring SSH public-key authentication.

Go Library and WebAssembly Demo

Beyond its command-line interface, Tailcat provides a Go library that developers can integrate into their own applications.

It also includes an experimental browser-based WebAssembly demo that can send and receive files or text and interoperate with the CLI. Browser connections currently rely on DERP relays rather than direct peer-to-peer connectivity.

This makes Tailcat interesting not only as a standalone networking utility but also as a foundation for applications requiring encrypted communication between devices.

Performance and Compatibility

Tailcat is built using Go and reuses several components from Tailscale, including its WireGuard implementation, magicsock networking layer, and gVisor-based userspace network stack.

Its connection architecture first establishes communication through a DERP relay, then attempts NAT traversal to upgrade to a direct peer-to-peer connection. Direct connections generally offer better performance, while relayed connections provide a fallback when network conditions prevent direct communication.

The public DERP relays are free but rate-limited. Users who require more predictable performance can operate their own relay infrastructure.

Tailcat does not require root or administrator privileges for its normal networking operation. This is a practical advantage over solutions that depend on configuring system-level VPN interfaces.

The command-line application supports Linux, Windows, macOS, and several other platforms through available installation methods. Prebuilt binaries and packages are available for common operating systems, while building from source provides broader platform coverage.

One limitation is that Tailcat is primarily a command-line networking tool rather than a graphical VPN client. Users need to understand basic networking concepts and work with terminal commands to configure connections.

System Requirements

Tailcat does not require a Tailscale account, root access, a kernel WireGuard module, or system-wide VPN configuration.

Pros and Cons

Pros

Cons

How to Install

Tailcat offers several installation methods depending on the operating system.

Linux

Download the appropriate static binary or Debian/RPM package from the GitHub Releases page.

For Debian or Ubuntu, install the downloaded package:

sudo apt install ./tailcat_*_linux_amd64.deb

Alternatively, install through Snap:

sudo snap install tailcat

macOS

Install Tailcat through Homebrew:

brew install tailcat

Windows

Install through Scoop:

scoop install tailcat

Install Using Go

If Go is already installed, Tailcat can be installed directly from its repository:

go install github.com/tailscale/tailcat/cmd/tailcat@latest

After installation, verify that the executable is available:

tailcat --help

Final Verdict

Tailcat is an interesting networking utility that brings Tailscale's encrypted networking technology into a lightweight, control-plane-free command-line application. Its ability to establish peer-to-peer connections without a Tailscale account or system-wide VPN configuration makes it particularly attractive for developers and system administrators.

The combination of file sharing, SSH access, TCP and UDP forwarding, SOCKS proxying, and exit-node functionality gives it considerably more flexibility than a basic Netcat replacement. Its Go library also makes it useful for developers building their own networking applications.

However, Tailcat is not a direct replacement for a traditional VPN or a managed remote-access platform. Its command-line workflow and address-based authentication model require users to understand how connections are established and how access should be protected.

Overall, Tailcat is a capable and flexible tool for secure temporary connectivity, remote administration, and file transfers between machines.

Sources


Comments on Tailcat v0.7.0 - Secure Peer-to-Peer Networking