← all stories

Tailscale

Tailscale shipped Tailcat, a command line transfer tool built on its data plane, and traced a recurring corruption incident in its SQLite-based control plane to a bug that had been latent in the database for 16 years. Both items surfaced on the same day in September 2026.

Synthesized from 2 Yomimono stories · updated Sep 23

Two stories from September 2026 define where Tailscale stands. The company released Tailcat, a command line tool that sends text and files between two machines using Tailscale's WireGuard-based encryption and NAT traversal, without the Tailscale control plane. The receiving side prints an address, and the sender passes that address to tailcat. Beyond plain text and file transfer, the tool also serves SSH, files, web servers, and forwarded ports, and it ships as a Go library and a WebAssembly build. The project's own author argues that plain WireGuard does not solve the network problems Tailcat hands to the data plane.

The second story is an incident that ran for months before it was understood. Tailscale has used SQLite as its primary database since 2022. Starting in August 2025, backups uploaded to S3 began showing corruption. It happened 19 times over six months, and each occurrence forced a control plane process to stop for repair or restore. Recent code changes were ruled out as the cause. Tailscale signed a support contract with the SQLite developers and built a transaction log pipeline. That pipeline is what narrowed the search and helped the SQLite team reach a bug that had been latent in the database for 16 years.

Taken together, the two items point to the same part of the stack. Tailcat routes around the control plane by relying on the data plane, while the durability work concerns the control plane's own database and the backup path that protects it. One is a new tool, the other a years-old defect found and fixed.

Key facts

Tailcat
A command line tool from Tailscale that sends text and files between two machines using Tailscale's WireGuard-based encryption and NAT traversal, without the Tailscale control plane. ↗
Tailcat usage model
The receiving side prints an address; the sender passes that address to tailcat. ↗
Tailcat extra services
Tailcat also serves SSH, files, web servers, and forwarded ports. ↗
Tailcat distribution
Tailcat ships as a Go library and a WebAssembly build. ↗
SQLite adoption
Tailscale used SQLite as its primary database starting in 2022. ↗
Corruption incident
From August 2025, backups uploaded to S3 showed corruption 19 times over six months, each time forcing a control plane process to stop for repair or restore. ↗
Root cause
The transaction log pipeline Tailscale built helped lead the SQLite team to a bug latent in the database for 16 years. ↗
SQLite support contract
Tailscale signed a support contract with SQLite developers. ↗

Timeline

Synthesized by Yomimono from the cited Yomimono stories below, each itself sourced, then editorially reviewed. Every fact links the story it came from.

Connections

Produces
tailcat

Structured graph also available as JSON at /public/entities/tailscale. CC BY 4.0.

All coverage

Sep 20

Tailscale Releases Tailcat, A Netcat Built On Its Data Plane

Tailcat is a command line tool from Tailscale that sends text and files between two machines using Tailscale's WireGuard-based encryption and NAT traversal, without the Tailscale control plane. The receiving side prints an address; the sender passes that address to tailcat. The tool also serves SSH, files, web servers, and forwarded ports, and ships as a Go library and a WebAssembly build.

Sep 20

Tailscale Traces Backup Corruption to a 16-Year-Old SQLite Bug

Tailscale used SQLite as its primary database starting in 2022. From August 2025, backups upload to S3 began showing corruption, occurring 19 times over six months, each time forcing a control plane process to stop for repair or restore. Recent code changes were ruled out. Tailscale signed a support contract with SQLite developers and built a transaction log pipeline, which helped lead the SQLite team to a bug latent in the database for 16 years.