Tailscale has released an experimental Rust library called tailscale-rs, a reimplementation of the core Tailscale networking stack in Rust. It mirrors the tsnet Go library API, allowing developers to embed Tailscale directly into their applications without needing a separate client install. The library includes FFI bindings for Python, Elixir, and C, plus Rust-native utility crates for axum integration. Currently it supports basic TCP/UDP communication via DERP relays, but lacks peer-to-peer NAT traversal, DNS resolution, exit nodes, and other advanced features. The motivation for choosing Rust over C or Go is its memory safety, lack of an opinionated runtime, and C-compatible FFI. The Go implementation of Tailscale will continue in parallel; this is not a full rewrite. Tailscale is seeking community feedback to shape the roadmap toward a 1.0 release.

11m read timeFrom tailscale.com
Post cover image
Table of contents
Why Tailscale as a library?Why build another tsnet?Why Rust?OMG are you rewriting Tailscale in Rust?What’s implemented today?What’s next?

Sort: