Open Source Alternatives LogoOpen Source Alternatives
AlternativesBlogAdvertise
Open Source Alternatives LogoOpen Source Alternatives

Stay Updated

Subscribe to our newsletter for the latest news and updates about Alternatives

Open Source Alternatives LogoOpen Source Alternatives

Handpicked Open Source Alternatives to Paid Softwares

Product
  • Categories
  • Tag
  • Sign In
Resources
  • Blog
  • Collection
  • Submit
  • Advertise your tool
Company
  • Privacy Policy
  • Terms of Service
  • Refund Policy
  • Sitemap
Alternatives
  • Superhuman
  • Notion
  • Slack
  • Linear
  • Airtable
  • All alternatives
Copyright © 2026 All Rights Reserved.
Home/Categories/IT Management/tailcat
icon of tailcat

tailcat

Open source alternative to Tailscale, Twingate and ZeroTier

Connect machines across networks with end-to-end WireGuard encryption, no accounts or IP addresses required.

2.7K starsGoBSD-3-ClauseActive this week
Visit websiteGitHub repo
Image for tailcat
Contents
  1. 01Who tailcat is for
  2. 02The problem it solves
  3. 03How it solves it
  4. 04Strengths and trade-offs
  5. 05tailcat vs alternatives
  6. 06Install and self-host
  7. 07Tech stack
  8. 08FAQ
  9. 09Similar open-source tools
TL;DR

tailcat is a netcat-style CLI from Tailscale that connects two machines over an encrypted WireGuard tunnel without requiring accounts, login flows, or IP addresses. It replaces the overhead of commercial network tools like Tailscale, Twingate, or ZeroTier for short-lived connections where you need a secure tunnel but not a persistent managed network. BSD-3-Clause licensed and written in Go, it installs via a single `go install` command. Best for developers, AI agents, and sysadmins who need a quick encrypted connection without joining a larger network.BSD-3-Clause · Go · 2.7K stars · Active this week

who it's for

Who tailcat is for#

Developers SSH-ing into remote dev environments

Run `tailcat --serve=no-auth-ssh` on the target machine, share the token, and SSH in from anywhere without port forwarding or VPN setup. The ephemeral key means the access expires when the tailcat process stops.

Skip if:

You need persistent, stable SSH access to the same machine across sessions. Publish a stable keypair in DNS, or use Tailscale for ongoing device access instead of generating a new ephemeral token each time.

AI agents accessing sandboxed test machines

Agents often cannot complete interactive login flows and may not need persistent network membership. Give the agent a tailcat address and it connects to the target machine for that specific workflow without joining a tailnet.

Skip if:

Your agent framework already manages network access through Tailscale, or the agent needs to reach multiple services that are already on a tailnet. Tailcat adds no value inside an existing tailnet.

Developers sharing local ports or files between machines

Pipe files over stdin/stdout with plain `tailcat`, or forward a local TCP port to a teammate with `tailcat --serve=8080`. No shared network membership required. Works across NAT and different networks without additional configuration.

Skip if:

You need to share access with more than one person at the same time, or need the connection to persist after your machine sleeps or restarts. Tailcat is designed for point-to-point, single-session use.

Go developers embedding ephemeral tunnels in programs

Import `github.com/tailscale/tailcat` and use the zero-value `Server` struct to start a listener, get a connection token via `ConnBlob()`, and accept inbound TCP connections. The library picks safe defaults without configuration. Useful for test harnesses or CLI tools that need temporary connectivity.

Skip if:

Your use case requires a stable versioned API. The tailcat Go library has no stability promises and the API, CLI flags, or wire format may change between releases.

the problem

The problem it solves#

Setting up a full VPN or mesh network to make one short connection between two machines is more work than the job deserves. Most tools in this space require accounts, device enrollment, an admin dashboard, and policy configuration before the first packet moves. SSH port forwarding is fragile across NAT boundaries. VPN clients need OS-level routing changes and root access.

The pain is worse when the connection is temporary. Giving an AI agent access to a test machine for one task, sharing development files with a teammate for an hour, or exposing a local port for a quick demo should not require a persistent network membership that outlasts the task. Commercial platforms optimized for ongoing, auditable access do not fit narrow, time-limited use cases.

how tailcat solves it

How it solves it#

No accounts, login, or IP addresses

Connects two machines using a short connection token derived from a WireGuard public key. No Tailscale account, login flow, tailnet, or static IP address needed on either side. Share the token and the other machine connects.

End-to-end WireGuard encryption

All tunnel traffic is encrypted with WireGuard. Tailcat uses Tailscale's userspace WireGuard implementation, which does not require a kernel TUN/TAP device or root access on either side. No OS routing tables or DNS settings are modified.

NAT traversal with DERP relay fallback

Tailcat attempts direct peer-to-peer UDP connections via STUN-based endpoint discovery and UDP hole-punching. When a direct path is not possible, traffic falls back to a DERP relay. The `tailcat ping --until-direct` command confirms which path is active.

SSH server, port forwarding, and SOCKS5 proxy

Run `tailcat --serve=no-auth-ssh` to start an SSH server over the tunnel on Linux and macOS. Forward any local TCP port with `--serve=8080`, or route traffic through a SOCKS5 proxy with `tailcat socks`. All modes run over the same WireGuard tunnel.

Ephemeral and saved key modes

By default, each `tailcat` server run generates a fresh ephemeral WireGuard key, and the address dies when the process exits. For stable addresses published in DNS, `tailcat genkey` saves a long-lived key to disk. The startup message tells you which mode is active.

Importable Go library

The `github.com/tailscale/tailcat` Go package can be imported directly into programs. The zero-value `Server` struct picks safe defaults (ephemeral key, nearest DERP region) and the tunnel is established lazily on the first dial. Useful for embedding ephemeral connectivity into CLI tools or test harnesses.

strengths · trade-offs

Strengths and trade-offs#

Strengths

  • No root access or OS configuration requiredTailcat runs entirely in userspace. It does not modify routing tables, DNS settings, or network interfaces, so no root or admin privileges are needed on either machine. This matters for shared dev environments, CI jobs, and sandboxed AI agents where elevated access is unavailable.
  • Upgrades to direct peer-to-peer when possibleTailcat uses Tailscale's magicsock transport to attempt UDP hole-punching past the DERP relay to a direct connection. The `ping --until-direct` subcommand confirms when a direct path is active, which reduces latency for interactive SSH sessions compared to relay-only tools.
  • Bring-your-own DERP relayThe hosted DERP relays are rate-limited and log metadata. You can run your own DERP server using Tailscale's open-source derper project and embed its hostname into the connection token via `tailcat genkey --region=derp.example.com`. No Tailscale infrastructure is required once you provide your own relay.
  • Permissive BSD-3-Clause licenseBSD-3-Clause is permissive: you can use, modify, and redistribute tailcat commercially with no copyleft obligations. Unlike AGPL tools, using tailcat in a service does not require you to publish source changes.

Trade-offs

  • -No API or wire-format stability guaranteesThe README explicitly states that the Go API, CLI flags, and wire format may all change without notice. This is pre-1.0 software from a commercial company that may prioritize its paid Tailscale product. Building critical infrastructure on tailcat carries meaningful upgrade risk.
  • -Public DERP relays are rate-limited and log metadataThe hosted tailcat DERP relays have no uptime SLAs or throughput targets, and Tailscale may revoke access at any time. They are not intended for privacy-sensitive or high-throughput use cases. Organizations with strict data policies should run their own DERP relay.
  • -No governance, identity, or audit trailTailcat has no accounts, admins, users, or policy controls. Whoever holds the connection token can connect. There is no audit log of who connected when or for how long. This is the right tradeoff for ephemeral use cases but a hard limit for any team that needs access governance or compliance logging.
versus alternatives

tailcat vs alternatives#

tailcat vs Tailscale

Tailcat and Tailscale share the same underlying data plane: WireGuard, magicsock transport, and DERP relay infrastructure. The difference is the control plane. Tailscale adds a managed coordination layer with accounts, device inventory, ACL policies, and audit logs. Tailcat removes that layer entirely.

FeaturetailcatTailscale
LicenseBSD-3-ClauseOpen-source client; proprietary coordination
Accounts requiredNoYes
Persistent networkNoYes
Access governanceNoneFull (ACLs, groups, audit logs)
Rate-limited relaysYes (public hosted)No (managed infrastructure)

Tailcat is the better choice for one-off connections: a developer SSH session, a file transfer, or an AI agent task. Tailscale is the better choice when you need persistent, governable access across multiple devices and users, or when compliance requires an audit trail.

tailcat vs Twingate

Twingate is a zero-trust network access product targeting enterprise teams. It requires connectors deployed in your infrastructure and users managed through an identity provider. It is a commercial product with no self-hosting option.

FeaturetailcatTwingate
LicenseBSD-3-ClauseProprietary
Accounts requiredNoYes (SSO/IdP)
Self-hostingN/A (relay only)No
Access policiesNoneFine-grained per resource
PricingFreePer-user SaaS pricing

Tailcat wins for short-lived, account-free connections. Twingate is the better fit for enterprise teams replacing a legacy VPN with identity-linked, policy-controlled access to internal resources.

tailcat vs ZeroTier

ZeroTier creates a virtual Ethernet layer across machines. It has an open-source network controller you can self-host, a free tier for up to 25 devices, and commercial plans above that.

FeaturetailcatZeroTier
LicenseBSD-3-ClauseBusiness Source License
Network modelPoint-to-point tunnelVirtual Ethernet (Layer 2)
Accounts requiredNoYes (for managed service)
Self-hosted controllerNoYes
Persistent membershipNoYes

Tailcat is faster to set up for a single connection and requires no account. ZeroTier is the better choice for persistent multi-device virtual networks, especially when you need Ethernet-layer features or want to self-host the network controller.

install · self-host

Install and self-host#

bash
Install tailcat with Go; no system setup or root access required.
```bash
go install github.com/tailscale/tailcat/cmd/tailcat@latest
```
tech stack · detected from GitHub

What it's built on#

Languages
GoJavaScript
frequently asked

FAQ#

Does tailcat require a Tailscale account?

No. Tailcat does not require a Tailscale account, login, or any form of user identity. Access is granted by possession of the connection token. The token encodes the server's WireGuard public key and DERP relay info, which is everything a client needs to connect.

Is tailcat connection traffic private?

The connection traffic is encrypted end-to-end with WireGuard. However, the hosted tailcat DERP relays keep metadata logs and are not intended for privacy-sensitive use. If privacy is a hard requirement, run your own DERP relay using Tailscale's open-source derper project, specifying its hostname with tailcat genkey --region=your.derp.host.

How is tailcat different from Tailscale?

Tailscale is designed for ongoing, auditable, governable network access across devices and users. Tailcat is designed for narrow, short-lived connections between two machines with no account, identity, or persistent network membership. Use Tailscale when you need a managed network; use tailcat when you need one quick encrypted connection.

How sensitive is a tailcat connection token?

A tailcat connection token (starting with tc) encodes the server's WireGuard public key and DERP relay info. Anyone who has the token can connect to that server session, so treat it like a password. Do not log it, commit it to source control, or share it publicly. Ephemeral tokens (the default) expire when the server process stops.

Can tailcat be embedded in a Go program?

Yes. The github.com/tailscale/tailcat Go package is importable as a library. The zero-value Server struct starts a listener, and ConnBlob() returns the connection token for sharing. Note that the Go API has no stability promises and may change between releases.

also worth a look

Similar open-source tools#

hysteria

hysteria

Fast and censorship-resistant proxy solution

22.4KGoMIT
kudu

kudu

Terminal UI for QEMU/KVM VMs on Linux, no libvirt required

149RustGPL-3.0
airstats

airstats

Sixteen macOS metrics in your menu bar at 0.046% CPU

223SwiftMIT
iroh

iroh

Connect devices seamlessly without relying on the cloud.

12.4KRustApache-2.0
RuFlo

RuFlo

Deploy intelligent AI agents with ease.

69.6KTypeScriptMIT
Tor Browser

Tor Browser

Secure browsing through the Tor network with anti-fingerprinting

0ShellBSD-2-Clause

Repository

Stars
2.7K
Forks
73
License
BSD-3-Clause
Last commit
today
Last verified
Aug 29, 2026
Repo
tailscale/tailcat ↗

Additional details

Language
Go
Open issues
10
Contributors
332
First release
2024

Categories

IT ManagementDeveloper ToolsCloud & HostingSecurity & Monitoring

Tags

CLIDeveloper ToolsSecurityFile SharingAI Agents