Developing in the open
Tailscale is largely open source and consists of the following elements:
The client, which runs on each of a user’s devices, is mostly open source. The core client code for the Tailscale daemon used across all platforms is open source, and the full client code is open source for platforms that are also open source.
We enthusiastically support open source operating systems such as Linux and Android, and we believe that our time and energy is best directed toward the communities for these platforms. As a result, where the operating system is open source, the daemon and GUI are open source; and where the operating system is closed, the daemon is open source and the GUI is closed source.
A closed source coordination server.
Why bother making any part of Tailscale open source?
- To improve trust and transparency. Anyone can review our code and see how Tailscale really works. We hope this increases your trust in using Tailscale.
- To share what we’ve learned. When we started Tailscale, mesh overlay networking was complex to set up and use, where it existed at all. By working in the open, we’ve helped lead a shift in considering what’s possible and how approachable it can be.
- To allow for adaptability. We understand the desire not to be locked into a specific provider.
- To make it easier to get feedback. By keeping our issues and feature requests public, you can upvote them (with emojis please!) or submit new requests, and we can prioritize what’s really needed for our users right now.
Financial support for open source projects and maintainers
Tailscale donates annually to WireGuard®. Tailscale is built on WireGuard®, specifically wireguard-go. As we develop Tailscale and add new functionality, we also upstream those changes to help other users of the project.
Tailscale also supports several other projects and maintainers we depend on, as well as Let’s Encrypt, which we use to issue TLS certificates.
Contributing to open source
Tailscale open sources internal projects that other organizations might benefit from, such as:
- depaware, for tracking your Go dependencies.
- ToBeReviewed bot, for auditing emergency production changes.
- Our internal security policies, for reference when developing your own security policies.
When a project originally developed by the community becomes critical to our users, if the maintainers are willing, we adopt the project and take responsibility for ongoing support and development. For example, this is what happened with the Tailscale Synology package (thanks Guilherme de Maio!) and Terraform provider (thanks David Bond!).
Tailscalars are also encouraged to contribute to other open source projects they rely on as part of their jobs, or that they feel passionate about. Tailscalars contribute to the Go project and community, NixOS, and more.
Headscale is an open source alternative to the Tailscale coordination server and can be self-hosted for a single tailnet. Headscale is a re-implemented version of the Tailscale coordination server, developed independently and completely separate from Tailscale.
Headscale is a project that complements Tailscale — with its own independent community of users and developers. Tailscale does not set Headscale’s product direction or manage the community, and neither prohibits nor requires employees from contributing to Headscale.
Our opinion is that Headscale provides a valuable complement to Tailscale: It helps personal users better understand both how Tailscale works and how to run a coordination server at home. As such, Tailscale works with Headscale maintainers when making changes to Tailscale clients that might affect how the Headscale coordination server works, to ensure ongoing compatibility.
Providing Tailscale to open source projects
Tailscale is free for open source projects. With the Community on GitHub plan, you can use Tailscale for your project to access and share project resources, like a build tool or a test server. Any open source project with an OSI license can use this plan. Currently, this plan requires using GitHub for authentication.
Is Tailscale open source?
Mostly. Tailscale daemon client code is open source. Where the operating system is open source, the daemon and GUI are open source, and where the operating system is closed, the daemon is open source and the GUI is closed source.
Tailscale’s DERP server code is also open source. This lets you verify and build these components yourself. Tailscale’s coordination server is closed source. If you want to run your own coordination server at home, check out Headscale.
How do I contribute to Tailscale?
What is Headscale? Is it run by Tailscale?
Headscale is an open source coordination server for Tailscale clients. It is independent from Tailscale.
How does Tailscale decide which projects and maintainers to support financially?
Tailscale strives to sponsor open source projects that are critical to our product. Eligible projects must have an OSI-approved license, code of conduct, and a way to be sponsored, such as GitHub Sponsors or Open Collective. We prefer to sponsor projects rather than individuals, and we don’t typically consider projects that are primarily commercial or corporate-backed. We may not financially support a project that we already support in other ways.
How does Tailscale decide how much to sponsor?
We’re still trying to figure out when, and how much, we should support projects financially, and don’t yet support all the projects we’d like to. We aim to sponsor projects and individuals at a level equal to a few hours of work per month.
Why does my account say “Thanks!” on it?
We value open source contributions and the maintainers we rely on. If you’ve contributed to Tailscale or a project we rely on, we’re saying thanks with a free Personal Pro account. You should see a heart over your profile in your Tailscale account. (If you should have one and it’s not there, let us know.)