tailscaleroot
packagemoduleThis package is not in the latest version of its module.
Details
Validgo.mod file
The Go module system was introduced in Go 1.11 and is the official dependency management solution for Go.
Redistributable license
Redistributable licenses place minimal restrictions on how software can be used, modified, and redistributed.
Tagged version
Modules with tagged versions give importers more predictable builds.
Stable version
When a project reaches major version v1 it is considered stable.
- Learn more about best practices
Repository
Links
README¶
Tailscale
Private WireGuard® networks made easy
Overview
This repository contains the majority of Tailscale's open source code.Notably, it includes thetailscaled daemon andthetailscale CLI tool. Thetailscaled daemon runs on Linux, Windows,macOS, and to varying degreeson FreeBSD and OpenBSD. The Tailscale iOS and Android apps use this repo'scode, but this repo doesn't contain the mobile GUI code.
OtherTailscale repos of note:
- the Android app is athttps://github.com/tailscale/tailscale-android
- the Synology package is athttps://github.com/tailscale/tailscale-synology
- the QNAP package is athttps://github.com/tailscale/tailscale-qpkg
- the Chocolatey packaging is athttps://github.com/tailscale/tailscale-chocolatey
For background on which parts of Tailscale are open source and why,seehttps://tailscale.com/opensource/.
Using
We serve packages for a variety of distros and platforms athttps://pkgs.tailscale.com.
Other clients
ThemacOS, iOS, and Windows clientsuse the code in this repository but additionally include small GUIwrappers. The GUI wrappers on non-open source platforms are themselvesnot open source.
Building
We always require the latest Go release, currently Go 1.25. (While we buildreleases with ourGo fork, its use is notrequired.)
go install tailscale.com/cmd/tailscale{,d}If you're packaging Tailscale for distribution, usebuild_dist.shinstead, to burn commit IDs and version info into the binaries:
./build_dist.sh tailscale.com/cmd/tailscale./build_dist.sh tailscale.com/cmd/tailscaledIf your distro has conventions that preclude the use ofbuild_dist.sh, please do the equivalent of what it does in yourdistro's way, so that bug reports contain useful version information.
Bugs
Please file any issues about this code or the hosted service onthe issue tracker.
Contributing
PRs welcome! But please file bugs. Commit messages shouldreferencebugs.
We requireDeveloper Certificate ofOriginSigned-off-by lines in commits.
Seecommit-messages.md (or skimgit log) for our commit message style.
About Us
Tailscale is primarily developed by thepeople athttps://github.com/orgs/tailscale/people. For other contributors,see:
- https://github.com/tailscale/tailscale/graphs/contributors
- https://github.com/tailscale/tailscale-android/graphs/contributors
Legal
WireGuard is a registered trademark of Jason A. Donenfeld.
Documentation¶
Overview¶
Package tailscaleroot embeds VERSION.txt into the binary.
Index¶
Constants¶
This section is empty.
Variables¶
var AlpineDockerTagstringvar GoToolchainRevstringGoToolchainRev is the git hash from github.com/tailscale/go that this releaseshould be built using. It may end in a newline.
var VersionDotTxtstringVersionDotTxt is the contents of VERSION.txt. Despite the tempting filename,this does not necessarily contain the accurate version number of the build, whichdepends on the branch type and how it was built. To get version information, usethe version package instead.
Functions¶
This section is empty.
Types¶
This section is empty.
Directories¶
| Path | Synopsis |
|---|---|
Package appc implements App Connectors. | Package appc implements App Connectors. |
appctest Package appctest contains code to help test App Connectors. | Package appctest contains code to help test App Connectors. |
Package atomicfile contains code related to writing to filesystems atomically. | Package atomicfile contains code related to writing to filesystems atomically. |
Package chirp implements a client to communicate with the BIRD Internet Routing Daemon. | Package chirp implements a client to communicate with the BIRD Internet Routing Daemon. |
client | |
local Package local contains a Go client for the Tailscale LocalAPI. | Package local contains a Go client for the Tailscale LocalAPI. |
systray Package systray provides a minimal Tailscale systray application. | Package systray provides a minimal Tailscale systray application. |
tailscale Package tailscale contains a Go client for the Tailscale control plane API. | Package tailscale contains a Go client for the Tailscale control plane API. |
tailscale/apitype Package apitype contains types for the Tailscale LocalAPI and control plane API. | Package apitype contains types for the Tailscale LocalAPI and control plane API. |
tailscale/example/servetlscommand The servetls program shows how to run an HTTPS server using a Tailscale cert via LetsEncrypt. | The servetls program shows how to run an HTTPS server using a Tailscale cert via LetsEncrypt. |
web Package web provides the Tailscale client for web. | Package web provides the Tailscale client for web. |
Package clientupdate implements tailscale client update for all supported platforms. | Package clientupdate implements tailscale client update for all supported platforms. |
distsign Package distsign implements signature and validation of arbitrary distributable files. | Package distsign implements signature and validation of arbitrary distributable files. |
cmd | |
addlicensecommand Program addlicense adds a license header to a file. | Program addlicense adds a license header to a file. |
build-webclientcommand The build-webclient tool generates the static resources needed for the web client (code at client/web). | The build-webclient tool generates the static resources needed for the web client (code at client/web). |
checkmetricscommand checkmetrics validates that all metrics in the tailscale client-metrics are documented in a given path or URL. | checkmetrics validates that all metrics in the tailscale client-metrics are documented in a given path or URL. |
cigocachercommand cigocacher is an opinionated-to-Tailscale client for gocached. | cigocacher is an opinionated-to-Tailscale client for gocached. |
clonercommand Cloner is a tool to automate the creation of a Clone method. | Cloner is a tool to automate the creation of a Clone method. |
cloner/clonerex Package clonerex is an example package for the cloner tool. | Package clonerex is an example package for the cloner tool. |
connector-gencommand connector-gen is a tool to generate app connector configuration and flags from service provider address data. | connector-gen is a tool to generate app connector configuration and flags from service provider address data. |
containerbootcommand The containerboot binary is a wrapper for starting tailscaled in a container. | The containerboot binary is a wrapper for starting tailscaled in a container. |
derpercommand The derper binary is a simple DERP server. | The derper binary is a simple DERP server. |
derpprobecommand The derpprobe binary probes derpers. | The derpprobe binary probes derpers. |
distcommand The dist command builds Tailscale release packages for distribution. | The dist command builds Tailscale release packages for distribution. |
featuretagscommand The featuretags command helps other build tools select Tailscale's Go build tags to use. | The featuretags command helps other build tools select Tailscale's Go build tags to use. |
get-authkeycommand get-authkey allocates an authkey using an OAuth API client https://tailscale.com/s/oauth-clients and prints it to stdout for scripts to capture and use. | get-authkey allocates an authkey using an OAuth API client https://tailscale.com/s/oauth-clients and prints it to stdout for scripts to capture and use. |
gitops-pushercommand Command gitops-pusher allows users to use a GitOps flow for managing Tailscale ACLs. | Command gitops-pusher allows users to use a GitOps flow for managing Tailscale ACLs. |
hellocommand The hello binary runs hello.ts.net. | The hello binary runs hello.ts.net. |
jsonimportscommand The jsonimports tool formats all Go source files in the repository to enforce that "json" imports are consistent. | The jsonimports tool formats all Go source files in the repository to enforce that "json" imports are consistent. |
k8s-nameservercommand k8s-nameserver is a simple nameserver implementation meant to be used with k8s-operator to allow to resolve magicDNS names associated with tailnet proxies in cluster. | k8s-nameserver is a simple nameserver implementation meant to be used with k8s-operator to allow to resolve magicDNS names associated with tailnet proxies in cluster. |
k8s-operatorcommand tailscale-operator provides a way to expose services running in a Kubernetes cluster to your Tailnet. | tailscale-operator provides a way to expose services running in a Kubernetes cluster to your Tailnet. |
k8s-operator/generatecommand The generate command creates tailscale.com CRDs. | The generate command creates tailscale.com CRDs. |
k8s-proxycommand k8s-proxy proxies between tailnet and Kubernetes cluster traffic. | k8s-proxy proxies between tailnet and Kubernetes cluster traffic. |
k8s-proxy/internal/config Package config provides watchers for the various supported ways to load a config file for k8s-proxy; currently file or Kubernetes Secret. | Package config provides watchers for the various supported ways to load a config file for k8s-proxy; currently file or Kubernetes Secret. |
mkmanifestcommand The mkmanifest command is a simple helper utility to create a '.syso' file that contains a Windows manifest file. | The mkmanifest command is a simple helper utility to create a '.syso' file that contains a Windows manifest file. |
mkpkgcommand mkpkg builds the Tailscale rpm and deb packages. | mkpkg builds the Tailscale rpm and deb packages. |
mkversioncommand mkversion gets version info from git and outputs a bunch of shell variables that get used elsewhere in the build system to embed version numbers into binaries. | mkversion gets version info from git and outputs a bunch of shell variables that get used elsewhere in the build system to embed version numbers into binaries. |
nardumpcommand nardump is like nix-store --dump, but in Go, writing a NAR file (tar-like, but focused on being reproducible) to stdout or to a hash with the --sri flag. | nardump is like nix-store --dump, but in Go, writing a NAR file (tar-like, but focused on being reproducible) to stdout or to a hash with the --sri flag. |
natccommand The natc command is a work-in-progress implementation of a NAT based connector for Tailscale. | The natc command is a work-in-progress implementation of a NAT based connector for Tailscale. |
natc/ippool ippool implements IP address storage, creation, and retrieval for cmd/natc | ippool implements IP address storage, creation, and retrieval for cmd/natc |
netlogfmtcommand netlogfmt parses a stream of JSON log messages from stdin and formats the network traffic logs produced by "tailscale.com/wgengine/netlog" according to the schema in "tailscale.com/types/netlogtype.Message" in a more humanly readable format. | netlogfmt parses a stream of JSON log messages from stdin and formats the network traffic logs produced by "tailscale.com/wgengine/netlog" according to the schema in "tailscale.com/types/netlogtype.Message" in a more humanly readable format. |
nginx-authcommand Command nginx-auth is a tool that allows users to use Tailscale Whois authentication with NGINX as a reverse proxy. | Command nginx-auth is a tool that allows users to use Tailscale Whois authentication with NGINX as a reverse proxy. |
omitsizecommand The omitsize tool prints out how large the Tailscale binaries are with different build tags. | The omitsize tool prints out how large the Tailscale binaries are with different build tags. |
pgproxycommand The pgproxy server is a proxy for the Postgres wire protocol. | The pgproxy server is a proxy for the Postgres wire protocol. |
printdepcommand The printdep command is a build system tool for printing out information about dependencies. | The printdep command is a build system tool for printing out information about dependencies. |
proxy-test-servercommand The proxy-test-server command is a simple HTTP proxy server for testing Tailscale's client proxy functionality. | The proxy-test-server command is a simple HTTP proxy server for testing Tailscale's client proxy functionality. |
proxy-to-grafanacommand proxy-to-grafana is a reverse proxy which identifies users based on their originating Tailscale identity and maps them to corresponding Grafana users, creating them if needed. | proxy-to-grafana is a reverse proxy which identifies users based on their originating Tailscale identity and maps them to corresponding Grafana users, creating them if needed. |
sniproxycommand The sniproxy is an outbound SNI proxy. | The sniproxy is an outbound SNI proxy. |
speedtestcommand Example usage for client command: go run cmd/speedtest -host 127.0.0.1:20333 -t 5s This will connect to the server on 127.0.0.1:20333 and start a 5 second download speedtest. | Example usage for client command: go run cmd/speedtest -host 127.0.0.1:20333 -t 5s This will connect to the server on 127.0.0.1:20333 and start a 5 second download speedtest. |
ssh-auth-none-democommand ssh-auth-none-demo is a demo SSH server that's meant to run on the public internet (at 188.166.70.128 port 2222) and highlight the unique parts of the Tailscale SSH server so SSH client authors can hit it easily and fix their SSH clients without needing to set up Tailscale and Tailscale SSH. | ssh-auth-none-demo is a demo SSH server that's meant to run on the public internet (at 188.166.70.128 port 2222) and highlight the unique parts of the Tailscale SSH server so SSH client authors can hit it easily and fix their SSH clients without needing to set up Tailscale and Tailscale SSH. |
stunccommand Command stunc makes a STUN request to a STUN server and prints the result. | Command stunc makes a STUN request to a STUN server and prints the result. |
stundcommand The stund binary is a standalone STUN server. | The stund binary is a standalone STUN server. |
stunstampcommand The stunstamp binary measures round-trip latency with DERPs. | The stunstamp binary measures round-trip latency with DERPs. |
sync-containerscommand The sync-containers command synchronizes container image tags from one registry to another. | The sync-containers command synchronizes container image tags from one registry to another. |
systraycommand systray is a minimal Tailscale systray application. | systray is a minimal Tailscale systray application. |
tailscalecommand The tailscale command is the Tailscale command-line client. | The tailscale command is the Tailscale command-line client. |
tailscale/cli Package cli contains the cmd/tailscale CLI code in a package that can be included in other wrapper binaries such as the Mac and Windows clients. | Package cli contains the cmd/tailscale CLI code in a package that can be included in other wrapper binaries such as the Mac and Windows clients. |
tailscale/cli/ffcomplete Package ffcomplete provides shell tab-completion of subcommands, flags and arguments for Go programs written with ffcli. | Package ffcomplete provides shell tab-completion of subcommands, flags and arguments for Go programs written with ffcli. |
tailscale/cli/ffcomplete/internal Package internal contains internal code for the ffcomplete package. | Package internal contains internal code for the ffcomplete package. |
tailscale/cli/jsonoutput Package jsonoutput provides stable and versioned JSON serialisation for CLI output. | Package jsonoutput provides stable and versioned JSON serialisation for CLI output. |
tailscaledcommand The tailscaled program is the Tailscale client daemon. | The tailscaled program is the Tailscale client daemon. |
tailscaled/childproc Package childproc allows other packages to register "tailscaled be-child" child process hook code. | Package childproc allows other packages to register "tailscaled be-child" child process hook code. |
tailscaled/tailscaledhooks Package tailscaledhooks provides hooks for optional features to add to during init that tailscaled calls at runtime. | Package tailscaledhooks provides hooks for optional features to add to during init that tailscaled calls at runtime. |
testcontrolcommand Program testcontrol runs a simple test control server. | Program testcontrol runs a simple test control server. |
testwrappercommand testwrapper is a wrapper for retrying flaky tests. | testwrapper is a wrapper for retrying flaky tests. |
testwrapper/flakytest Package flakytest contains test helpers for marking a test as flaky. | Package flakytest contains test helpers for marking a test as flaky. |
tl-longchaincommand Program tl-longchain prints commands to re-sign Tailscale nodes that have long rotation signature chains. | Program tl-longchain prints commands to re-sign Tailscale nodes that have long rotation signature chains. |
tsconnectcommand The tsconnect command builds and serves the static site that is generated for the Tailscale Connect JS/WASM client. | The tsconnect command builds and serves the static site that is generated for the Tailscale Connect JS/WASM client. |
tsconnect/wasmcommand The wasm package builds a WebAssembly module that provides a subset of Tailscale APIs to JavaScript. | The wasm package builds a WebAssembly module that provides a subset of Tailscale APIs to JavaScript. |
tsidpcommand The tsidp command is an OpenID Connect Identity Provider server. | The tsidp command is an OpenID Connect Identity Provider server. |
ttacommand The tta server is the Tailscale Test Agent. | The tta server is the Tailscale Test Agent. |
vetcommand Package vet is a tool to statically check Go source code. | Package vet is a tool to statically check Go source code. |
vet/jsontags Package jsontags checks for incompatible usage of JSON struct tags. | Package jsontags checks for incompatible usage of JSON struct tags. |
viewercommand Viewer is a tool to automate the creation of "view" wrapper types that provide read-only accessor methods to underlying fields. | Viewer is a tool to automate the creation of "view" wrapper types that provide read-only accessor methods to underlying fields. |
viewer/tests Package tests serves a list of tests for tailscale.com/cmd/viewer. | Package tests serves a list of tests for tailscale.com/cmd/viewer. |
vnetcommand The vnet binary runs a virtual network stack in userspace for qemu instances to connect to and simulate various network conditions. | The vnet binary runs a virtual network stack in userspace for qemu instances to connect to and simulate various network conditions. |
xdpderpercommand Command xdpderper runs the XDP STUN server. | Command xdpderper runs the XDP STUN server. |
control | |
controlbase Package controlbase implements the base transport of the Tailscale 2021 control protocol. | Package controlbase implements the base transport of the Tailscale 2021 control protocol. |
controlclient Package controlclient implements the client for the Tailscale control plane. | Package controlclient implements the client for the Tailscale control plane. |
controlhttp Package controlhttp implements the Tailscale 2021 control protocol base transport over HTTP. | Package controlhttp implements the Tailscale 2021 control protocol base transport over HTTP. |
controlhttp/controlhttpcommon Package controlhttpcommon contains common constants for used by the controlhttp client and controlhttpserver packages. | Package controlhttpcommon contains common constants for used by the controlhttp client and controlhttpserver packages. |
controlhttp/controlhttpserver Package controlhttpserver contains the HTTP server side of the ts2021 control protocol. | Package controlhttpserver contains the HTTP server side of the ts2021 control protocol. |
controlknobs Package controlknobs contains client options configurable from control which can be turned on or off. | Package controlknobs contains client options configurable from control which can be turned on or off. |
ts2021 Package ts2021 handles the details of the Tailscale 2021 control protocol that are after (above) the Noise layer. | Package ts2021 handles the details of the Tailscale 2021 control protocol that are after (above) the Noise layer. |
Package derp implements the Designated Encrypted Relay for Packets (DERP) protocol. | Package derp implements the Designated Encrypted Relay for Packets (DERP) protocol. |
derpconst Package derpconst contains constants used by the DERP client and server. | Package derpconst contains constants used by the DERP client and server. |
derphttp Package derphttp implements DERP-over-HTTP. | Package derphttp implements DERP-over-HTTP. |
derpserver Package derpserver implements a DERP server. | Package derpserver implements a DERP server. |
xdp Package xdp contains the XDP STUN program. | Package xdp contains the XDP STUN program. |
xdp/headerscommand The update program fetches the libbpf headers from the libbpf GitHub repository and writes them to disk. | The update program fetches the libbpf headers from the libbpf GitHub repository and writes them to disk. |
Package disco contains the discovery message types. | Package disco contains the discovery message types. |
docs | |
webhookscommand Command webhooks provides example consumer code for Tailscale webhooks. | Command webhooks provides example consumer code for Tailscale webhooks. |
Package doctor contains more in-depth healthchecks that can be run to aid in diagnosing Tailscale issues. | Package doctor contains more in-depth healthchecks that can be run to aid in diagnosing Tailscale issues. |
ethtool Package ethtool provides a doctor.Check that prints diagnostic information obtained from the 'ethtool' utility on the current system. | Package ethtool provides a doctor.Check that prints diagnostic information obtained from the 'ethtool' utility on the current system. |
permissions Package permissions provides a doctor.Check that prints the process permissions for the running process. | Package permissions provides a doctor.Check that prints the process permissions for the running process. |
routetable Package routetable provides a doctor.Check that dumps the current system's route table to the log. | Package routetable provides a doctor.Check that dumps the current system's route table to the log. |
Package drive provides a filesystem that allows sharing folders between Tailscale nodes using WebDAV. | Package drive provides a filesystem that allows sharing folders between Tailscale nodes using WebDAV. |
driveimpl Package driveimpl provides an implementation of package drive. | Package driveimpl provides an implementation of package drive. |
driveimpl/compositedav Package compositedav provides an http.Handler that composes multiple WebDAV services into a single WebDAV service that presents each of them as its own folder. | Package compositedav provides an http.Handler that composes multiple WebDAV services into a single WebDAV service that presents each of them as its own folder. |
driveimpl/dirfs Package dirfs provides a webdav.FileSystem that looks like a read-only directory containing only subdirectories. | Package dirfs provides a webdav.FileSystem that looks like a read-only directory containing only subdirectories. |
driveimpl/shared Package shared contains types and functions shared by different drive packages. | Package shared contains types and functions shared by different drive packages. |
Package envknob provides access to environment-variable tweakable debug settings. | Package envknob provides access to environment-variable tweakable debug settings. |
featureknob Package featureknob provides a facility to control whether features can run based on either an envknob or running OS / distro. | Package featureknob provides a facility to control whether features can run based on either an envknob or running OS / distro. |
logknob Package logknob provides a helpful wrapper that allows enabling logging based on either an envknob or other methods of enablement. | Package logknob provides a helpful wrapper that allows enabling logging based on either an envknob or other methods of enablement. |
Package feature tracks which features are linked into the binary. | Package feature tracks which features are linked into the binary. |
ace Package ace registers support for Alternate Connectivity Endpoints (ACE). | Package ace registers support for Alternate Connectivity Endpoints (ACE). |
appconnectors Package appconnectors registers support for Tailscale App Connectors. | Package appconnectors registers support for Tailscale App Connectors. |
buildfeatures The buildfeatures package contains boolean constants indicating which features were included in the binary (via build tags), for use in dead code elimination when using separate build tag protected files is impractical or undesirable. | The buildfeatures package contains boolean constants indicating which features were included in the binary (via build tags), for use in dead code elimination when using separate build tag protected files is impractical or undesirable. |
c2n Package c2n registers support for C2N (Control-to-Node) communications. | Package c2n registers support for C2N (Control-to-Node) communications. |
capture Package capture formats packet logging into a debug pcap stream. | Package capture formats packet logging into a debug pcap stream. |
capture/dissector Package dissector contains the Lua dissector for Tailscale packets. | Package dissector contains the Lua dissector for Tailscale packets. |
clientupdate Package clientupdate enables the client update feature. | Package clientupdate enables the client update feature. |
condlite/expvar Package expvar contains type aliases for expvar types, to allow conditionally excluding the package from builds. | Package expvar contains type aliases for expvar types, to allow conditionally excluding the package from builds. |
condregister The condregister package registers all conditional features guarded by build tags. | The condregister package registers all conditional features guarded by build tags. |
condregister/identityfederation Package identityfederation registers support for authkey resolution via identity federation if it's not disabled by the ts_omit_identityfederation build tag. | Package identityfederation registers support for authkey resolution via identity federation if it's not disabled by the ts_omit_identityfederation build tag. |
condregister/oauthkey Package oauthkey registers support for OAuth key resolution if it's not disabled via the ts_omit_oauthkey build tag. | Package oauthkey registers support for OAuth key resolution if it's not disabled via the ts_omit_oauthkey build tag. |
condregister/portmapper Package portmapper registers support for portmapper if it's not disabled via the ts_omit_portmapper build tag. | Package portmapper registers support for portmapper if it's not disabled via the ts_omit_portmapper build tag. |
condregister/useproxy Package useproxy registers support for using proxies if it's not disabled via the ts_omit_useproxy build tag. | Package useproxy registers support for using proxies if it's not disabled via the ts_omit_useproxy build tag. |
debugportmapper Package debugportmapper registers support for debugging Tailscale's portmapping support. | Package debugportmapper registers support for debugging Tailscale's portmapping support. |
doctor The doctor package registers the "doctor" problem diagnosis support into the rest of Tailscale. | The doctor package registers the "doctor" problem diagnosis support into the rest of Tailscale. |
drive Package drive registers the Taildrive (file server) feature. | Package drive registers the Taildrive (file server) feature. |
featuretags The featuretags package is a registry of all the ts_omit-able build tags. | The featuretags package is a registry of all the ts_omit-able build tags. |
identityfederation Package identityfederation registers support for using ID tokens to automatically request authkeys for logging in. | Package identityfederation registers support for using ID tokens to automatically request authkeys for logging in. |
linkspeed Package linkspeed registers support for setting the TUN link speed on Linux, to better integrate with system monitoring tools. | Package linkspeed registers support for setting the TUN link speed on Linux, to better integrate with system monitoring tools. |
linuxdnsfight Package linuxdnsfight provides Linux support for detecting DNS fights (inotify watching of /etc/resolv.conf). | Package linuxdnsfight provides Linux support for detecting DNS fights (inotify watching of /etc/resolv.conf). |
oauthkey Package oauthkey registers support for using OAuth client secrets to automatically request authkeys for logging in. | Package oauthkey registers support for using OAuth client secrets to automatically request authkeys for logging in. |
portlist Package portlist contains code to poll the local system for open ports and report them to the control plane, if enabled on the tailnet. | Package portlist contains code to poll the local system for open ports and report them to the control plane, if enabled on the tailnet. |
portmapper Package portmapper registers support for NAT-PMP, PCP, and UPnP port mapping protocols to help get direction connections through NATs. | Package portmapper registers support for NAT-PMP, PCP, and UPnP port mapping protocols to help get direction connections through NATs. |
posture Package posture registers support for device posture checking, reporting machine-specific information to the control plane when enabled by the user and tailnet. | Package posture registers support for device posture checking, reporting machine-specific information to the control plane when enabled by the user and tailnet. |
relayserver Package relayserver registers the relay server feature and implements its associated ipnext.Extension. | Package relayserver registers the relay server feature and implements its associated ipnext.Extension. |
sdnotify Package sdnotify contains a minimal wrapper around systemd-notify to enable applications to signal readiness and status to systemd. | Package sdnotify contains a minimal wrapper around systemd-notify to enable applications to signal readiness and status to systemd. |
syspolicy Package syspolicy provides an interface for system-wide policy management. | Package syspolicy provides an interface for system-wide policy management. |
taildrop Package taildrop registers the taildrop (file sending) feature. | Package taildrop registers the taildrop (file sending) feature. |
tap Package tap registers Tailscale's experimental (demo) Linux TAP (Layer 2) support. | Package tap registers Tailscale's experimental (demo) Linux TAP (Layer 2) support. |
tpm Package tpm implements support for TPM 2.0 devices. | Package tpm implements support for TPM 2.0 devices. |
useproxy Package useproxy registers support for using system proxies. | Package useproxy registers support for using system proxies. |
wakeonlan Package wakeonlan registers the Wake-on-LAN feature. | Package wakeonlan registers the Wake-on-LAN feature. |
gokrazymodule | |
Package health is a registry for other packages to report & check overall health status of the node. | Package health is a registry for other packages to report & check overall health status of the node. |
healthmsg Package healthmsg contains some constants for health messages. | Package healthmsg contains some constants for health messages. |
Package hostinfo answers questions about the host environment that Tailscale is running on. | Package hostinfo answers questions about the host environment that Tailscale is running on. |
internal | |
client/tailscale Package tailscale provides a minimal control plane API client for internal use. | Package tailscale provides a minimal control plane API client for internal use. |
Package ipn implements the interactions between the Tailscale cloud control plane and the local network stack. | Package ipn implements the interactions between the Tailscale cloud control plane and the local network stack. |
auditlog Package auditlog provides a mechanism for logging audit events. | Package auditlog provides a mechanism for logging audit events. |
conffile Package conffile contains code to load, manipulate, and access config file settings. | Package conffile contains code to load, manipulate, and access config file settings. |
desktop Package desktop facilitates interaction with the desktop environment and user sessions. | Package desktop facilitates interaction with the desktop environment and user sessions. |
ipnauth Package ipnauth controls access to the LocalAPI. | Package ipnauth controls access to the LocalAPI. |
ipnext Package ipnext defines types and interfaces used for extending the core LocalBackend functionality with additional features and services. | Package ipnext defines types and interfaces used for extending the core LocalBackend functionality with additional features and services. |
ipnlocal Package ipnlocal is the heart of the Tailscale node agent that controls all the other misc pieces of the Tailscale node. | Package ipnlocal is the heart of the Tailscale node agent that controls all the other misc pieces of the Tailscale node. |
ipnserver Package ipnserver runs the LocalAPI HTTP server that communicates with the LocalBackend. | Package ipnserver runs the LocalAPI HTTP server that communicates with the LocalBackend. |
ipnstate Package ipnstate captures the entire state of the Tailscale network. | Package ipnstate captures the entire state of the Tailscale network. |
lapitest Package lapitest provides utilities for black-box testing of LocalAPI (ipnserver). | Package lapitest provides utilities for black-box testing of LocalAPI (ipnserver). |
localapi Package localapi contains the HTTP server handlers for tailscaled's API server. | Package localapi contains the HTTP server handlers for tailscaled's API server. |
policy Package policy contains various policy decisions that need to be shared between the node client & control server. | Package policy contains various policy decisions that need to be shared between the node client & control server. |
store Package store provides various implementation of ipn.StateStore. | Package store provides various implementation of ipn.StateStore. |
store/awsstore Package awsstore contains an ipn.StateStore implementation using AWS SSM. | Package awsstore contains an ipn.StateStore implementation using AWS SSM. |
store/kubestore Package kubestore contains an ipn.StateStore implementation using Kubernetes Secrets. | Package kubestore contains an ipn.StateStore implementation using Kubernetes Secrets. |
store/mem Package mem provides an in-memory ipn.StateStore implementation. | Package mem provides an in-memory ipn.StateStore implementation. |
Package jsondb provides a trivial "database": a Go object saved to disk as JSON. | Package jsondb provides a trivial "database": a Go object saved to disk as JSON. |
Package kube contains types and utilities for the Tailscale Kubernetes Operator. | Package kube contains types and utilities for the Tailscale Kubernetes Operator. |
api-proxy Package apiproxy contains the Kubernetes API Proxy implementation used by k8s-operator and k8s-proxy. | Package apiproxy contains the Kubernetes API Proxy implementation used by k8s-operator and k8s-proxy. |
apis Package apis contains a constant to name the Tailscale Kubernetes Operator's schema group. | Package apis contains a constant to name the Tailscale Kubernetes Operator's schema group. |
apis/v1alpha1 +kubebuilder:object:generate=true +groupName=tailscale.com | +kubebuilder:object:generate=true +groupName=tailscale.com |
sessionrecording Package sessionrecording contains functionality for recording Kubernetes API server proxy 'kubectl exec/attach' sessions. | Package sessionrecording contains functionality for recording Kubernetes API server proxy 'kubectl exec/attach' sessions. |
sessionrecording/fakes Package fakes contains mocks used for testing 'kubectl exec' session recording functionality. | Package fakes contains mocks used for testing 'kubectl exec' session recording functionality. |
sessionrecording/spdy Package spdy contains functionality for parsing SPDY streaming sessions. | Package spdy contains functionality for parsing SPDY streaming sessions. |
sessionrecording/tsrecorder Package tsrecorder contains functionality for connecting to a tsrecorder instance. | Package tsrecorder contains functionality for connecting to a tsrecorder instance. |
sessionrecording/ws package ws has functionality to parse 'kubectl exec/attach' sessions streamed using WebSocket protocol. | package ws has functionality to parse 'kubectl exec/attach' sessions streamed using WebSocket protocol. |
kube | |
certs Package certs implements logic to help multiple Kubernetes replicas share TLS certs for a common Tailscale Service. | Package certs implements logic to help multiple Kubernetes replicas share TLS certs for a common Tailscale Service. |
egressservices Package egressservices contains shared types for exposing tailnet services to cluster workloads. | Package egressservices contains shared types for exposing tailnet services to cluster workloads. |
health Package health contains shared types and underlying methods for serving a `/healthz` endpoint for containerboot and k8s-proxy. | Package health contains shared types and underlying methods for serving a `/healthz` endpoint for containerboot and k8s-proxy. |
ingressservices Package ingressservices contains shared types for exposing Kubernetes Services to tailnet. | Package ingressservices contains shared types for exposing Kubernetes Services to tailnet. |
k8s-proxy/conf Package conf contains code to load, manipulate, and access config file settings for k8s-proxy. | Package conf contains code to load, manipulate, and access config file settings for k8s-proxy. |
kubeapi Package kubeapi contains Kubernetes API types for internal consumption. | Package kubeapi contains Kubernetes API types for internal consumption. |
kubeclient Package kubeclient provides a client to interact with Kubernetes. | Package kubeclient provides a client to interact with Kubernetes. |
kubetypes Package kubetypes contains types and constants related to the Tailscale Kubernetes Operator. | Package kubetypes contains types and constants related to the Tailscale Kubernetes Operator. |
localclient Package localclient provides an interface for all the local.Client methods kube needs to use, so that we can easily mock it in tests. | Package localclient provides an interface for all the local.Client methods kube needs to use, so that we can easily mock it in tests. |
metrics Package metrics contains shared types and underlying methods for serving localapi metrics. | Package metrics contains shared types and underlying methods for serving localapi metrics. |
services Package services manages graceful shutdown of Tailscale Services advertised by Kubernetes clients. | Package services manages graceful shutdown of Tailscale Services advertised by Kubernetes clients. |
state Package state updates state keys for tailnet client devices managed by the operator. | Package state updates state keys for tailnet client devices managed by the operator. |
Package licenses provides utilities for working with open source licenses. | Package licenses provides utilities for working with open source licenses. |
log | |
filelogger Package filelogger provides localdisk log writing & rotation, primarily for Windows clients. | Package filelogger provides localdisk log writing & rotation, primarily for Windows clients. |
sockstatlog Package sockstatlog provides a logger for capturing network socket stats for debugging. | Package sockstatlog provides a logger for capturing network socket stats for debugging. |
Package logpolicy manages the creation or reuse of logtail loggers, caching collection instance state on disk for use on future runs of programs on the same machine. | Package logpolicy manages the creation or reuse of logtail loggers, caching collection instance state on disk for use on future runs of programs on the same machine. |
Package logtail sends logs to log.tailscale.com. | Package logtail sends logs to log.tailscale.com. |
example/logadoptcommand Command logadopt is a CLI tool to adopt a machine into a logtail collection. | Command logadopt is a CLI tool to adopt a machine into a logtail collection. |
example/logreprocesscommand The logreprocess program tails a log and reprocesses it. | The logreprocess program tails a log and reprocesses it. |
example/logtailcommand The logtail program logs stdin. | The logtail program logs stdin. |
filch Package filch is a file system queue that pilfers your stderr. | Package filch is a file system queue that pilfers your stderr. |
Package maths contains additional mathematical functions or structures not found in the standard library. | Package maths contains additional mathematical functions or structures not found in the standard library. |
Package metrics contains expvar & Prometheus types and code used by Tailscale for monitoring. | Package metrics contains expvar & Prometheus types and code used by Tailscale for monitoring. |
net | |
ace Package ace implements a Dialer that dials via a Tailscale ACE (CONNECT) proxy. | Package ace implements a Dialer that dials via a Tailscale ACE (CONNECT) proxy. |
art Package art provides a routing table that implements the Allotment Routing Table (ART) algorithm by Donald Knuth, as described in the paper by Yoichi Hariguchi. | Package art provides a routing table that implements the Allotment Routing Table (ART) algorithm by Donald Knuth, as described in the paper by Yoichi Hariguchi. |
bakedroots Package bakedroots contains WebPKI CA roots we bake into the tailscaled binary, lest the system's CA roots be missing them (or entirely empty). | Package bakedroots contains WebPKI CA roots we bake into the tailscaled binary, lest the system's CA roots be missing them (or entirely empty). |
batching Package batching implements a socket optimized for increased throughput. | Package batching implements a socket optimized for increased throughput. |
captivedetection Package captivedetection provides a way to detect if the system is connected to a network that has a captive portal. | Package captivedetection provides a way to detect if the system is connected to a network that has a captive portal. |
connectproxy Package connectproxy contains some CONNECT proxy code. | Package connectproxy contains some CONNECT proxy code. |
dns Package dns contains code to configure and manage DNS settings. | Package dns contains code to configure and manage DNS settings. |
dns/publicdns Package publicdns contains mapping and helpers for working with public DNS providers. | Package publicdns contains mapping and helpers for working with public DNS providers. |
dns/resolvconffile Package resolvconffile parses & serializes /etc/resolv.conf-style files. | Package resolvconffile parses & serializes /etc/resolv.conf-style files. |
dns/resolver Package resolver implements a stub DNS resolver that can also serve records out of an internal local zone. | Package resolver implements a stub DNS resolver that can also serve records out of an internal local zone. |
dnscache Package dnscache contains a minimal DNS cache that makes a bunch of assumptions that are only valid for us. | Package dnscache contains a minimal DNS cache that makes a bunch of assumptions that are only valid for us. |
dnsfallback Package dnsfallback contains a DNS fallback mechanism for starting up Tailscale when the system DNS is broken or otherwise unavailable. | Package dnsfallback contains a DNS fallback mechanism for starting up Tailscale when the system DNS is broken or otherwise unavailable. |
flowtrack Package flowtrack contains types for tracking TCP/UDP flows by 4-tuples. | Package flowtrack contains types for tracking TCP/UDP flows by 4-tuples. |
ipset Package ipset provides code for creating efficient IP-in-set lookup functions with different implementations depending on the set. | Package ipset provides code for creating efficient IP-in-set lookup functions with different implementations depending on the set. |
ktimeout Package ktimeout configures kernel TCP stack timeouts via the provided control functions. | Package ktimeout configures kernel TCP stack timeouts via the provided control functions. |
memnet Package memnet implements an in-memory network implementation. | Package memnet implements an in-memory network implementation. |
netaddr Package netaddr is a transitional package while we finish migrating from inet.af/netaddr to Go 1.18's net/netip. | Package netaddr is a transitional package while we finish migrating from inet.af/netaddr to Go 1.18's net/netip. |
netcheck Package netcheck checks the network conditions from the current host. | Package netcheck checks the network conditions from the current host. |
neterror Package neterror classifies network errors. | Package neterror classifies network errors. |
netkernelconf Package netkernelconf contains code for checking kernel netdev config. | Package netkernelconf contains code for checking kernel netdev config. |
netknob Package netknob has Tailscale network knobs. | Package netknob has Tailscale network knobs. |
netmon Package monitor provides facilities for monitoring network interface and route changes. | Package monitor provides facilities for monitoring network interface and route changes. |
netns Package netns contains the common code for using the Go net package in a logical "network namespace" to avoid routing loops where Tailscale-created packets would otherwise loop back through Tailscale routes. | Package netns contains the common code for using the Go net package in a logical "network namespace" to avoid routing loops where Tailscale-created packets would otherwise loop back through Tailscale routes. |
netstat Package netstat returns the local machine's network connection table. | Package netstat returns the local machine's network connection table. |
netutil Package netutil contains misc shared networking code & types. | Package netutil contains misc shared networking code & types. |
netx Package netx contains types to describe and abstract over how dialing and listening are performed. | Package netx contains types to describe and abstract over how dialing and listening are performed. |
packet Package packet contains packet parsing and marshaling utilities. | Package packet contains packet parsing and marshaling utilities. |
packet/checksum Package checksum provides functions for updating checksums in parsed packets. | Package checksum provides functions for updating checksums in parsed packets. |
ping Package ping allows sending ICMP echo requests to a host in order to determine network latency. | Package ping allows sending ICMP echo requests to a host in order to determine network latency. |
portmapper Package portmapper is a UDP port mapping client. | Package portmapper is a UDP port mapping client. |
portmapper/portmappertype Package portmappertype defines the net/portmapper interface, which may or may not be linked into the binary. | Package portmappertype defines the net/portmapper interface, which may or may not be linked into the binary. |
proxymux Package proxymux splits a net.Listener in two, routing SOCKS5 connections to one and HTTP requests to the other. | Package proxymux splits a net.Listener in two, routing SOCKS5 connections to one and HTTP requests to the other. |
routetable Package routetable provides functions that operate on the system's route table. | Package routetable provides functions that operate on the system's route table. |
sockopts Package sockopts contains logic for applying socket options. | Package sockopts contains logic for applying socket options. |
socks5 Package socks5 is a SOCKS5 server implementation. | Package socks5 is a SOCKS5 server implementation. |
sockstats Package sockstats collects statistics about network sockets used by the Tailscale client. | Package sockstats collects statistics about network sockets used by the Tailscale client. |
speedtest Package speedtest contains both server and client code for running speedtests between tailscale nodes. | Package speedtest contains both server and client code for running speedtests between tailscale nodes. |
stun Package STUN generates STUN request packets and parses response packets. | Package STUN generates STUN request packets and parses response packets. |
stun/stuntest Package stuntest provides a STUN test server. | Package stuntest provides a STUN test server. |
stunserver Package stunserver implements a STUN server. | Package stunserver implements a STUN server. |
tcpinfo Package tcpinfo provides platform-agnostic accessors to information about a TCP connection (e.g. | Package tcpinfo provides platform-agnostic accessors to information about a TCP connection (e.g. |
tlsdial Package tlsdial generates tls.Config values and does x509 validation of certs. | Package tlsdial generates tls.Config values and does x509 validation of certs. |
tlsdial/blockblame Package blockblame blames specific firewall manufacturers for blocking Tailscale, by analyzing the SSL certificate presented when attempting to connect to a remote server. | Package blockblame blames specific firewall manufacturers for blocking Tailscale, by analyzing the SSL certificate presented when attempting to connect to a remote server. |
tsaddr Package tsaddr handles Tailscale-specific IPs and ranges. | Package tsaddr handles Tailscale-specific IPs and ranges. |
tsdial Package tsdial provides a Dialer type that can dial out of tailscaled. | Package tsdial provides a Dialer type that can dial out of tailscaled. |
tshttpproxy Package tshttpproxy contains Tailscale additions to httpproxy not available in golang.org/x/net/http/httpproxy. | Package tshttpproxy contains Tailscale additions to httpproxy not available in golang.org/x/net/http/httpproxy. |
tstun Package tun creates a tuntap device, working around OS-specific quirks if necessary. | Package tun creates a tuntap device, working around OS-specific quirks if necessary. |
udprelay Package udprelay contains constructs for relaying Disco and WireGuard packets between Tailscale clients over UDP. | Package udprelay contains constructs for relaying Disco and WireGuard packets between Tailscale clients over UDP. |
udprelay/endpoint Package endpoint contains types relating to UDP relay server endpoints. | Package endpoint contains types relating to UDP relay server endpoints. |
udprelay/status Package status contains types relating to the status of peer relay sessions between peer relay client nodes via a peer relay server. | Package status contains types relating to the status of peer relay sessions between peer relay client nodes via a peer relay server. |
wsconn Package wsconn contains an adapter type that turns a websocket connection into a net.Conn. | Package wsconn contains an adapter type that turns a websocket connection into a net.Conn. |
Package omit provides consts to access Tailscale ts_omit_FOO build tags. | Package omit provides consts to access Tailscale ts_omit_FOO build tags. |
packages | |
deb Package deb extracts metadata from Debian packages. | Package deb extracts metadata from Debian packages. |
Package paths returns platform and user-specific default paths to Tailscale files and directories. | Package paths returns platform and user-specific default paths to Tailscale files and directories. |
The portlist package contains code that checks what ports are open and listening on the current machine. | The portlist package contains code that checks what ports are open and listening on the current machine. |
Package posture contains functions to query the local system state for managed posture checks. | Package posture contains functions to query the local system state for managed posture checks. |
Package prober implements a simple blackbox prober. | Package prober implements a simple blackbox prober. |
Package proxymap contains a mapping table for ephemeral localhost ports used by tailscaled on behalf of remote Tailscale IPs for proxied connections. | Package proxymap contains a mapping table for ephemeral localhost ports used by tailscaled on behalf of remote Tailscale IPs for proxied connections. |
Package release provides functionality for building client releases. | Package release provides functionality for building client releases. |
dist Package dist is a release artifact builder library. | Package dist is a release artifact builder library. |
dist/cli Package cli provides the skeleton of a CLI for building release packages. | Package cli provides the skeleton of a CLI for building release packages. |
dist/qnap Package qnap contains dist Targets for building QNAP Tailscale packages. | Package qnap contains dist Targets for building QNAP Tailscale packages. |
dist/synology Package synology contains dist Targets for building Synology Tailscale packages. | Package synology contains dist Targets for building Synology Tailscale packages. |
dist/unixpkgs Package unixpkgs contains dist Targets for building unix Tailscale packages. | Package unixpkgs contains dist Targets for building unix Tailscale packages. |
Package safesocket creates either a Unix socket, if possible, or otherwise a localhost TCP connection. | Package safesocket creates either a Unix socket, if possible, or otherwise a localhost TCP connection. |
Package safeweb provides a wrapper around an http.Server that applies basic web application security defenses by default. | Package safeweb provides a wrapper around an http.Server that applies basic web application security defenses by default. |
Package sessionrecording contains session recording utils shared amongst Tailscale SSH and Kubernetes API server proxy session recording. | Package sessionrecording contains session recording utils shared amongst Tailscale SSH and Kubernetes API server proxy session recording. |
ssh | |
tailssh Package tailssh is an SSH server integrated into Tailscale. | Package tailssh is an SSH server integrated into Tailscale. |
Package syncs contains additional sync types and functionality. | Package syncs contains additional sync types and functionality. |
Package tailcfg contains types used by the Tailscale protocol with between the node and the coordination server. | Package tailcfg contains types used by the Tailscale protocol with between the node and the coordination server. |
tempfork | |
acme Package acme provides an implementation of the Automatic Certificate Management Environment (ACME) spec, most famously used by Let's Encrypt. | Package acme provides an implementation of the Automatic Certificate Management Environment (ACME) spec, most famously used by Let's Encrypt. |
gliderlabs/ssh Package ssh wraps the crypto/ssh package with a higher-level API for building SSH servers. | Package ssh wraps the crypto/ssh package with a higher-level API for building SSH servers. |
heap Package heap provides heap operations for any type that implements heap.Interface. | Package heap provides heap operations for any type that implements heap.Interface. |
httprec Package httprec is a copy of the Go standard library's httptest.ResponseRecorder type, which we want to use in non-test code without pulling in the rest of the httptest package and its test certs, etc. | Package httprec is a copy of the Go standard library's httptest.ResponseRecorder type, which we want to use in non-test code without pulling in the rest of the httptest package and its test certs, etc. |
spf13/cobra Package cobra contains shell scripts and constants copied from https://github.com/spf13/cobra for use in our own shell tab-completion logic. | Package cobra contains shell scripts and constants copied from https://github.com/spf13/cobra for use in our own shell tab-completion logic. |
sshtest/ssh Package ssh implements an SSH client and server. | Package ssh implements an SSH client and server. |
Package tka implements the Tailnet Key Authority (TKA) for Tailnet Lock. | Package tka implements the Tailnet Key Authority (TKA) for Tailnet Lock. |
tool | |
gocrosscommand gocross is a wrapper around the `go` tool that invokes `go` from Tailscale's custom toolchain, with the right build parameters injected based on the native+target GOOS/GOARCH. | gocross is a wrapper around the `go` tool that invokes `go` from Tailscale's custom toolchain, with the right build parameters injected based on the native+target GOOS/GOARCH. |
listpkgscommand listpkgs prints the import paths that match the Go package patterns given on the command line and conditionally filters them in various ways. | listpkgs prints the import paths that match the Go package patterns given on the command line and conditionally filters them in various ways. |
Package tsconsensus implements a consensus algorithm for a group of tsnet.Servers | Package tsconsensus implements a consensus algorithm for a group of tsnet.Servers |
Package tsconst exports some constants used elsewhere in the codebase. | Package tsconst exports some constants used elsewhere in the codebase. |
Package tsd (short for "Tailscale Daemon") contains a System type that containing all the subsystems a Tailscale node (tailscaled or platform equivalent) uses. | Package tsd (short for "Tailscale Daemon") contains a System type that containing all the subsystems a Tailscale node (tailscaled or platform equivalent) uses. |
Package tsnet provides Tailscale as a library. | Package tsnet provides Tailscale as a library. |
example/tshellocommand The tshello server demonstrates how to use Tailscale as a library. | The tshello server demonstrates how to use Tailscale as a library. |
example/tsnet-funnelcommand The tsnet-funnel server demonstrates how to use tsnet with Funnel. | The tsnet-funnel server demonstrates how to use tsnet with Funnel. |
example/tsnet-http-clientcommand The tshello server demonstrates how to use Tailscale as a library. | The tshello server demonstrates how to use Tailscale as a library. |
example/web-clientcommand The web-client command demonstrates serving the Tailscale web client over tsnet. | The web-client command demonstrates serving the Tailscale web client over tsnet. |
Package tstest provides utilities for use in unit tests. | Package tstest provides utilities for use in unit tests. |
chonktest Package chonktest contains a shared set of tests for the Chonk interface used to store AUM messages in Tailnet Lock, which we can share between different implementations. | Package chonktest contains a shared set of tests for the Chonk interface used to store AUM messages in Tailnet Lock, which we can share between different implementations. |
deptest The deptest package contains a shared implementation of negative dependency tests for other packages, making sure we don't start depending on certain packages. | The deptest package contains a shared implementation of negative dependency tests for other packages, making sure we don't start depending on certain packages. |
integration Package integration contains Tailscale integration tests. | Package integration contains Tailscale integration tests. |
integration/testcontrol Package testcontrol contains a minimal control plane server for testing purposes. | Package testcontrol contains a minimal control plane server for testing purposes. |
integration/vms Package vms does VM-based integration/functional tests by using qemu and a bank of pre-made VM images. | Package vms does VM-based integration/functional tests by using qemu and a bank of pre-made VM images. |
iosdeps Package iosdeps is a just a list of the packages we import on iOS, to let us test that our transitive closure of dependencies on iOS doesn't accidentally grow too large, as we've historically been memory constrained there. | Package iosdeps is a just a list of the packages we import on iOS, to let us test that our transitive closure of dependencies on iOS doesn't accidentally grow too large, as we've historically been memory constrained there. |
jsdeps Package jsdeps is a just a list of the packages we import in the JavaScript/WASM build, to let us test that our transitive closure of dependencies doesn't accidentally grow too large, since binary size is more of a concern. | Package jsdeps is a just a list of the packages we import in the JavaScript/WASM build, to let us test that our transitive closure of dependencies doesn't accidentally grow too large, since binary size is more of a concern. |
mtscommand The mts ("Multiple Tailscale") command runs multiple tailscaled instances for development, managing their directories and sockets, and lets you easily direct tailscale CLI commands to them. | The mts ("Multiple Tailscale") command runs multiple tailscaled instances for development, managing their directories and sockets, and lets you easily direct tailscale CLI commands to them. |
natlab Package natlab lets us simulate different types of networks all in-memory without running VMs or requiring root, etc. | Package natlab lets us simulate different types of networks all in-memory without running VMs or requiring root, etc. |
natlab/vnet Package vnet simulates a virtual Internet containing a set of networks with various NAT behaviors. | Package vnet simulates a virtual Internet containing a set of networks with various NAT behaviors. |
nettest Package nettest contains additional test helpers related to network state that can't go into tstest for circular dependency reasons. | Package nettest contains additional test helpers related to network state that can't go into tstest for circular dependency reasons. |
tkatest tkatest has functions for creating a mock control server that responds to TKA endpoints. | tkatest has functions for creating a mock control server that responds to TKA endpoints. |
tlstest Package tlstest contains code to help test Tailscale's TLS support without depending on real WebPKI roots or certificates during tests. | Package tlstest contains code to help test Tailscale's TLS support without depending on real WebPKI roots or certificates during tests. |
typewalk Package typewalk provides utilities to walk Go types using reflection. | Package typewalk provides utilities to walk Go types using reflection. |
Package tstime defines Tailscale-specific time utilities. | Package tstime defines Tailscale-specific time utilities. |
mono Package mono provides fast monotonic time. | Package mono provides fast monotonic time. |
rate Package rate provides a rate limiter. | Package rate provides a rate limiter. |
Package tsweb contains code used in various Tailscale webservers. | Package tsweb contains code used in various Tailscale webservers. |
promvarz Package promvarz combines Prometheus metrics exported by our expvar converter (tsweb/varz) with metrics exported by the official Prometheus client. | Package promvarz combines Prometheus metrics exported by our expvar converter (tsweb/varz) with metrics exported by the official Prometheus client. |
varz Package varz contains code to export metrics in Prometheus format. | Package varz contains code to export metrics in Prometheus format. |
types | |
appctype Package appcfg contains an experimental configuration structure for "tailscale.com/app-connectors" capmap extensions. | Package appcfg contains an experimental configuration structure for "tailscale.com/app-connectors" capmap extensions. |
bools Package bools contains the Int, Compare, and IfElse functions. | Package bools contains the Int, Compare, and IfElse functions. |
dnstype Package dnstype defines types for working with DNS. | Package dnstype defines types for working with DNS. |
empty Package empty defines an empty struct type. | Package empty defines an empty struct type. |
flagtype Package flagtype defines flag.Value types. | Package flagtype defines flag.Value types. |
geo Package geo provides functionality to represent and process geographical locations on a spherical Earth. | Package geo provides functionality to represent and process geographical locations on a spherical Earth. |
iox Package iox provides types to implement io functionality. | Package iox provides types to implement io functionality. |
ipproto Package ipproto contains IP Protocol constants. | Package ipproto contains IP Protocol constants. |
jsonx Package jsonx contains helper types and functionality to use with github.com/go-json-experiment/json, which is positioned to be merged into the Go standard library as encoding/json/v2. | Package jsonx contains helper types and functionality to use with github.com/go-json-experiment/json, which is positioned to be merged into the Go standard library as encoding/json/v2. |
key Package key contains types for different types of public and private keys used by Tailscale. | Package key contains types for different types of public and private keys used by Tailscale. |
lazy Package lazy provides types for lazily initialized values. | Package lazy provides types for lazily initialized values. |
logger Package logger defines a type for writing to logs. | Package logger defines a type for writing to logs. |
logid Package logid contains ID types for interacting with the log service. | Package logid contains ID types for interacting with the log service. |
mapx Package mapx contains extra map types and functions. | Package mapx contains extra map types and functions. |
netlogfunc Package netlogfunc defines types for network logging. | Package netlogfunc defines types for network logging. |
netlogtype Package netlogtype defines types for network logging. | Package netlogtype defines types for network logging. |
netmap Package netmap contains the netmap.NetworkMap type. | Package netmap contains the netmap.NetworkMap type. |
nettype Package nettype defines an interface that doesn't exist in the Go net package. | Package nettype defines an interface that doesn't exist in the Go net package. |
opt Package opt defines optional types. | Package opt defines optional types. |
persist Package persist contains the Persist type. | Package persist contains the Persist type. |
prefs Package prefs contains types and functions to work with arbitrary preference hierarchies. | Package prefs contains types and functions to work with arbitrary preference hierarchies. |
prefs/prefs_example Package prefs_example contains a Prefs type, which is like tailscale.com/ipn.Prefs, but uses the prefs package to enhance individual preferences with state and metadata. | Package prefs_example contains a Prefs type, which is like tailscale.com/ipn.Prefs, but uses the prefs package to enhance individual preferences with state and metadata. |
preftype Package preftype is a leaf package containing types for various preferences. | Package preftype is a leaf package containing types for various preferences. |
ptr Package ptr contains the ptr.To function. | Package ptr contains the ptr.To function. |
result Package result contains the Of result type, which is either a value or an error. | Package result contains the Of result type, which is either a value or an error. |
structs Package structs contains the Incomparable type. | Package structs contains the Incomparable type. |
tkatype Package tkatype defines types for working with the tka package. | Package tkatype defines types for working with the tka package. |
views Package views provides read-only accessors for commonly used value types. | Package views provides read-only accessors for commonly used value types. |
util | |
backoff Package backoff provides a back-off timer type. | Package backoff provides a back-off timer type. |
checkchange Package checkchange defines a utility for determining whether a value has changed since the last time it was checked. | Package checkchange defines a utility for determining whether a value has changed since the last time it was checked. |
cibuild Package cibuild reports runtime CI information. | Package cibuild reports runtime CI information. |
clientmetric Package clientmetric provides client-side metrics whose values get occasionally logged. | Package clientmetric provides client-side metrics whose values get occasionally logged. |
cloudenv Package cloudenv reports which known cloud environment we're running in. | Package cloudenv reports which known cloud environment we're running in. |
cmpver Package cmpver implements a variant of debian version number comparison. | Package cmpver implements a variant of debian version number comparison. |
codegen Package codegen contains shared utilities for generating code. | Package codegen contains shared utilities for generating code. |
cstruct Package cstruct provides a helper for decoding binary data that is in the form of a padded C structure. | Package cstruct provides a helper for decoding binary data that is in the form of a padded C structure. |
ctxkey ctxkey provides type-safe key-value pairs for use with context.Context. | ctxkey provides type-safe key-value pairs for use with context.Context. |
deephash Package deephash hashes a Go value recursively, in a predictable order, without looping. | Package deephash hashes a Go value recursively, in a predictable order, without looping. |
deephash/testtype Package testtype contains types for testing deephash. | Package testtype contains types for testing deephash. |
dirwalk Package dirwalk contains code to walk a directory. | Package dirwalk contains code to walk a directory. |
dnsname Package dnsname contains string functions for working with DNS names. | Package dnsname contains string functions for working with DNS names. |
eventbus Package eventbus provides an in-process event bus. | Package eventbus provides an in-process event bus. |
eventbus/debug-democommand debug-demo is a program that serves a bus's debug interface over HTTP, then generates some fake traffic from a handful of clients. | debug-demo is a program that serves a bus's debug interface over HTTP, then generates some fake traffic from a handful of clients. |
eventbus/eventbustest Package eventbustest provides helper methods for testing an eventbus.Bus. | Package eventbustest provides helper methods for testing an eventbus.Bus. |
execqueue Package execqueue implements an ordered asynchronous queue for executing functions. | Package execqueue implements an ordered asynchronous queue for executing functions. |
expvarx Package expvarx provides some extensions to the expvar package. | Package expvarx provides some extensions to the expvar package. |
goroutines The goroutines package contains utilities for tracking and getting active goroutines. | The goroutines package contains utilities for tracking and getting active goroutines. |
groupmember Package groupmember verifies group membership of the provided user on the local system. | Package groupmember verifies group membership of the provided user on the local system. |
hashx Package hashx provides a concrete implementation of hash.Hash that operates on a particular block size. | Package hashx provides a concrete implementation of hash.Hash that operates on a particular block size. |
httphdr Package httphdr implements functionality for parsing and formatting standard HTTP headers. | Package httphdr implements functionality for parsing and formatting standard HTTP headers. |
httpm Package httpm has shorter names for HTTP method constants. | Package httpm has shorter names for HTTP method constants. |
limiter Package limiter provides a keyed token bucket rate limiter. | Package limiter provides a keyed token bucket rate limiter. |
lineiter Package lineiter iterates over lines in things. | Package lineiter iterates over lines in things. |
lineread Package lineread reads lines from files. | Package lineread reads lines from files. |
linuxfw Package linuxfw returns the kind of firewall being used by the kernel. | Package linuxfw returns the kind of firewall being used by the kernel. |
linuxfw/linuxfwtest Package linuxfwtest contains tests for the linuxfw package. | Package linuxfwtest contains tests for the linuxfw package. |
lru Package lru contains a typed Least-Recently-Used cache. | Package lru contains a typed Least-Recently-Used cache. |
mak Package mak helps make maps. | Package mak helps make maps. |
multierr Package multierr provides a simple multiple-error type. | Package multierr provides a simple multiple-error type. |
must Package must assists in calling functions that must succeed. | Package must assists in calling functions that must succeed. |
nocasemaps nocasemaps provides efficient functions to set and get entries in Go maps keyed by a string, where the string is always lower-case. | nocasemaps provides efficient functions to set and get entries in Go maps keyed by a string, where the string is always lower-case. |
osdiag Package osdiag provides loggers for OS-specific diagnostic information. | Package osdiag provides loggers for OS-specific diagnostic information. |
osdiag/internal/wsc Package wsc provides access to the Windows Security Center API. | Package wsc provides access to the Windows Security Center API. |
osuser Package osuser implements OS user lookup. | Package osuser implements OS user lookup. |
pidowner Package pidowner handles lookups from process ID to its owning user. | Package pidowner handles lookups from process ID to its owning user. |
pool Package pool contains a generic type for managing a pool of resources; for example, connections to a database, or to a remote service. | Package pool contains a generic type for managing a pool of resources; for example, connections to a database, or to a remote service. |
precompress Package precompress provides build- and serving-time support for precompressed static resources, to avoid the cost of repeatedly compressing unchanging resources. | Package precompress provides build- and serving-time support for precompressed static resources, to avoid the cost of repeatedly compressing unchanging resources. |
progresstracking Package progresstracking provides wrappers around io.Reader and io.Writer that track progress. | Package progresstracking provides wrappers around io.Reader and io.Writer that track progress. |
prompt Package prompt provides a simple way to prompt the user for input. | Package prompt provides a simple way to prompt the user for input. |
quarantine Package quarantine sets platform specific "quarantine" attributes on files that are received from other hosts. | Package quarantine sets platform specific "quarantine" attributes on files that are received from other hosts. |
race Package race contains a helper to "race" two functions, returning the first successful result. | Package race contains a helper to "race" two functions, returning the first successful result. |
racebuild Package racebuild exports a constant about whether the current binary was built with the race detector. | Package racebuild exports a constant about whether the current binary was built with the race detector. |
rands Package rands contains utility functions for randomness. | Package rands contains utility functions for randomness. |
reload Package reload contains functions that allow periodically reloading a value (e.g. | Package reload contains functions that allow periodically reloading a value (e.g. |
ringlog Package ringlog contains a limited-size concurrency-safe generic ring log. | Package ringlog contains a limited-size concurrency-safe generic ring log. |
safediff Package safediff computes the difference between two lists. | Package safediff computes the difference between two lists. |
set Package set contains set types. | Package set contains set types. |
singleflight Package singleflight provides a duplicate function call suppression mechanism. | Package singleflight provides a duplicate function call suppression mechanism. |
slicesx Package slicesx contains some helpful generic slice functions. | Package slicesx contains some helpful generic slice functions. |
stringsx Package stringsx provides additional string manipulation functions that aren't in the standard library's strings package or go4.org/mem. | Package stringsx provides additional string manipulation functions that aren't in the standard library's strings package or go4.org/mem. |
syspolicy Package syspolicy contains the implementation of system policy management. | Package syspolicy contains the implementation of system policy management. |
syspolicy/internal Package internal contains miscellaneous functions and types that are internal to the syspolicy packages. | Package internal contains miscellaneous functions and types that are internal to the syspolicy packages. |
syspolicy/internal/loggerx Package loggerx provides logging functions to the rest of the syspolicy packages. | Package loggerx provides logging functions to the rest of the syspolicy packages. |
syspolicy/internal/metrics Package metrics provides logging and reporting for policy settings and scopes. | Package metrics provides logging and reporting for policy settings and scopes. |
syspolicy/pkey Package pkey defines the keys used to store system policies in the registry. | Package pkey defines the keys used to store system policies in the registry. |
syspolicy/policyclient Package policyclient contains the minimal syspolicy interface as needed by client code using syspolicy. | Package policyclient contains the minimal syspolicy interface as needed by client code using syspolicy. |
syspolicy/policytest Package policytest contains test helpers for the syspolicy packages. | Package policytest contains test helpers for the syspolicy packages. |
syspolicy/ptype Package ptype contains types used by syspolicy. | Package ptype contains types used by syspolicy. |
syspolicy/rsop Package rsop facilitates source.Store registration via RegisterStore and provides access to the effective policy merged from all registered sources via PolicyFor. | Package rsop facilitates source.Store registration via RegisterStore and provides access to the effective policy merged from all registered sources via PolicyFor. |
syspolicy/setting Package setting contains types for defining and representing policy settings. | Package setting contains types for defining and representing policy settings. |
syspolicy/source Package source defines interfaces for policy stores, facilitates the creation of policy sources, and provides functionality for reading policy settings from these sources. | Package source defines interfaces for policy stores, facilitates the creation of policy sources, and provides functionality for reading policy settings from these sources. |
sysresources Package sysresources provides OS-independent methods of determining the resources available to the current system. | Package sysresources provides OS-independent methods of determining the resources available to the current system. |
testenv Package testenv provides utility functions for tests. | Package testenv provides utility functions for tests. |
topk Package topk defines a count-min sketch and a cheap probabilistic top-K data structure that uses the count-min sketch to track the top K items in constant memory and O(log(k)) time. | Package topk defines a count-min sketch and a cheap probabilistic top-K data structure that uses the count-min sketch to track the top K items in constant memory and O(log(k)) time. |
truncate Package truncate provides a utility function for safely truncating UTF-8 strings to a fixed length, respecting multi-byte codepoints. | Package truncate provides a utility function for safely truncating UTF-8 strings to a fixed length, respecting multi-byte codepoints. |
usermetric Package usermetric provides a container and handler for user-facing metrics. | Package usermetric provides a container and handler for user-facing metrics. |
vizerror Package vizerror provides types and utility funcs for handling visible errors that are safe to display to end users. | Package vizerror provides types and utility funcs for handling visible errors that are safe to display to end users. |
winutil Package winutil contains misc Windows/Win32 helper functions. | Package winutil contains misc Windows/Win32 helper functions. |
winutil/conpty Package conpty implements support for Windows pseudo-consoles. | Package conpty implements support for Windows pseudo-consoles. |
winutil/policy Package policy contains higher-level abstractions for accessing Windows enterprise policies. | Package policy contains higher-level abstractions for accessing Windows enterprise policies. |
zstdframe Package zstdframe provides functionality for encoding and decoding independently compressed zstandard frames. | Package zstdframe provides functionality for encoding and decoding independently compressed zstandard frames. |
Package version provides the version that the binary was built at. | Package version provides the version that the binary was built at. |
distro Package distro reports which distro we're running on. | Package distro reports which distro we're running on. |
mkversion Package mkversion gets version info from git and provides a bunch of differently formatted version strings that get used elsewhere in the build system to embed version numbers into binaries. | Package mkversion gets version info from git and provides a bunch of differently formatted version strings that get used elsewhere in the build system to embed version numbers into binaries. |
Package wf controls the Windows Filtering Platform to change Windows firewall rules. | Package wf controls the Windows Filtering Platform to change Windows firewall rules. |
Package wgengine provides the Tailscale WireGuard engine interface. | Package wgengine provides the Tailscale WireGuard engine interface. |
benchcommand Create two wgengine instances and pass data through them, measuring throughput, latency, and packet loss. | Create two wgengine instances and pass data through them, measuring throughput, latency, and packet loss. |
filter Package filter is a stateful packet filter. | Package filter is a stateful packet filter. |
filter/filtertype Package filtertype defines the types used by wgengine/filter. | Package filtertype defines the types used by wgengine/filter. |
magicsock Package magicsock implements a socket that can change its communication path while in use, actively searching for the best way to communicate. | Package magicsock implements a socket that can change its communication path while in use, actively searching for the best way to communicate. |
netlog Package netlog provides a logger that monitors a TUN device and periodically records any traffic into a log stream. | Package netlog provides a logger that monitors a TUN device and periodically records any traffic into a log stream. |
netstack Package netstack wires up gVisor's netstack into Tailscale. | Package netstack wires up gVisor's netstack into Tailscale. |
netstack/gro Package gro implements GRO for the receive (write) path into gVisor. | Package gro implements GRO for the receive (write) path into gVisor. |
router Package router presents an interface to manipulate the host network stack's state. | Package router presents an interface to manipulate the host network stack's state. |
router/osrouter Package osrouter contains OS-specific router implementations. | Package osrouter contains OS-specific router implementations. |
wgcfg Package wgcfg has types and a parser for representing WireGuard config. | Package wgcfg has types and a parser for representing WireGuard config. |
wgcfg/nmcfg Package nmcfg converts a controlclient.NetMap into a wgcfg config. | Package nmcfg converts a controlclient.NetMap into a wgcfg config. |
wgint Package wgint provides somewhat shady access to wireguard-go internals that don't (yet) have public APIs. | Package wgint provides somewhat shady access to wireguard-go internals that don't (yet) have public APIs. |
wglog Package wglog contains logging helpers for wireguard-go. | Package wglog contains logging helpers for wireguard-go. |
winnet Package winnet contains Windows-specific networking code. | Package winnet contains Windows-specific networking code. |
Package words contains accessors for some nice words. | Package words contains accessors for some nice words. |