1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[48955],{53882:function(e,t,a){"use strict";a.d(t,{Tt:function(){return n},cS:function(){return r},JO:function(){return p},sz:function(){return m},kc:function(){return g},h4:function(){return o},ag:function(){return h},aN:function(){return f}});var s=a(85893),i=a(67294),l=a(90512);let n=i.memo(({className:e,isExpanded:t,hidden:a})=>(0,s.jsx)("svg",{className:(0,l.Z)("icon inline-block !h-[0.9em] !w-[0.9em] stroke-gray-500",{invisible:a},e),viewBox:"0 0 24 24",children:(0,s.jsx)("polyline",{points:t?"6 9 12 15 18 9":"9 18 15 12 9 6"})}));n.displayName="icon.Chevron";let r=()=>(0,s.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"18px",height:"18px",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,s.jsx)("polygon",{points:"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2"}),(0,s.jsx)("line",{x1:"15",y1:"9",x2:"9",y2:"15"}),(0,s.jsx)("line",{x1:"9",y1:"9",x2:"15",y2:"15"})]});r.displayName="icon.DangerIcon";let o=()=>(0,s.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"18px",height:"18px",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,s.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,s.jsx)("polyline",{points:"12 6 12 12 16 14"})]});o.displayName="icon.PlannedDeprecationIcon";var d=a(25675),c=a.n(d);let u={update:{alt:"update",fileName:"fa-arrow-up"},ellipsis:{alt:"ellipsis icon",fileName:"fa-ellipsis-h"}},p=i.memo(({name:e})=>(0,s.jsx)(c(),{className:"fa-icon !text-gray-400",alt:u[e].alt,src:`/files/images/icons/${u[e].fileName}.svg`,height:24,width:24}));p.displayName="icon.Icon";let m=()=>(0,s.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"18px",height:"18px",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,s.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,s.jsx)("line",{x1:"12",y1:"16",x2:"12",y2:"12"}),(0,s.jsx)("line",{x1:"12",y1:"8",x2:"12.01",y2:"8"})]});m.displayName="icon.InfoIcon";let g=()=>(0,s.jsx)("span",{"aria-hidden":!0,className:"inline-block opacity-0 transition-opacity duration-150 group-hover:opacity-100",children:(0,s.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"feather feather-link-2",children:[(0,s.jsx)("path",{d:"M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3"}),(0,s.jsx)("line",{x1:"8",y1:"12",x2:"16",y2:"12"})]})});g.displayName="icon.PermalinkIcon";let h=()=>(0,s.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"18px",height:"18px",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,s.jsx)("path",{d:"M22 11.08V12a10 10 0 1 1-5.93-9.14"}),(0,s.jsx)("polyline",{points:"22 4 12 14.01 9 11.01"})]});h.displayName="icon.TipIcon";let f=()=>(0,s.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"18px",height:"18px",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,s.jsx)("path",{d:"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"}),(0,s.jsx)("line",{x1:"12",y1:"9",x2:"12",y2:"13"}),(0,s.jsx)("line",{x1:"12",y1:"17",x2:"12.01",y2:"17"})]});f.displayName="icon.WarningIcon"},3714:function(e,t,a){"use strict";var s=a(85893),i=a(67294),l=a(90512);let n=i.memo(({id:e,href:t,title:a,description:i,highlighted:n=!1})=>(0,s.jsxs)("a",{href:t,"data-result-id":e,className:(0,l.Z)("not-prose group relative flex rounded-md p-2 text-base transition-all",n?"bg-blue-200 hover:bg-blue-200":"hover:bg-blue-100"),children:[(0,s.jsx)("svg",{className:"icon relative -top-px mr-2 inline-block h-auto stroke-blue-500 group-hover:stroke-blue-700",style:{flex:"0 0 1.35rem"},children:(0,s.jsx)("use",{href:"/files/images/marketing/icons.svg#file-text"})}),(0,s.jsxs)("div",{children:[(0,s.jsx)("h4",{className:"stretched-link m-0 !text-base !font-medium !text-blue-500 underline decoration-blue-50 underline-offset-4 transition-colors hover:decoration-blue-500 focus-visible:no-underline group-hover:!text-blue-700",dangerouslySetInnerHTML:{__html:a}}),(0,s.jsx)("p",{className:"!text-base text-gray-600 group-hover:text-gray-700",dangerouslySetInnerHTML:{__html:i}})]})]}));t.Z=n,n.displayName="messaging.ArticlePreview"},90834:function(e,t,a){"use strict";a.d(t,{j:function(){return n}});var s=a(85893),i=a(67294),l=a(53882);let n=i.memo(({children:e})=>(0,s.jsxs)("div",{className:"note border-grey-200 relative mt-4 rounded border border-solid pb-2 pl-9 pr-3 pt-3 text-base leading-normal tracking-tight md:text-sm",children:[(0,s.jsx)("span",{className:"absolute left-3 top-3 inline-block h-[18px] w-[18px]",children:(0,s.jsx)(l.sz,{})}),e]}));n.displayName="messaging.Note"},61616:function(e,t,a){"use strict";a.d(t,{J:function(){return n}});var s=a(85893),i=a(8254),l=a(3714);function n({slug:e}){let t=i.filter(t=>{if(t.hidden)return!1;let a=e?`${e}/`:"";if(!t.slug.startsWith(a))return!1;let s=t.slug.slice(a.length);return s.length>0&&!s.includes("/")});return 0===t.length?null:(t.sort((e,t)=>
1e.title.localeCompare(t.title)),(0,s.jsx)("div",{className:"not-prose flex flex-col gap-2",children:t.map(e=>(0,s.jsx)(l.Z,{id:e.slug,href:`/docs/${e.slug}`,title:e.title,description:e.summary},e.slug))}))}n.displayName="navigation.ChildPageListing"},10490:function(e,t,a){"use strict";a.d(t,{Jj:function(){return A.J},ol:function(){return T}});var s=a(85893),i=a(67294),l=a(98560),n=a(90512),r=a(39332),o=a(8254);let d=[{label:"Start",slug:"install/start",items:[{label:"Quickstart",slug:"how-to/quickstart"},{label:"Install Tailscale",slug:"install",items:[{label:"Download â",href:"/downloads"},{label:"Update Tailscale",slug:"features/client/update"},{label:"Uninstall Tailscale",slug:"features/client/uninstall"},{label:"Deploy with MDM",slug:"mdm",items:[{label:"Customize Tailscale using system policies",slug:"features/tailscale-system-policies",items:[{label:"Deploy on Android",slug:"integrations/mdm/android"},{label:"Deploy on iOS/tvOS",slug:"integrations/mdm/ios"},{label:"Deploy on macOS",slug:"integrations/mdm/mac"},{label:"Deploy on Windows",slug:"integrations/mdm/windows-mdm"}]},{label:"MDM integration partners",slug:"integrations/partners/mdm",items:[{label:"Google Workspace",slug:"integrations/mdm/google-workspace"},{label:"Jamf",slug:"integrations/mdm/jamf"},{label:"JumpCloud",slug:"integrations/mdm/jumpcloud"},{label:"Iru (Kandji)",slug:"integrations/mdm/iru"},{label:"Microsoft Intune",slug:"integrations/mdm/microsoft-intune"},{label:"SimpleMDM",slug:"integrations/mdm/simplemdm"},{label:"TinyMDM",slug:"integrations/mdm/tinymdm"}]}]}]},{label:"Quick guides",slug:"quick-guides",items:[{label:"Use exit nodes",slug:"features/exit-nodes/how-to/setup"},{label:"Configure a subnet router",slug:"features/subnet-routers/how-to/setup"},{label:"Host a website",slug:"features/tailscale-funnel/how-to/host-websites"},{label:"Install on AWS",slug:"install/cloud/aws/quickstart"},{label:"SSH into a Linux virtual machine",slug:"how-to/connect-ssh-linux-vm"},{label:"Access a virtual private cloud (VPC)",slug:"how-to/connect-vpc"},{label:"Connect a Docker container using Docker Compose",slug:"features/containers/docker/how-to/connect-docker-container"}]},{label:"OpenVPN migration guide",slug:"solutions/migrate-openvpn-tailscale"},{label:"Legacy VPN migration guide",slug:"solutions/migrate-legacy-vpn-tailscale"},{label:"Set up an identity provider",slug:"integrations/identity",items:[{label:"Google",slug:"integrations/identity/google-sso"},{label:"Microsoft Entra ID",slug:"integrations/identity/entra"},{label:"Okta",slug:"integrations/identity/okta"},{label:"GitHub",slug:"integrations/identity/github"},{label:"Apple",slug:"integrations/identity/apple-sso"},{label:"OneLogin",slug:"integrations/identity/onelogin"},{label:"User & group provisioning",slug:"features/user-group-provisioning",items:[{label:"Google Workspace",slug:"integrations/google-sync"},{label:"Microsoft Entra ID",slug:"integrations/identity/entra/entra-id-scim"},{label:"Okta",slug:"integrations/identity/okta/okta-scim"}]},{label:"Custom OIDC providers",slug:"integrations/identity/custom-oidc"},{label:"Switch identity provider",slug:"integrations/identity/switch-identity-provider"},{label:"Enable 2FA and MFA",slug:"multifactor-auth"}]},{label:"What is Tailscale?",slug:"concepts/what-is-tailscale"}]},{label:"Manage Access",slug:"manage",items:[{label:"Manage access control",slug:"features/access-control",items:[{label:"Manage ACLs",slug:"features/access-control/acls"},{label:"Manage grants",slug:"features/access-control/grants"},{label:"Migrate from ACLs to grants",slug:"reference/migrate-acls-grants"},{label:"Edit the tailnet policy file",slug:"features/tailnet-policy-file/manage-tailnet-policies"},{label:"Manage Tailscale with GitOps",slug:"gitops",items:[{label:"Manage Tailscale with Bitbucket",slug:"integrations/bitbucket/gitops"},{label:"Manage Tailscale with GitHub",slug:"integrations/github/gitops"},{label:"Manage Tailscale with GitLab",slug:"integrations/gitlab/gitops"}]}]},{label:"Manage just-in-time access",slug:"features/access-control/just-in-time-access",items:[{label:"Device posture for JIT access",
1slug:"features/tailscale-accessbot-jit"},{label:"3rd party JIT access integrations",slug:"integrations/jit-access",items:[{label:"ConductorOne",slug:"integrations/jit-conductorone"},{label:"Opal",slug:"integrations/jit-opal"},{label:"Sym",slug:"integrations/jit-sym"}]}]},{label:"Manage devices",slug:"features/access-control/device-management",items:[{label:"Add a device",slug:"features/access-control/device-management/how-to/set-up"},{label:"Device approval",slug:"features/access-control/device-management/device-approval"},{label:"Rename a device",slug:"concepts/machine-names"},{label:"Remove a device",slug:"features/access-control/device-management/how-to/remove"},{label:"Device posture management",slug:"features/device-posture",items:[{label:"Use Device Identity Collection",slug:"features/access-control/device-management/how-to/manage-identity"},{label:"CrowdStrike Falcon",slug:"integrations/crowdstrike-zta"},{label:"SentinelOne",slug:"integrations/sentinelone"},{label:"1Password XAM",slug:"integrations/kolide"},{label:"Jamf Pro",slug:"integrations/jamf-pro"},{label:"Microsoft Intune",slug:"integrations/mdm/intune"},{label:"Iru (Kandji)",slug:"integrations/iru"}]},{label:"Filter devices",slug:"features/access-control/device-management/how-to/filter"},{label:"Export list of devices",slug:"features/access-control/device-management/how-to/export-list"},{label:"Use the web interface",slug:"features/client/device-web-interface"},{label:"Add a device using a QR code",slug:"features/access-control/device-management/how-to/set-up-qr-code"},{label:"Secure node state storage",slug:"features/secure-node-state-storage"}]},{label:"Manage users",slug:"manage-users",items:[{label:"Invite users",slug:"features/sharing/how-to/invite-users",items:[{label:"Invite team members",slug:"features/sharing/how-to/invite-team-members"},{label:"Invite any user",slug:"features/sharing/how-to/invite-any-user"},{label:"Use passkeys",slug:"integrations/identity/passkeys"}]},{label:"User approval",slug:"features/access-control/user-approval"},{label:"User roles",slug:"reference/user-roles"},{label:"Change user roles",slug:"features/sharing/how-to/change-role"},{label:"Remove users",slug:"features/sharing/how-to/remove-team-members"},{label:"Fast user switching",slug:"features/client/fast-user-switching"},{label:"Export list of users",slug:"features/sharing/how-to/export-list"},{label:"Offboard users",slug:"features/sharing/how-to/offboard"},{label:"Admin console session timeout",slug:"account/admin-console-session-timeout"}]},{label:"Tailnet Lock",slug:"features/tailnet-lock"}]},{label:"Tailscale PAM: Govern Privileged Access",slug:"privileged-access-management",items:[{label:"What is Tailscale PAM?",slug:"privileged-access-management/what-is-tailscale-pam"},{label:"Architecture and core concepts",slug:"privileged-access-management/architecture-and-concepts"},{label:"Get started with Tailscale PAM",slug:"privileged-access-management/get-started"},{label:"Tailscale PAM connectors",slug:"privileged-access-management/connectors",items:[{label:"Overview",slug:"privileged-access-management/connectors/overview"},{label:"Install a connector",slug:"privileged-access-management/connectors/install"},{label:"Install a connector with Ansible",slug:"privileged-access-management/connectors/install-ansible"},{label:"High availability",slug:"privileged-access-management/connectors/high-availability"}]},{label:"Tailscale PAM services",slug:"privileged-access-management/services",items:[{label:"Access an SSH server",slug:"privileged-access-management/how-to/access-ssh",items:[{label:"Built-in SSH server",slug:"privileged-access-management/how-to/access-ssh/built-in-ssh"},{label:"Remote SSH server",slug:"privileged-access-management/how-to/access-ssh/remote-ssh"},{label:"AWS EC2 Instance Connect",slug:"privileged-access-management/how-to/access-ssh/ec2-instance"},{label:"EC2 instance with AWS Systems Manager Session Manager",slug:"privileged-access-management/how-to/access-ssh/ec2-ssm"},{label:"ECS container with AWS Systems Manager Session Manager",slug:"privileged-access-management/how-to/access-ssh/ecs-ssm"}]},{label:"Access a database",slug:"privileged-access-management/how-to/access-database",items:[{label:"Access Amazon RDS",slug:"privileged-access-management/how-to/access-database/amazon-rds"},{label:"Access Google Cloud SQL",slug:"privileged-access-management/how-to/access-database/google-cloud-sql"},{label:"Access MongoDB",slug:"privileged-access-management/how-to/access-database/mongodb"},{label:"Access MySQL",slug:"privileged-access-management/how-to/access-database/mysql"},{label:"Access PostgreSQL",slug:"privileged-access-management/how-to/access-database/postgresql"},{label:"Access Elasticsearch",slug:"privileged-access-management/how-to/access-database/elasticsearch"}]},{label:"Access an HTTP service",slug:"privileged-access-management/how-to/access-http-service",items:[{label:"Use Tailscale identity in Grafana",slug:"privileged-access-management/how-to/access-http-service/grafana"},{label:"Troubleshoot SSO login failure",slug:"privileged-access-management/how-to/access-http-service/troubleshoot-sso-failure"}]},{label:"Access a TCP service",slug:"privileged-access-management/how-to/access-tcp-service"},{label:"Access a Kubernetes cluster",slug:"privileged-access-management/how-to/access-kubernetes"},{label:"Access Amazon S3 buckets",slug:"privileged-access-management/how-to/access-s3"}]},{label:"Use a custom DNS domain",slug:"privileged-access-management/how-to/custom-dns-domain"},{label:"Manage PAM resources using Terraform",slug:"privileged-access-management/how-to/manage-resources-terraform"},{label:"Store session recordings in Amazon S3",slug:"privileged-access-management/how-to/session-recordings-s3"},{label:"Service accounts",slug:"privileged-access-management/service-accounts"},{label:"Session logs",slug:"privileged-access-management/session-logs"},{label:"Control access to services",slug:"privileged-access-management/how-to/control-access"},{label:"Manage secrets and credentials",slug:"privileged-access-management/how-to/manage-secrets"},{label:"Reference",slug:"privileged-access-management/reference",items:[{label:"FAQ",slug:"privileged-access-management/reference/faq"},{label:"Sandbox servers",slug:"privileged-access-management/reference/sandbox-servers"},{label:"tailzero",slug:"privileged-access-management/reference/tailzero"},{label:"Troubleshooting",slug:"privileged-access-management/reference/troubleshooting"}]}]},{label:"Aperture: Secure AI",slug:"aperture",items:[{label:"What is Aperture?",slug:"aperture/what-is-aperture"},{label:"Get started with Aperture",slug:"aperture/get-started"},{label:"Connect devices outside your tailnet",slug:"aperture/connect-outside-tailnet"},{label:"Set up LLM clients",slug:"aperture/use-your-tools",items:[{label:"Aperture CLI",slug:"aperture/cli"},{label:"Chat UI",slug:"aperture/how-to/set-up-chat-ui"},{label:"Claude Code",slug:"aperture/how-to/use-claude-code"},{label:"Codex",slug:"aperture/how-to/use-codex"},{label:"OpenCode",slug:"aperture/how-to/use-opencode"},{label:"OpenAI-compatible tools",slug:"aperture/how-to/use-openai-compatible-tools"}]},{label:"Set up LLM providers",slug:"aperture/set-up-providers",items:[{label:"Passthrough mode",slug:"aperture/how-to/use-passthrough-mode",items:[{label:"Claude subscriptions",slug:"aperture/how-to/use-passthrough-mode/claude-subscriptions"},{label:"Codex subscriptions",slug:"aperture/how-to/use-passthrough-mode/codex-subscriptions"}]},{label:"OpenAI",slug:"aperture/how-to/use-openai"},{label:"Anthropic",slug:"aperture/how-to/use-anthropic"},{label:"Google Gemini",slug:"aperture/how-to/use-google-gemini"},{label:"Gemini Enterprise Agent Platform",slug:"aperture/how-to/use-gemini-enterprise-agent-platform"},{label:"Amazon Bedrock",slug:"aperture/how-to/use-amazon-bedrock"},{label:"Microsoft Foundry",slug:"aperture/how-to/use-microsoft-foundry"},{label:"OpenRouter",slug:"aperture/how-to/use-openrouter"},{label:"Vercel AI Gateway",slug:"aperture/how-to/use-vercel"}
1,{label:"Self-hosted",slug:"aperture/how-to/use-self-hosted"},{label:"OpenAI-compatible",slug:"aperture/how-to/use-openai-compatible-provider"}]},{label:"Connectors",slug:"aperture/connectors",items:[{label:"Get started with connectors",slug:"aperture/connectors/get-started"},{label:"Add a verified connector",slug:"aperture/connectors/add-verified-connector"},{label:"Set up an authenticated MCP connector",slug:"aperture/connectors/set-up-authenticated-mcp-connector"},{label:"Set up an HTTP API connector",slug:"aperture/how-to/set-up-http-api-connector"},{label:"Set up a per-user OAuth 2.0 connector",slug:"aperture/how-to/set-up-per-user-oauth2-connector"},{label:"Grant connector access by label",slug:"aperture/how-to/grant-connector-access-by-label"},{label:"Built-in connectors",slug:"aperture/connectors/built-in-connectors"},{label:"Use a connector",slug:"aperture/connectors/use-a-connector"},{label:"How connectors work",slug:"aperture/connectors/how-connectors-work"},{label:"Kinds of connector",slug:"aperture/connectors/kinds-of-connector"},{label:"Connectors reference",slug:"aperture/connectors/reference"}]},{label:"Chat",slug:"aperture/chat",items:[{label:"Projects",slug:"aperture/chat/projects"}]},{label:"Control AI access",slug:"aperture/control-access",items:[{label:"How grants work",slug:"aperture/how-grants-work"},{label:"Grant access to models",slug:"aperture/how-to/grant-model-access"},{label:"Grant access to MCP tools",slug:"aperture/how-to/grant-mcp-tool-access"},{label:"Set up admin access",slug:"aperture/how-to/set-up-admin-access"},{label:"Set up a guardrail",slug:"aperture/how-to/set-up-guardrails"},{label:"Chat sandbox",slug:"chat-sandbox"}]},{label:"Manage AI spending",slug:"aperture/manage-spending",items:[{label:"Buy tokens through Aperture",slug:"aperture/buy-tokens-through-aperture"},{label:"Set per-user spending limits",slug:"aperture/how-to/set-per-user-spending-limits"},{label:"Set a team-wide budget",slug:"aperture/how-to/set-team-budget"},{label:"Configure overdraft quotas",slug:"aperture/how-to/configure-overdraft-quotas"},{label:"Check and refill budgets",slug:"aperture/how-to/check-and-refill-budgets"}]},{label:"Observe and export AI usage",slug:"aperture/observe-and-export",items:[{label:"View usage dashboards",slug:"aperture/reference/dashboard"},{label:"View admin dashboards",slug:"aperture/reference/dashboard-admin"},{label:"Filter logs by header",slug:"aperture/how-to/filter-logs-by-header"},{label:"Export usage data to S3",slug:"aperture/how-to/export-usage-data-to-s3"}]},{label:"Privacy and data retention",slug:"aperture/privacy-and-data-retention",items:[{label:"Configure zero-retention mode",slug:"aperture/how-to/configure-zero-retention"}]},{label:"Integrate with external tools",slug:"aperture/integrate",items:[{label:"Integrate Cerbos",slug:"aperture/integrate/cerbos"},{label:"Integrate Cribl",slug:"aperture/integrate/cribl"},{label:"Integrate Highflame",slug:"aperture/integrate/highflame"},{label:"Integrate Oso",slug:"aperture/integrate/oso"},{label:"Build a custom webhook",slug:"aperture/how-to/build-custom-webhook"}]},{label:"Reference",slug:"aperture/reference",items:[{label:"Configuration reference",slug:"aperture/configuration"},{label:"Supported models and providers",slug:"aperture/provider-compatibility"},{label:"Aperture vs. tailnet policy file grants",slug:"aperture/reference/aperture-vs-tailnet-grants"},{label:"Aperture recipes",slug:"aperture/reference/recipes"}]},{label:"Troubleshooting",slug:"aperture/troubleshooting"}]},{label:"Route Traffic",slug:"route",items:[{label:"Set up a subnet router",slug:"features/subnet-routers",items:[{label:"Subnet router BGP advertisement",slug:"features/subnet-routers/how-to/bgp"},{label:"4via6 subnet routers",slug:"features/subnet-routers/4via6-subnets"},{label:"Site-to-site networking",slug:"features/site-to-site"}]},{label:"Set up an exit node",slug:"features/exit-nodes",items:[{label:"Use a Mullvad exit node",slug:"features/exit-nodes/mullvad-exit-nodes"},{label:"Recommended exit nodes",slug:"features/exit-nodes/auto-exit-nodes"},{label:"Mandatory exit nodes",slug:"features/exit-nodes/mandatory-exit-nodes"}]},{label:"Set up an app connector",slug:"features/app-connectors/how-to/setup",items:[{label:"Best practices",slug:"reference/best-practices/app-connectors"},{label:"How app connectors work",slug:"features/app-connectors"}]},{label:"Use DNS",slug:"reference/dns-in-tailscale",items:[{label:"Configure Linux DNS",slug:"reference/linux-dns"},{label:"Why is resolv.conf being overwritten?",slug:"reference/faq/dns-resolv-conf"},{label:"Use NextDNS",slug:"integrations/nextdns"},{label:"Use Control D",slug:"integrations/control-d"},{label:"Use Unbound DNS in OPNsense",slug:"integrations/firewalls/opnsense-unbound"}]},{label:"Set up MagicDNS",slug:"features/magicdns"},{label:"Set up high availability",slug:"how-to/set-up-high-availability"}]},{label:"Set Up Servers",slug:"servers",items:[{label:"Set up a server",slug:"how-to/set-up-servers"},{label:"Use tags",slug:"features/tags"},{label:"Install Tailscale with cloud-init",slug:"install/with-cloud-init"},{label:"Use auth keys",slug:"features/access-control/auth-keys"},{label:"Automate key expiry",slug:"features/access-control/key-expiry"},{label:"Use Tailscale SSH",slug:"features/tailscale-ssh",items:[{label:"Use Tailscale SSH Console",slug:"features/tailscale-ssh/tailscale-ssh-console"}]},{label:"Set up HTTPS certificates",slug:"how-to/set-up-https-certificates"},{label:"Run an ephemeral node",slug:"features/ephemeral-nodes"},{label:"Run unattended",slug:"how-to/run-unattended"}]},{label:"Access & Share Services",slug:"share",items:[{label:"Tailscale services",slug:"features/tailscale-services"},{label:"Endpoint collection",slug:"features/services"},{label:"Share nodes",slug:"features/sharing"},{label:"Use Taildrop",slug:"features/taildrop",items:[{label:"Taildrop with NAS",slug:"features/taildrop/how-to/set-up-taildrop-with-nas"}]}]},{label:"Share a web server",slug:"share-web-server",items:[{label:"Tailscale Funnel",slug:"features/tailscale-funnel",items:[{label:"Examples",slug:"reference/examples/funnel"},{label:"Funnel vs. sharing",slug:"reference/funnel-vs-sharing"}]},{label:"Tailscale Serve",slug:"features/tailscale-serve",items:[{label:"Examples",slug:"reference/examples/serve"}]}]},{label:"Solutions",slug:"solutions",items:[{label:"Secure traffic with Apple TV",slug:"solutions/secure-traffic-public-wifi-appletv"},{label:"Secure GitHub Actions runners",slug:"solutions/connect-github-cicd-workflows-to-private-infrastru
1cture-without-public-exposure"},{label:"Block ads with a Raspberry Pi",slug:"solutions/block-ads-all-devices-anywhere-using-raspberry-pi"},{label:"Access remote desktops with Windows RDP",slug:"solutions/access-remote-desktops-using-windows-rdp"},{label:"Access remote desktops with RustDesk",slug:"solutions/access-remote-desktops-with-rustdesk"},{label:"Connect to MongoDB Atlas",slug:"solutions/create-a-secure-connection-to-mongodb-atlas"},{label:"Code from your iPad",slug:"solutions/code-on-ipad-vscode-caddy-code-server"},{label:"Lock down a server",slug:"how-to/secure-ubuntu-server-with-ufw"},{label:"Protect production databases",slug:"solutions/protect-postgresql-unencrypted-macbooks"},{label:"Access a PiKVM",slug:"integrations/pikvm"},{label:"Secure external services",slug:"concepts/ip-blocklist-relays"},{label:"Just-in-time access",slug:"features/access-control/just-in-time-access",items:[{label:"Device posture for JIT access",slug:"features/tailscale-accessbot-jit"},{label:"3rd party JIT access integrations",slug:"integrations/jit-access",items:[{label:"ConductorOne",slug:"integrations/jit-conductorone"},{label:"Opal",slug:"integrations/jit-opal"},{label:"Sym",slug:"integrations/jit-sym"}]}]},{label:"Automation",slug:"automations",items:[{label:"Infrastructure as code",slug:"integration-infrastructure-as-code",items:[{label:"Terraform",slug:"integrations/terraform-provider"},{label:"Pulumi",slug:"integrations/pulumi-provider"}]},{label:"macOS and iOS shortcuts",slug:"features/mac-ios-shortcuts"}]},{label:"Deploy across clusters with ArgoCD",slug:"solutions/manage-multi-cluster-kubernetes-deployments-argocd"}]},{label:"Integrations",slug:"integrations",items:[{label:"Kubernetes Operator",slug:"kubernetes-operator",items:[{label:"Install the Kubernetes Operator",slug:"kubernetes-operator/install-operator"},{label:"Quickstart tutorial",slug:"kubernetes-operator/quickstart"},{label:"Kubernetes Operator explained",slug:"kubernetes-operator/concepts",items:[{label:"Architecture",slug:"kubernetes-operator/concepts/architecture"},{label:"ProxyGroup",slug:"kubernetes-operator/concepts/proxygroup"},{label:"ProxyClass",slug:"kubernetes-operator/concepts/proxyclass"},{label:"DNSConfig",slug:"kubernetes-operator/concepts/dnsconfig"}]},{label:"Ingress: Expose workloads",slug:"kubernetes-operator/ingress",items:[{label:"Expose workloads to your tailnet (L7)",slug:"kubernetes-operator/ingress/expose-workload-to-tailnet-l7"},{label:"Expose workloads to your tailnet (L3)",slug:"kubernetes-operator/ingress/expose-workload-to-tailnet-l3"},{label:"Expose workloads to the internet",slug:"kubernetes-operator/ingress/expose-workload-to-internet"},{label:"Multi-cluster ingress with regional routing",slug:"kubernetes-operator/ingress/multi-cluster"},{label:"Connect services across clusters",slug:"kubernetes-operator/ingress/multi-cluster-service-mirroring"}]},{label:"Egress: Access tailnet resources",slug:"kubernetes-operator/egress",items:[{label:"Access a tailnet service",slug:"kubernetes-operator/egress/access-tailnet-service"},{label:"Access an IP address behind a subnet router",slug:"kubernetes-operator/egress/access-ip-behind-subnet-router"},{label:"Expose Amazon RDS to your tailnet",slug:"kubernetes-operator/egress/expose-rds-to-tailnet"},{label:"Enable MagicDNS resolution",slug:"kubernetes-operator/egress/enable-magicdns-resolution"}]},{label:"Connector: Deploy infrastructure",slug:"kubernetes-operator/connector",items:[{label:"Deploy a subnet router",slug:"kubernetes-operator/connector/deploy-subnet-router"},{label:"Deploy an app connector",slug:"kubernetes-operator/connector/deploy-app-connector"}]},{label:"API Server Proxy: Access K8s API",slug:"kubernetes-operator/api-server-access",items:[{label:"Set up the Kubernetes API over Tailscale",slug:"kubernetes-operator/api-server-access/setup-api-over-tailscale"},{label:"Configure authentication and authorization",slug:"kubernetes-operator/api-server-access/auth-and-rbac"},{label:"Proxy without authentication (noauth mode)",slug:"kubernetes-operator/api-server-access/noauth-mode"}]},{label:"Recorder: Audit and record",slug:"kubernetes-operator/recorder",items:[{label:"Deploy a recorder",slug:"kubernetes-operator/recorder/deploy-tsrecorder"},{label:"Record kubectl sessions",slug:"kubernetes-operator/recorder/kubectl-session-recording"}]},{label:"PeerRelay: Host peer relays",slug:"kubernetes-operator/peer-relay"},{label:"Manage and configure",slug:"kubernetes-operator/manage-and-configure",items:[{label:"High availability",slug:"kubernetes-operator/manage-and-configure/high-availability"},{label:"Expose metrics",slug:"kubernetes-operator/manage-and-configure/expose-metrics"},{label:"Enable debug endpoints",slug:"kubernetes-operator/manage-and-configure/enable-debug-endpoints"},{label:"Use custom machine names",slug:"kubernetes-operator/manage-and-configure/custom-machine-names"},{label:"Configure static endpoints",slug:"kubernetes-operator/manage-and-configure/configure-static-endpoints"},{label:"Enable Workload Identity Federation",slug:"kubernetes-operator/manage-and-configure/workload-identity-federation"},{label:"Deploy across clusters with ArgoCD",slug:"solutions/manage-multi-cluster-kubernetes-deployments-argocd"},{label:"Use multiple tailnets",slug:"kubernetes-operator/manage-and-configure/multi-tailnet"},{label:"Control access to ProxyGroup resources",slug:"kubernetes-operator/manage-and-configure/proxy-group-policy"}]},{label:"Reference",slug:"kubernetes-operator/reference",items:[{label:"Permissions (RBAC)",slug:"kubernetes-operator/reference/rbac"},{label:"Tag customization",slug:"kubernetes-operator/reference/tags"},{label:"Compatibility",slug:"kubernetes-operator/reference/compatibility"},{label:"Troubleshooting",slug:"kubernetes-operator/reference/troubleshooting"},{label:"IPv6 support",slug:"kubernetes-operator/reference/ipv6"},{label:"Limitations",slug:"kubernetes-operator/reference/limitations"}]}]},{label:"Cloud servers",slug:"cloud-server",items:[{label:"AWS Lightsail",slug:"install/cloud/aws/aws-lightsail"},{label:"AWS VPC",slug:"install/cloud/aws"},{label:"Azure App Service",slug:"install/cloud/azure/azure-app-service"},{label:"Azure Linux VMs",slug:"install/cloud/azure/linux"},{label:"Azure Windows VMs",slug:"install/cloud/azure/windows"},{label:"Google Compute Engine VMs",slug:"install/cloud/gce"},{label:"Hetzner VMs",slug:"install/cloud/hetzner"},{label:"Oracle Cloud VMs",slug:"install/cloud/oracle-cloud"}]},{label:"Containers and virtualization",slug:"containers-and-virtualization",items:[{label:"Docker",slug:"features/containers/docker",items:[{label:"Docker
1components",slug:"features/containers/docker/docker-components"},{label:"Use Docker standalone",slug:"features/containers/docker/how-to/connect-docker-standalone"},{label:"Use Docker Compose",slug:"features/containers/docker/how-to/connect-docker-container"},{label:"Use other Docker management tools",slug:"features/containers/docker/how-to/connect-docker-alt-manager"},{label:"Docker parameters",slug:"features/containers/docker/docker-params"}]},{label:"LXC containers",slug:"features/containers/lxc/lxc-unprivileged"},{label:"Proxmox",slug:"integrations/proxmox"}]},{label:"Serverless apps",slug:"integration-serverless-apps",items:[{label:"AWS App Runner",slug:"install/cloud/aws/aws-app-runner"},{label:"AWS Lambda",slug:"install/cloud/aws/aws-lambda"},{label:"Fly.io",slug:"install/cloud/flydotio"},{label:"Google Cloud Run",slug:"install/cloud/cloudrun"},{label:"Heroku",slug:"install/cloud/heroku"}]},{label:"Databases",slug:"database",items:[{label:"AWS RDS",slug:"install/cloud/aws/aws-rds"},{label:"Crunchy Bridge",slug:"integrations/crunchy-bridge"}]},{label:"Remote environments",slug:"remote-code",items:[{label:"code-server",slug:"integrations/codeserver"},{label:"Coder",slug:"install/cloud/coder"},{label:"CodeSandbox",slug:"integrations/codesandbox"},{label:"GitHub Codespaces",slug:"integrations/github/github-codespaces"},{label:"Gitpod",slug:"install/cloud/gitpod"},{label:"OpenVSCode",slug:"integrations/open-vscode"}]},{label:"Developer tools",slug:"integration-dev-tools",items:[{label:"Develop with AI",slug:"develop-with-ai"},{label:"Tailscale skill for coding agents",slug:"features/tailscale-skill"},{label:"Visual Studio Code Extension",slug:"integrations/vscode-extension"},{label:"Tailscale GitHub Action",slug:"integrations/github/github-action"},{label:"Tailscale with GitLab CI/CD",slug:"integrations/gitlab/gitlab-runner"},{label:"Docker Desktop",slug:"features/containers/docker/docker-desktop"},{label:"Grafana",slug:"integrations/grafana"}]},{label:"Firewalls",slug:"firewall",items:[{label:"Overview",slug:"integrations/firewalls"},{label:"OPNsense",slug:"install/opnsense"},{label:"Palo Alto Networks",slug:"integrations/firewalls/palo-alto-firewall"},{label:"pfSense",slug:"integrations/firewalls/pfsense"},{label:"Firewall mode",slug:"features/firewall-mode"}]},{label:"Web servers",slug:"integrations/web-servers",items:[{label:"Caddy Server",slug:"integrations/web-servers/caddy/caddy-certificates"},{label:"Traefik Proxy",slug:"integrations/web-servers/traefik/traefik-certificates"}]},{label:"NAS",slug:"integrations/nas",items:[{label:"Synology",slug:"integrations/synology"},{label:"QNAP",slug:"integrations/qnap"},{label:"TrueNAS SCALE",slug:"integrations/truenas"},{label:"Unraid",slug:"integrations/unraid"}]}]},{label:"FAQ",slug:"reference/faq"},{label:"Logging, Streaming, and Events",slug:"reference/logging-streaming-events",items:[{label:"Logging overview",slug:"features/logging"},{label:"Configuration audit logging",slug:"features/logging/audit-logging"},{label:"Network flow logs",slug:"features/logging/network-flow-logs"},{label:"Log streaming",slug:"features/logging/log-streaming"},{label:"SSH session recording",slug:"features/tailscale-ssh/tailscale-ssh-session-recording",items:[{label:"Send recordings to S3",slug:"features/tailscale-ssh/how-to/session-recording-s3"},{label:"Deploy multiple recorder nodes",slug:"reference/multiple-recorder-nodes"}]},{label:"Client metrics",slug:"reference/tailscale-client-metrics"},{label:"Webhooks",slug:"features/webhooks"}]},{label:"Manage Your Organization",slug:"account",items:[{label:"Contact preferences",slug:"reference/contact-preferences"},{label:"Manage billing",slug:"account/billing"},{label:"Manage your plan",slug:"account/manage-plans"},{label:"Tailnet name",slug:"concepts/tailnet-name"},{label:"Domain ownership",slug:"concepts/domain-ownership",items:[{label:"Verify your domain",slug:"account/domain-verification"},{label:"Domain aliases",slug:"account/domain-aliases"}]}]},{label:"Reference",slug:"reference",items:[{label:"Tailnet policy file syntax",slug:"reference/syntax/policy-file",items:[{label:"Grants syntax",slug:"reference/syntax/grants"}
1,{label:"IP sets",slug:"features/tailnet-policy-file/ip-sets"},{label:"Via in grants",slug:"features/access-control/grants/grants-via"}]},{label:"ACL examples",slug:"reference/examples/acls"},{label:"Grant examples",slug:"reference/examples/grants"},{label:"CLI",slug:"reference/tailscale-cli",items:[{label:"tailscale funnel",slug:"reference/tailscale-cli/funnel"},{label:"tailscale lock",slug:"reference/tailscale-cli/lock"},{label:"tailscale serve",slug:"reference/tailscale-cli/serve"},{label:"tailscale up",slug:"reference/tailscale-cli/up"},{label:"tailscaled",slug:"reference/tailscaled"}]},{label:"API",slug:"reference/tailscale-api",items:[{label:"Trust credentials",slug:"reference/trust-credentials",items:[{label:"OAuth",slug:"oauth",items:[{label:"OAuth clients",slug:"features/oauth-clients"},{label:"OAuth apps",slug:"features/oauth-apps",items:[{label:"Device provisioning with OAuth apps",slug:"features/oauth-apps/device-provisioning"}]}]},{label:"Workload identity federation",slug:"features/workload-identity-federation"}]},{label:"tsidp",slug:"features/tsidp",items:[{label:"tsidp configuration",slug:"reference/tsidp-configuration"}]},{label:"tsnet for Go programs",slug:"features/tsnet",items:[{label:"Hello tsnet",slug:"features/tsnet/how-to/create-basic-tsnet-app"},{label:"tsnet.Server",slug:"reference/tsnet-server-api"}]}]},{label:"Key prefixes",slug:"reference/key-prefixes"},{label:"Production best practices",slug:"reference/best-practices/production",items:[{label:"Deployment checklist",slug:"reference/deployment-checklist"},{label:"Security best practices",slug:"reference/best-practices/security",items:[{label:"Key and secret management",slug:"reference/key-secret-management"},{label:"Secret scanning",slug:"integrations/secret-scanning"},{label:"Admin with passkey",slug:"reference/tailnet-passkey-admin"}]},{label:"Performance best practices",slug:"reference/best-practices/performance"},{label:"AWS reference architecture",slug:"reference/reference-architectures/aws"},{label:"Azure reference architecture",slug:"reference/reference-architectures/azure"},{label:"GCP reference architecture",slug:"reference/reference-architectures/gcp"},{label:"CoreWeave best practices",slug:"reference/best-practices/cloud/coreweave"}]},{label:"Shared responsibility",slug:"concepts/shared-responsibility"},{label:"Technical overviews",slug:"concepts",items:[{label:"Tailscale identity",slug:"concepts/tailscale-identity"},{label:"About WireGuard",slug:"concepts/wireguard"},{label:"Tailscale encryption",slug:"concepts/tailscale-encryption",items:[{label:"FedRAMP and FIPS-140 considerations",slug:"reference/tailscale-fedramp-fips140"}]},{label:"Control and data planes",slug:"concepts/control-data-planes"},{label:"Grants vs. ACLs",slug:"reference/grants-vs-acls"},{label:"Application capabilities",slug:"features/access-control/grants/grants-app-capabilities"},{label:"Direct vs relayed connections",slug:"reference/connection-types"},{label:"Device connectivity",slug:"reference/device-connectivity"},{label:"How Tailscale assigns IP addresses",slug:"concepts/ip-and-dns-addresses"},{label:"CGNAT interoperability",slug:"reference/cgnat-interoperability"},{label:"Tailscale and the OSI model",slug:"concepts/tailscale-osi"},{label:"Smaller binaries for embedded devices",slug:"how-to/set-up-small-tailscale"},{label:"Kernel vs. netstack subnet routing & exit nodes",slug:"reference/kernel-vs-userspace-routers"},{label:"Userspace networking mode",slug:"concepts/userspace-networking"},{label:"Node keys",slug:"concepts/node-keys"},{label:"Protect SSH Servers",slug:"reference/ssh-over-tailscale"},{label:"Tailnet Lock white paper",slug:"concepts/tailnet-lock-whitepaper"},{label:"DERP servers",slug:"reference/derp-servers"},{label:"Zero Trust Networking (ZTN)",slug:"concepts/zero-trust"},{label:"IPv4 vs. IPv6 FAQ",slug:"reference/faq/ipv6"},{label:"Tailscale ping types",slug:"reference/ping-types"}]},{label:"Terminology and concepts",slug:"reference/glossary",items:[{label:"AWS Client VPN and Tailscale terminology map",slug:"reference/glossary/aws-client-vpn-tailscale"},{label:"Cisco and Tailscale terminology map",slug:"reference/glossary/cisco-tailscale"},{label:"Fortinet and Tailscale terminology map",slug:"reference/glossary/fortinet-tailscale"},{label:"Palo Alto Networks GlobalProtect and Tailscale terminology map",slug:"reference/glossary/globalprotect-tailscale"}]},{label:"Tailscale messages",slug:"reference/messages"},{label:"Debug menu and options",slug:"reference/debug-menu"},{label:"Interoperability with other software",slug:"reference/interoperability"},{label:"GitHub â",href:"https://github.com/tailscale/tailscale"}]},{label:"Get Support",slug:"support",items:[{label:"Troubleshooting",slug:"reference/troubleshooting",items:[{label:"Device connectivity",slug:"reference/troubleshooting/connectivity",items:[{label:"Can't download Tailscale client",slug:"reference/troubleshooting/connectivity/download-client-failure"}
1,{label:"Can't connect to other tailnet devices",slug:"reference/troubleshooting/connectivity/connect-device-failure"},{label:"Can't connect to internet",slug:"reference/troubleshooting/connectivity/connect-internet-failure"},{label:"Can't connect to LAN",slug:"reference/troubleshooting/connectivity/connect-lan-failure"},{label:"Poor performance with internet connections",slug:"reference/troubleshooting/poor-performance-internet"},{label:"Poor performance between tailnet devices",slug:"reference/troubleshooting/poor-performance-tailnet"},{label:"Domain names resolution issues",slug:"reference/troubleshooting/resolve-domain-names-failure"},{label:"Blocked by captive portal",slug:"reference/troubleshooting/connectivity/captive-portal-failure"},{label:"Tailscale client flagged by antivirus software",slug:"reference/troubleshooting/connectivity/antivirus-failure"}]},{label:"Network configuration",slug:"reference/troubleshooting/network-configuration",items:[{label:"Disable subnet route masquerading",slug:"reference/troubleshooting/network-configuration/disable-subnet-route-masquerading"},{label:"IP routes installed by Tailscale",slug:"reference/troubleshooting/network-configuration/tailscale-ip-routes"},{label:"CGNAT conflicts",slug:"reference/troubleshooting/network-configuration/cgnat-conflicts"},{label:"DERP traffic routing issues",slug:"reference/troubleshooting/network-configuration/derp-routing"},{label:"DNS errors with internal services",slug:"reference/troubleshooting/network-configuration/dns-errors-internal-service"},{label:"Hard NAT issues",slug:"reference/troubleshooting/network-configuration/hard-nat-issues"},{label:"IP forwarding errors",slug:"reference/troubleshooting/network-configuration/ip-forwarding-errors-advertise"},{label:"LAN traffic with overlapping subnets issues",slug:"reference/troubleshooting/network-configuration/lan-traffic-overlapping-subnets"},{label:"Multiple devices with same 100.x IP address",slug:"reference/troubleshooting/network-configuration/multiple-devices-same-100-x-ip-address"},{label:"Overlapping subnet route failover issues",slug:"reference/troubleshooting/network-configuration/overlapping-subnet-route-failover"},{label:"Route all traffic through a default route issues",slug:"reference/troubleshooting/network-configuration/route-traffic-default-node"},{label:"SoraCOM issues",slug:"reference/troubleshooting/network-configuration/soracom-issues"},{label:"Sunrise Communications issues",slug:"reference/troubleshooting/network-configuration/sunrise-communications-issues"},{label:"Tailscale domains and sites unreachable",slug:"reference/troubleshooting/network-configuration/tailscale-domains-sites-unreachable"},{label:"Tally ERP issues",slug:"reference/troubleshooting/network-configuration/tally-erp-issues"},{label:"TCP connection issues between two devices",slug:"reference/troubleshooting/network-configuration/tcp-connection-two-devices"},{label:"Unencrypted packet examination",slug:"reference/troubleshooting/network-configuration/inspect-unencrypted-packets"}]},{label:"Basic network troubleshooting",slug:"reference/troubleshooting/basic-network-troubleshooting"},{label:"Apple devices",slug:"reference/troubleshooting/apple",items:[{label:"Apple TV",slug:"reference/troubleshooting/apple/cant-access-appletv"},{label:"macOS access from iPhone",slug:"reference/troubleshooting/apple/cant-access-macos-from-iphone"},{label:"macOS ping issues",slug:"reference/troubleshooting/apple/macos-ping-issues"},{label:"macOS stuck at Loading backend",slug:"reference/troubleshooting/apple/macos-stuck-loading-backend"},{label:"macOS system extension errors",slug:"reference/troubleshooting/apple/macos-system-extension-errors"},{label:"macOS doesn't display Tailscale icon",slug:"reference/troubleshooting/apple/macos-doesnt-display-tailscale-icon"}]},{label:"Linux devices",slug:"reference/troubleshooting/linux",items:[{label:"Linux DNS",slug:"reference/troubleshooting/linux/linux-dns-issues"},{label:"Linux failure to unseal state file",slug:"reference/troubleshooting/linux/linux-unseal-state-file"},{label:"Linux operator permission",slug:"reference/troubleshooting/linux/linux-operator-permission"}]},{label:"Windows devices",slug:"reference/troubleshooting/windows",items:[{label:"Supported Windows versions",slug:"reference/troubleshooting/windows/supported-windows-versions"}
1,{label:"System tray shows no internet access",slug:"reference/troubleshooting/windows/windows-systray-no-internet-access"},{label:"Windows failure to unseal state file",slug:"reference/troubleshooting/windows/windows-unseal-state-file-error"},{label:"Windows installation error",slug:"reference/troubleshooting/windows/windows-install-error"},{label:"Windows ping issues",slug:"reference/troubleshooting/windows/windows-ping-issues"},{label:"Windows RDP login issue",slug:"reference/troubleshooting/windows/windows-rdp-login-issue"},{label:"Windows RDP user account restriction",slug:"reference/troubleshooting/windows/windows-rdp-user-account-restriction"},{label:"Windows upgrade error",slug:"reference/troubleshooting/windows/windows-upgrade-error"}]},{label:"Mobile devices",slug:"reference/troubleshooting/mobile",items:[{label:"Battery drains quickly",slug:"reference/troubleshooting/mobile/battery-drains"},{label:"Troubleshoot apps forced to use Tailscale",slug:"reference/troubleshooting/mobile/force-or-bypass-apps"}]},{label:"Grants",slug:"reference/troubleshooting/grants"},{label:"Containers",slug:"reference/troubleshooting/containers",items:[{label:"Kubernetes operator issues",slug:"reference/troubleshooting/containers/kubernetes-operator"},{label:"Proxmox issues",slug:"reference/troubleshooting/containers/proxmox"}]},{label:"Cloud environments",slug:"reference/troubleshooting/cloud",items:[{label:"AWS access to Google",slug:"reference/troubleshooting/cloud/aws-google-routes"},{label:"Oracle cloud devices",slug:"reference/troubleshooting/cloud/oracle-cloud"},{label:"Subnet connectivity ",slug:"reference/troubleshooting/cloud/subnet-connectivity"}]}]},{label:"Support options",slug:"reference/support-options"},{label:"Contact support â",href:"/contact/support"},{label:"Generate a bug report",slug:"account/bug-report"}]},{label:"Resources",slug:"resources",items:[{label:"Changelog â",href:"/changelog"},{label:"Comparisons â",href:"/compare"},{label:"Release stages",slug:"reference/tailscale-release-stages"},{label:"Security â",href:"/security"},{label:"Tailscale Community Projects",slug:"reference/tailscale-community-projects"},{label:"Versions",slug:"reference/tailscale-client-versions",items:[{label:"Unstable builds",slug:"install/unstable"}]},{label:"Use cases",slug:"use-cases"},{label:"Invite only features",slug:"reference/invite-only-feature"},{label:"Feedback â",href:"/feedback"}]}],c=e=>{if(e)return o.find(t=>t.slug===e)},u=()=>d.map(function e(t){let a=c(t?.slug);return{...t,label:t.label??a?.title,items:t.items?.map(e),hideInNav:a?.hidden===!0}});var p=a(41664),m=a.n(p),g=a(53882);let h=({label:e,items:t,level:a,linkSrc:l,hideInNav:o})=>{let d=(0,r.usePathname)(),c=`${d}/`===l||d===l,u=c||d?.startsWith(l)||0===a,[p,m]=(0,i.useState)(u);if((0,i.useEffect)(()=>{c&&m(!0)},[c]),!l||o)return null;if(!t)return(0,s.jsx)(f,{label:e,level:a,linkSrc:l,active:c,classNames:`${a>0&&"ml-7"} text-sm`,hideInNav:o});let x=t?.length>0&&t.find(e=>!1===e.hideInNav);return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("li",{className:"flex items-baseline gap-x-2",children:[x&&(0,s.jsxs)("button",{type:"button",onClick:()=>m(e=>!e),className:(0,n.Z)(x&&"rounded px-1 py-0 hover:cursor-pointer hover:bg-stone-100"),children:[(0,s.jsx)(g.Tt,{isExpanded:p,hidden:!x}),(0,s.jsx)("span",{className:"sr-only",children:"Toggle"})]}),(0,s.jsx)(f,{label:e,level:a,linkSrc:l,active:c,hideInNav:o})]}),x&&p&&(0,s.jsx)("ul",{className:"ml-2.5 flex flex-col items-start gap-0.5 border-l pl-2 text-sm text-neutral-800 dark:text-neutral-300/85",children:t.map((t,s)=>(0,i.createElement)(h,{...t,key:`${e}-${s}`,level:a+1,linkSrc:t.href||`/docs/${t.slug}`}))})]})};h.displayName="navigation.SubLink";let f=({label:e,linkSrc:t,level:a,active:i,classNames:l,hideInNav:r})=>{let o=(0,n.Z)("rounded py-1 px-2 text-stone-800 hover:text-stone-900",0===a&&"mb-0.5 pl-2 font-semibold -outline-offset-1",i?"bg-stone-100 hover:bg-stone-200":"hover:bg-stone-100 hover:cursor-pointer",l);return!r&&t?(0,s.jsx)(m(),{href:t,"data-slug":t,className:o,children:e}):(0,s.jsx)("p",{className:o,children:e})};function x({isOpen:e=!1}){let t=(0,i.useRef)(null),a=(0,r.usePathname)(),n=u();return(0,i.useEffect)(()=>{let e=t.current;if(!a||!e)return;let s=e.querySelector(`[data-slug="${a}"]`),i=s?.offsetTop;if(i){let e=window.innerWidth<640;t.current?.scroll({top:i-(e?110:68),left:0,behavior:"smooth"})}},[a,e]),(0,s.jsx)("nav",{className:"relative h-full pb-8 md:block ",children:(0,s.jsxs)("div",{className:"sticky top-36 flex h-full flex-col gap-8 first:overflow-clip md:h-auto",children:[(0,s.jsx)(l.tI,{side:"top"}),(0,s.jsxs)("ul",{ref:t,className:"flex max-h-[90vh] flex-col gap-1 overflow-y-auto pb-10 pt-4 text-sm md:pb-20",children:[n.map((e,t)=>(0,s.jsx)(h,{label:e.label,items:e?.items||[],level:0,linkSrc:e.href||`/docs/${e.slug}`,hideInNav:e.hideInNav},t)),(0,s.jsx)(l.tI,{side:"bottom"})]})]})})}f.displayName="navigation.SubLink.SubLinkItem",x.displayName="navigation.DocsMenu";var b=a(32938);i.memo(({data:e})=>{let t=(0,b.Z)();if(0===e.length)return null;let a=(i,n)=>{let r=[];for(let o=i;o<e.length;o++){let i=e[o];if(i&&i.level===n){let d=e[o+1]?.level,c=!!d&&d>n;r.push((0,s.jsx)(l.Mc.ck,{href:`#${i.id}`,text:i.text,onClick:t,children:c&&d&&(0,s.jsx)(s.Fragment,{children:a(o+1,d)})},o))}else if(i?.level&&i.level<n)break}return(0,s.jsx)(l.Mc.jo,{className:`${n>2&&"pl-4"}`,children:r})};return(0,s.jsxs)(l.Mc.W2,{children:[(0,s.jsx)(l.Mc.Dx,{children:"On this page"}),a(0,2)]})}).displayName="navigation.DocsToc";var y=a(813),v=a.n(y),w=a(3714);let T=i.memo(({initialQuery:e})=>{let t=(0,r.useSearchParams)(),a=(0,r.usePathname)(),[l,n]=(0,i.useState)(e||""),[o,d]=(0,i.useState)([]),[c,u]=(0,i.useState)(!1),[p,m]=(0,i.useState)(!1),[g,h]=(0,i.useState)(!1),[f,x]=(0,i.useState)(-1),b=(0,i.useRef)(null);(0,i.useEffect)(()=>{function e(e){b.current&&!b.current.contains(e.target)&&m(!1)}return document.addEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[b,m]);let y=(0,i.useCallback)(e=>{let s=new URLSearchParams(t||"");return""===e?s.delete("q"):s.set("q",e),0===s.size?a:`${a}?${s}`},[a,t]),v=(0,i.useCallback)(()=>{n(""),d([]),x(-1),window.history.replaceState(null,"",y("")),j.clear()},[y]);(0,i.useEffect)(()=>{let e=e=>{if(!p||0===o.length)return;let t=o.length-1;switch(e.key){case"Down":case"ArrowDown":e.preventDefault(),x(e=>Math.min(e+1,t));break;case"Up":case"ArrowUp":e.preventDefault(),x(e=>Math.max(e-1,-1));break;case"Enter":{let e=o[f];if(e&&e.permalink){let e=document.querySelector(`a[data-result-id="${f}"]`);e&&e.click()}break}case"Esc":case"Escape":e.preventDefault(),v()}};return window.addEventListener("keydown",e),()=>{window.removeEventListener("keydown",e)}},[o,p,f,v]);let T=(0,i.useCallback)(e=>{!function(e,t=0){_&&clearTimeout(_),_=setTimeout(e,t)}(()=>{e.length<2||C(e).then(t=>{window.history.replaceState(null,"",y(e)),u(!0),d(t),x(-1)}).catch(e=>{u(!0),h(!0),console.error("Failed to search",e)})},350)},[y]);(0,i.useEffect)(()=>{c||(T(l),j.highlight(l))},[T,c,l]);let k=(0,i.useCallback)(e=>{e.preventDefault(),T(l)},[T,l]),S=(0,i.useCallback)(e=>{let t=e.target.value;n(e=>(t!==e&&u(!1),t)),T(t)},[T]);return(0,s.jsxs)("div",{className:"relative w-full",ref:b,children:[(0,s.jsxs)("form",{className:"relative flex w-full",autoComplete:"off",autoCapitalize:"off",autoCorrect:"off",onSubmit:k,children:[(0,s.jsx)("input",{className:"input hide-search-ui w-full",name:"q",type:"search",placeholder:"Search...","aria-label":"Search",onFocus:()=>m(!0),onInput:S,value:l}),l.length>0&&(0,s.jsx)("button",{className:"absolute right-2 z-20 h-full cursor-pointer appearance-none border-none bg-transparent text-gray-500",type:"reset",onClick:v,children:(0,s.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20 ",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,s.jsx)("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),(0,s.jsx)("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]}),p&&l.length>=2?(0,s.jsx)("div",{className:"js-docHighlight ba bc-overlay overlay-shadow absolute -inset-x-2 z-30 mx-auto max-w-2xl rounded-lg border border-gray-200 bg-white px-2 py-2 shadow-lg md:-inset-x-8 lg:-inset-x-24",children:c?g?(0,s.jsxs)("div",{className:"py-5 text-center text-gray-600",children:["Sorry, something went wrong.",(0,s.jsx)("br",{}),(0,s.jsx)("a",{href:`https://google.com/search?q=${encodeURIComponent(`${l} site:tailscale.com`)}`,className:"link",children:"Search using Google"})]}):o.length>0?(0,s.jsx)("ul",{className:"flex flex-col gap-1",children:o.map((e,t)=>(0,s.jsx)("li",{children:(0,s.jsx)(w.Z,{id:t,highlighted:f===t,href:`${e.permalink}${e.permalink.includes("?")?"&":"?"}q=${encodeURIComponent(l)}
1`,title:e.title,description:e.description})},e.permalink))}):(0,s.jsxs)("div",{className:"py-5 text-center text-gray-600",children:["No results for â",l,"â"]}):(0,s.jsx)("div",{className:"py-4 text-center",children:"..."})}):null]})});T.displayName="Search";let k=new Map,C=e=>{if(k.has(e)){let[t,a]=k.get(e);if(!(Date.now()>a+2e4))return Promise.resolve(t)}let t=new URLSearchParams;return t.set("q",e),fetch(`/api/search?${t.toString()}`).then(e=>{if(!e.ok)throw Error("invalid response");return e.json()}).then(t=>(k.set(e,[t.data,Date.now()]),t.data))},_=null,j={highlight(e){let t=new(v())(document.querySelectorAll(".js-docHighlight"));t.unmark({done:()=>{e.length<2||t.mark(e)}})},clear(){new(v())(document.querySelectorAll(".js-docHighlight")).unmark()}};T.displayName="navigation.Search";var S=a(62044);i.memo(({relatedDocs:e})=>e?.length===0?null:(0,s.jsxs)(S.W2,{children:[(0,s.jsx)(S.Dx,{children:"Related Pages"}),(0,s.jsx)(S.jo,{children:e.map((e,t)=>(0,s.jsx)(S.ck,{href:e.slug,text:e.title},t))})]})).displayName="navigation.RelatedPages";var A=a(61616)},62044:function(e,t,a){"use strict";a.d(t,{Dx:function(){return d},W2:function(){return o},ck:function(){return u},jo:function(){return c}});var s=a(85893),i=a(67294),l=a(41664),n=a.n(l),r=a(90512);let o=i.memo(({children:e})=>(0,s.jsx)("div",{className:"flex max-h-[50vh] flex-col gap-2 overflow-y-auto",children:e}));o.displayName="ui.LinkList.Container";let d=i.memo(({children:e})=>(0,s.jsx)("p",{className:"tracking-wider text-xs font-semibold uppercase",children:e}));d.displayName="ui.LinkList.Title";let c=i.memo(({children:e,className:t})=>(0,s.jsx)("ul",{className:(0,r.Z)("flex flex-col gap-1 overflow-x-auto overflow-y-auto py-1 leading-tight",t),children:e}));c.displayName="ui.LinkList.NestedList";let u=i.memo(({href:e,text:t,children:a,onClick:i})=>(0,s.jsxs)("li",{children:[(0,s.jsx)(n(),{href:e,className:"text-sm !text-gray-500 transition-colors hover:!text-gray-900",onClick:i,children:t}),a]}));u.displayName="ui.LinkList.Item"},98560:function(e,t,a){"use strict";a.d(t,{gK:function(){return o},pT:function(){return P},aG:function(){return d},gN:function(){return u},At:function(){return m},Jb:function(){return c},bg:function(){return g},ZP:function(){return h},pR:function(){return x},kn:function(){return y},Bc:function(){return T},tI:function(){return C},VG:function(){return S},KS:function(){return A},rU:function(){return L},Mc:function(){return I},iG:function(){return M},Vp:function(){return O},nk:function(){return R},uq:function(){return Z}});var s=a(85893),i=a(67294),l=a(41664),n=a.n(l);let r={"derp-map-page":{title:"DERP map",path:"/derpmap/default"},"login-page":{title:"Login",path:"/login"},"start-oidc-page":{title:"Sign up with OIDC",path:"/start/oidc"},"start-page":{title:"Sign up",path:"/start"}},o=({id:e,title:t,font_weight:a,code:i})=>{let l=r[e];if(!l)throw Error(`Invalid auth_link id: ${e}`);return(0,s.jsx)(n(),{href:"https://login.tailscale.com"+l.path,className:`${"medium"===a?"!font-medium":"!font-bold"} !text-[#3b82f6] underline decoration-blue-50 underline-offset-4 hover:!text-[#2563eb] hover:!decoration-[#3b82f6] focus-visible:no-underline`,children:"true"===i?(0,s.jsx)("code",{children:t||l.title}):t||l.title})};o.displayName="ui.AuthLink";let d=e=>(0,s.jsx)("nav",{"aria-label":"breadcrumb",...e});d.displayName="ui.Breadcrumb";let c=e=>(0,s.jsx)("ol",{className:"flex min-w-0 flex-wrap items-center gap-2 text-sm font-medium",...e});c.displayName="ui.BreadcrumbList";let u=e=>(0,s.jsx)("li",{className:"inline-flex items-center gap-1.5",...e});u.displayName="ui.BreadcrumbItem";let p=({href:e,isLastCrumb:t,children:a})=>!t&&e?(0,s.jsx)(n(),{href:e,className:"transition-color cursor-pointer text-gray-600 hover:text-gray-800",children:a}):(0,s.jsx)("span",{role:"link","aria-disabled":"true","aria-current":"page",className:"text-gray-800",children:a});var m=p;p.displayName="ui.BreadcrumbLink";let g=()=>(0,s.jsx)("span",{role:"presentation","aria-hidden":"true",className:"text-gray-500",children:"âº"});g.displayName="ui.BreadcrumbSeparator";let h=i.memo(({href:e,target:t="_self",rel:a,children:i})=>(0,s.jsx)(n(),{href:e,target:t,rel:a,className:"!mt-4 inline-block !rounded !bg-[#497ede] !px-3 !py-1.5 !font-medium !text-white hover:!bg-[#4c77c7] hover:!text-white",children:i}));h.displayName="ui.ButtonLink";let f={"access-controls-file-page":{title:"Access controls",path:"/admin/acls
1/file"},"access-controls-page":{title:"Access controls",path:"/admin/acls"},"access-controls-preview-tab":{title:"Preview rules",path:"/admin/acls/preview"},"access-controls-visual-editor-tab":{title:"Visual editor",path:"/admin/acls/visual"},"apps-page":{title:"Apps",path:"/admin/apps"},"billing-page":{title:"Billing",path:"/admin/settings/billing"},"device-management-page":{title:"Device management",path:"/admin/settings/device-management"},"dns-page":{title:"DNS",path:"/admin/dns"},"domains-page":{title:"Domains",path:"/admin/settings/domains"},"home-page":{title:"admin console",path:"/admin"},"logs-configuration-page":{title:"Configuration logs",path:"/admin/logs"},"logs-network-page":{title:"Network flow logs",path:"/admin/logs/network"},"logs-page":{title:"Logs",path:"/admin/logs"},"machines-page-exit-node":{title:"Machines",path:"/admin/machines?q=property%3Aexit-node"},"machines-page-last-seen":{title:"Machines",path:"/admin/machines?q=version%3Aupdate-available+auto-update%3Aenabled+lastseen%3Aconnected"},"machines-page-locked-out":{title:"Machines",path:"/admin/machines?q=property%3Alocked-out"},"machines-page-needs-approval":{title:"Machines",path:"/admin/machines?q=disabled%3Aneeds-approval"},"machines-page-subnet":{title:"Machines",path:"/admin/machines?q=property%3Asubnet"},"machines-page-update-available":{title:"Machines",path:"/admin/machines?q=version%3Aupdate-available"},"machines-page-user-needs-approval":{title:"Machines",path:"/admin/machines/?q=disabled%3Auser-needs-approval"},"machines-page":{title:"Machines",path:"/admin/machines"},"mullvad-page":{title:"Configure Mullvad VPN",path:"/admin/settings/general/mullvad"},"pam-connectors-page":{title:"Connectors",path:"/admin/connectors"},"pam-sessions-page":{title:"Sessions",path:"/admin/logs/pam_sessions"},"pam-settings-page":{title:"PAM",path:"/admin/settings/pam"},"services-page":{title:"Services",path:"/admin/services"},"settings-contacts-preference-page":{title:"Contact preferences",path:"/admin/settings/contact-preferences"},"settings-general-page":{title:"General",path:"/admin/settings/general"},"settings-keys-page":{title:"Keys",path:"/admin/settings/keys"},"settings-trust-credentials-page":{title:"Trust credentials",path:"/admin/settings/trust-credentials"},"settings-page":{title:"General",path:"/admin/settings"},"settings-policy-file-management-page":{title:"Policy file management",path:"/admin/settings/policy-file-management"},"settings-webhooks-page":{title:"Webhooks",path:"/admin/settings/webhooks"},"user-management-page":{title:"User management",path:"/admin/settings/user-management"},"users-invited-page":{title:"Users",path:"/admin/users?q=status%3Ainvited"},"users-page":{title:"Users",path:"/admin/users"},"users-needsapproval-page":{title:"Users",path:"/admin/users?q=status%3Aneedsapproval"}},x=({id:e,title:t,font_weight:a,code:i})=>{let l=f[e];if(!l)throw Error(`Invalid console_link id: ${e}`);return(0,s.jsx)(n(),{href:"https://console.tailscale.com"+l.path,className:`${"medium"===a?"!font-medium":"!font-bold"} !text-[#3b82f6] underline decoration-blue-50 underline-offset-4 hover:!text-[#2563eb] hover:!decoration-[#3b82f6] focus-visible:no-underline`,children:"true"===i?(0,s.jsx)("code",{children:t||l.title}):t||l.title})};x.displayName="ui.ConsoleLink";var b=a(39332);function y({svg:e,className:t,alt:a}){return(0,s.jsx)("figure",{className:t,children:(0,s.jsx)("div",{className:"d2-diagram",style:{overflowX:"auto"},role:"img","aria-label":a,children:(0,s.jsx)("div",{dangerouslySetInnerHTML:{__html:e}})})})}a(92232),a(72503),a(43894),y.displayName="ui.D2Diagram";var v=a(25675),w=a.n(v);let T=({src:e,caption:t="",alt:a=t,className:i,title:l,link:n,width:r,height:o,attrlink:d,attr:c})=>(0,s.jsxs)("figure",{className:i,children:[l?(0,s.jsx)("h4",{className:"text-center font-medium",children:l}):null,n?(0,s.jsx)("a",{href:n,children:(0,s.jsx)(w(),{src:e,alt:a,width:r,height:o})}):(0,s.jsx)(w(),{src:e,alt:a,width:r,height:o}),t||c?(0,s.jsx)("figcaption",{children:(0,s.jsxs)("p",{className:"text-center",children:[t," ",(0,s.jsx)("a",{href:d,children:c})]})}):null]});T.displayName="ui.Figure";var k=a(90512);let C=({side:e})=>(0,s.jsx)("div",{className:(0,k.Z)("absolute inset-x-0 h-6 w-full from-white","top"===e?"top-0 bg-gradient-to-b to-90%":"bottom-0 bg-gradient-to-t to-90%")});C.displayName="ui.GradientBoundary";var _=a(32938),j=a(53882);let S="HeaderLink",A=i.memo(({children:e,level:t,id:a})=>{let i=`h${t}`,l=(0,_.Z)();return(0,s.jsx)(i,{id:a,className:"scroll-mt-40 md:scroll-mt-36",children:(0,s.jsxs)(n(),{href:`#${a}`,onClick:e=>{l(e);let t=e.currentTarget.href;navigator.clipboard.writeText(t)}
1,className:"group flex items-center gap-2",children:[(0,s.jsx)("span",{id:"inner-text",children:e}),(0,s.jsx)(j.kc,{})]})})});A.displayName=S;var N=a(12267);function D(e){return e?e.split(",").filter(Boolean):[]}function V(e,t){return e.category.localeCompare(t.category)||e.id.localeCompare(t.id)}let G={mdm:{anchor:"available-settings",items:N.CF,filters:N.c,headings:["Category","Policy key","Supported platforms"]}},P=({settingType:e})=>{let t=(0,b.useRouter)(),a=(0,b.useSearchParams)(),i=(0,b.usePathname)(),l=G[e]??null;if(!l)return(0,s.jsxs)("div",{className:"note relative mt-4 rounded border border-solid pb-2 pl-9 pr-3 pt-3 text-base leading-normal tracking-tight md:text-sm",children:[(0,s.jsx)("span",{className:"absolute left-3 top-3 inline-block h-[18px] w-[18px] text-orange-300",children:(0,s.jsx)(j.aN,{})}),(0,s.jsx)("p",{children:"There was an error while rendering the content for this section, please try again later."})]});let{anchor:r,items:o,filters:d,headings:c}=l,u=Object.fromEntries(d.map(e=>{let t=D(a?.get(e.key)??null);return[e.key,t]})),p=[...o].sort(V).filter(e=>d.every(t=>{let a=u[t.key];return!a?.length||t.matches(a,e)}));return(0,s.jsxs)("div",{children:[d.map(e=>{let l=u[e.key];return(0,s.jsxs)("div",{className:"mb-6",children:[(0,s.jsxs)("p",{className:"mb-2 text-base font-medium text-gray-600",children:["Filter by ",e.label]}),(0,s.jsx)("div",{className:"flex flex-wrap items-center gap-1.5",children:e.options.map(n=>{let o=l?.includes(n);return(0,s.jsx)("button",{type:"button",onClick:()=>(function(e,s){var l;let n=new URLSearchParams(a?.toString()),o=D(n.get(e)),d=(l=o.includes(s)?o.filter(e=>e!==s):[...o,s]).length?l.join(","):null;null===d?n.delete(e):n.set(e,d);let c=n.toString(),u=c?`${i}?${c}#${r}`:`${i}#${r}`;t.push(u,{scroll:!1})})(e.key,n),className:(0,k.Z)("rounded-lg border px-3 py-1.5 text-base",o?"border-gray-800 bg-gray-800 text-white":"border-gray-200 bg-gray-50 text-gray-800 hover:bg-gray-200"),children:n},n)})})]},e.key)}),(0,s.jsx)("div",{className:"mb-6 border-t border-gray-400"}),(0,s.jsxs)("table",{className:"table-auto text-left text-sm rtl:text-right",children:[(0,s.jsx)("thead",{children:(0,s.jsx)("tr",{children:c.map(e=>(0,s.jsx)("th",{children:e}))})}),(0,s.jsx)("tbody",{children:p.map(e=>(0,s.jsxs)("tr",{className:"border border-b border-solid hover:bg-gray-50",children:[(0,s.jsx)("td",{children:e.category}),(0,s.jsx)("td",{children:(0,s.jsx)(n(),{href:e.href,children:(0,s.jsx)("code",{children:e.id})})}),(0,s.jsx)("td",{children:Array.isArray(e.os)?e.os.join(", "):e.os})]},e.id))})]}),0===p.length&&(0,s.jsx)("p",{children:"No settings match your filters."}),(0,s.jsx)("div",{className:"mt-6 border-t border-gray-400"})]})},L=i.memo(({href:e,children:t})=>(0,s.jsx)(n(),{href:e,className:"!font-medium !text-[#3b82f6] underline decoration-blue-50 underline-offset-4 hover:!text-[#2563eb] hover:!decoration-[#3b82f6] focus-visible:no-underline",children:t}));L.displayName="ui.Link";var I=a(62044);let M=i.memo(({id:e})=>(0,s.jsx)("span",{id:e}));M.displayName="ui.PermanentAnchor";let O=i.memo(({children:e})=>(0,s.jsx)("span",{className:"relative -top-px ml-1 inline-flex items-center justify-center rounded-full bg-yellow-50 px-2 py-1 text-xs font-medium leading-none text-yellow-600",children:e}));O.displayName="ui.Tag";var E=a(90834);let U={"video-get-started":"sPdvyR7bLqI","video-border0-get-started":"2760wCNI4Pc","video-pam-get-started":"rvYO9VgXlk4","video-serve-funnel":"MpxmfpCl20c","video-tailscale-ssh":"08clF9srJ2k","video-docker-deep-dive":"tqvvZhGrciQ","video-docker-quickstart":"YTjYXii4WzI","video-tsexplained-subnet-routers":"UmVMaymH1-s","video-pikvm":"Btqw56DFhro","video-cloud-init-part1":"e-X5FJwrkaA","video-subnet-routers":"UmVMaymH1-s","video-macos-quickstart":"vkZwu7I4tcY","video-acls":"Jn8_Sh4r8d4","video-synology":"0o2EhK-QvmY","video-exit-nodes":"Ad7D2pkFNdA","video-how-to-proxmox-lxc":"JC63OGSzTQI","video-tailnet-lock":"G6ReHlan2EA","video-peer-relays":"wkBSjT1hO6k"},R=i.memo(({id:e,title:t="Video",hasNote:a=!1,customNote:i="The following related video provides additional context and examples."})=>{let l=U[e];if(!l)throw Error(`Invalid video id: ${e}`);return(0,s.jsxs)(s.Fragment,{children:[a?(0,s.jsx)(E.j,{children:i}):null,(0,s.jsx)("figure",{children:(0,s.jsx)("iframe",{src:`https://www.youtube.com/embed/${l}?rel=0`,title:t,allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:!0})})]})});R.displayName="ui.Video";let Z=()=>(0,s.jsx)(n(),{href:"https://my.tailscale.com",className:"!font-medium !text-[#3b82f6] underline decoration-blue-50 underline-offset-4 hover:!text-[#2563eb] hover:!decoration-[#3b82f6] focus-visible:no-underline",children:"browser client"});Z.displayName="ui.WebClientLink"},51394:function(e,t,a){"use strict";var s=a(85893);t.Z=({onClick:e})=>(0,s.jsxs)("button",{className:" group flex items-center gap-[11px] rounded-lg bg-gray-900 px-[17px] py-2 font-medium text-white","aria-label":"load more",type:"button",onClick:e,children:[(0,s.jsx)("span",{children:"Load More"}),(0,s.jsx)("span",{className:"transition-transform duration-300 group-hover:translate-y-[2px]",children:(0,s.jsxs)("svg",{width:"17",height:"18",viewBox:"0 0 17 18",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,s.jsx)("g",{clipPath:"url(#clip0_272_67395)",children:(0,s.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M3.83531 10.428L8.64031 15.233L13.4453 10.428L12.5023 9.48
1603L9.30731 12.681L9.30731 2.95703L7.97331 2.95703L7.97331 12.681L4.77831 9.48603L3.83531 10.428Z",fill:"white"})}),(0,s.jsx)("defs",{children:(0,s.jsx)("clipPath",{id:"clip0_272_67395",children:(0,s.jsx)("rect",{width:"16",height:"17",fill:"white",transform:"translate(0.5 0.59375)"})})})]})})]})},9055:function(e,t,a){"use strict";var s=a(85893),i=a(41664),l=a.n(i),n=a(79889),r=a(51727);t.Z=({preview:e,slug:t,logos:a,industry:i})=>(0,s.jsxs)(l(),{target:e?.isExternalLink?"_blank":"_self",href:e?.isExternalLink?e?.externalLink:`/customers/${t.current}`,className:"group flex h-full flex-col rounded-[10px] bg-gray-50 p-2","data-track":"Link Clicked","data-track-properties":`{"label": "${e?.title}"}`,children:[(0,s.jsx)("div",{className:"flex aspect-[384/246] w-full flex-[1_0_246px] items-center justify-center rounded-[10px] bg-gray-900 p-6",children:(0,s.jsx)(n.Z,{image:a?.lightLogo,className:"max-h-[50px] w-full max-w-[55%]"})}),(0,s.jsxs)("div",{className:"mt-6 flex h-full flex-col justify-between px-2 pb-4 lg:px-[22px] lg:pb-8",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"t-subheading text-subheading-black",children:i}),(0,s.jsx)("h3",{className:" t-24 mt-2 line-clamp-3 !font-normal text-heading-black sm:mt-5 lg:mt-8",children:e?.title})]}),(0,s.jsx)("div",{className:"mt-4 text-heading-black md:mt-6",children:(0,s.jsx)(r.IS,{textLink:{link:{title:"Find out more"},textLinkOptions:{arrowColor:"black"}}})})]})]})},27390:function(e,t,a){"use strict";a.d(t,{Z:function(){return v}});var s=a(85893),i=a(67294),l=a(29985),n=a(39603),r=a(16893),o=a(25134),d=a(90512),c=a(18693);let u=({slide:e,activeSlide:t,slideDuration:a,setActiveSlide:i,i:l,isInViewOnce:n,windowWidth:r})=>{let c=r<768,u=!c&&"position";return(0,s.jsxs)(o.E.button,{layout:!c,"aria-label":e.heading,type:"button",transition:{layout:{duration:.3}},onClick:()=>i(l),className:(0,d.Z)("relative flex flex-1 text-left",t===l?"md:flex-[1_1_620px]":"hidden md:flex md:flex-[1_1_290px]"),children:[(0,s.jsx)(o.E.div,{layout:u,className:"absolute left-0 right-0 top-0 h-px w-full overflow-hidden bg-heading-black/20",children:t===l&&n&&(0,s.jsx)(o.E.div,{initial:{x:"-100%"},animate:{x:"0%"},transition:{duration:a,ease:"easeInOut"},className:"absolute inset-0 h-full w-full bg-green-600"})}),(0,s.jsxs)(o.E.div,{layout:u,className:"mt-[17px] flex max-w-[549px] flex-col",children:[(0,s.jsx)(o.E.div,{initial:{opacity:c?0:1},animate:{opacity:t===l?1:c?0:1},transition:{opacity:{duration:t===l?.5:0,delay:t===l?.3:0}},layout:u,className:"t-24",children:e.heading}),(0,s.jsx)(o.E.div,{layout:u,initial:{opacity:0}
1,animate:{opacity:t===l?1:0},transition:{opacity:{duration:t===l?.5:0,delay:t===l?.3:0}},className:"t-b18 mt-3 text-heading-black/80 md:mt-6",dangerouslySetInnerHTML:{__html:e.content}})]})]})};var p=a(79645),m=a(79825),g=a(4002),h=a(58868),f=a(41017),x=a(79889);function b({image:e,i:t,scrollY:a}){let l=(0,i.useRef)(null),n=30;(3===t||5===t||6===t||8===t)&&(n=-30);let r=function(e,t,a){let[s,l]=(0,i.useState)(0),[n,r]=(0,i.useState)(0),o=(0,m.H)(a,[s-n,s+t],[t,-t]),d=(0,g.q)(o,{type:"spring",damping:20,mass:1,restSpeed:.005,restDelta:.005});return(0,h.L)(()=>{let t=e.current,a=()=>{l(t.getBoundingClientRect().top+window.scrollY||window.pageYOffset),r(window.innerHeight)};return a(),window.addEventListener("resize",a),()=>window.removeEventListener("resize",a)},[e]),d}(l,n,a);return(0,s.jsx)(o.E.div,{ref:l,style:{y:r},className:(0,d.Z)("absolute hidden w-[20%] max-w-[198px] xs:w-[14%] md:block lg:w-auto",0===t&&"left-0 right-0 top-[-5%] mx-auto md:top-[3%]",1===t&&"bottom-[-16%] left-[-14%]",2===t&&"right-[5%] top-[8%]",3===t&&"bottom-[13%] left-[6%] hidden md:block",4===t&&"bottom-[-10%] left-[28%]",5===t&&"right-[-8%] top-[40%] hidden md:block",6===t&&"bottom-[2%] right-[30%]",7===t&&"bottom-[-8%] right-[3%]",8===t&&"left-[-3%] top-[6%]"),children:(0,s.jsx)(x.Z,{image:e})})}let y={logoGrid:n.Z,asset:l.Z,assetSlider:e=>{let{slides:t}=e,[a,n]=(0,i.useState)(0),d=(0,i.useRef)(null),p=(0,i.useRef)(null),m=(0,i.useRef)(null),g=(0,r.Y)(p,{once:!1,amount:.4}),h=(0,r.Y)(m,{once:!0,amount:.4}),f=(0,i.useCallback)(()=>{n(e=>(e+1)%t.length)},[t.length]);(0,i.useEffect)(()=>(g?d.current=setTimeout(f,12e3):clearTimeout(d.current),()=>clearTimeout(d.current)),[a,g,f]);let x=e=>{n(e),clearTimeout(d.current),d.current=setTimeout(f,12e3)},{width:b}=(0,c.Z)();return(0,s.jsxs)("div",{ref:p,children:[(0,s.jsx)("div",{className:"relative aspect-[1280/560] w-full",children:t?.map((e,t)=>s.jsx(o.E.div,{initial:{opacity:0}
1,animate:{opacity:a===t?1:0},transition:{duration:.3},className:"absolute inset-0 h-full w-full [&>img]:h-full [&>img]:w-full [&>img]:object-cover lg:[&>img]:h-auto lg:[&>img]:w-full",children:s.jsx(l.Z,{...e?.asset})},e?._key))}),(0,s.jsx)(o.E.div,{ref:m,className:"mt-6 flex gap-5 overflow-hidden xl:gap-10",children:t?.map((e,t)=>s.jsx(u,{i:t,slide:e,slideDuration:12,activeSlide:a,setActiveSlide:x,isInViewOnce:h,windowWidth:b},e?._key))})]})},logosCta:function({textCard:e,logos:t}){let{scrollY:a}=(0,p.v)();return(0,s.jsxs)("div",{className:(0,d.Z)("relative flex items-center justify-center overflow-hidden rounded-2xl bg-blue-50 px-6 py-14 sm:py-20 md:min-h-[537px] lg:p-8"),children:[(0,s.jsx)(f.W,{...e}),t&&t.map((e,t)=>(0,s.jsx)(b,{image:e,i:t,scrollY:a},`logoparallax-${t}`))]})}};var v=e=>{let{mediaComponent:t,variant:a,gradientColor:l,heading:n,...r}=e,o=y[t];return o&&(0,s.jsx)(i.Fragment,{children:(0,s.jsx)(o,{...r[t],variant:a,gradientColor:l,heading:n})},`${t}`)}},36144:function(e,t,a){"use strict";var s=a(85893),i=a(67294),l=a(90512),n=a(17206),r=a(90698),o=a(31304),d=a.n(o),c=a(32938);let u=e=>{let t=["h2","h3"],a=e.filter(e=>"block"===e._type&&t.includes(e.style));return a?.map(e=>{let t=n.Kv(e),a=Number(e.style.replace("h","")),s=d()(t,{lower:!0,strict:!0});return{text:t,level:a,slug:s}})},p=e=>{let t=/^(#{2,})\s+(.*)/gm,a=[],s=null;for(;null!==(s=t.exec(e));){let e=s[1]?.length,t=s[2];if(!e||!t)continue;let i=d()(t,{lower:!0,strict:!0});a.push({level:e,text:t,slug:i})}return a},m=e=>{let t=(0,r.parse)(e).querySelectorAll("h2, h3");return t?.map(e=>{let{id:t,text:a}=e;return{text:a,level:Number(e.rawTagName.replace("h","")),slug:t}})};t.Z=({flexContent:e,markdownContent:t,htmlContent:a,disableInitial:n})=>{let r=(0,i.useMemo)(()=>e?u(e):t?p(t):a?m(a):[],[e,t,a]),o=r[0],d=n?null:o?o.slug:null,[g,h]=(0,i.useState)(d),[f,x]=(0,i.useState)(!1);(0,i.useEffect)(()=>{let e=()=>{if(f)return;let e=g;r.forEach(t=>{let a=document.getElementById(t.slug);if(a){let s=a.getBoundingClientRect();s.top>=0&&s.top<=window.innerHeight/2&&(e=t.slug)}}),e!==g&&h(e)};return window.addEventListener("scroll",e,{passive:!0}),()=>window.removeEventListener("scroll",e)},[r,g,f]);let b=(0,c.Z)(),y=(0,i.useCallback)(e=>{h(e.currentTarget.hash?.slice(1)||""),x(!0),b(e),setTimeout(()=>{x(!1)},800)},[b]);return(0,s.jsx)("nav",{className:"table-of-content t-18 mb-[95px] hidden space-y-4 md:block",children:r?.map(e=>{let t=e.slug;return s.jsx("a",{href:`#${t}`,className:l.Z("block text-start",g===t?"text-gray-900":"text-gray-500"),"data-anchor-level":e.level,onClick:y,children:e.text},t)})})}},18273:function(e,t,a){"use strict";a.d(t,{O:function(){return tr}});var s=a(85893),i=a(67294),l=a(41017),n=a(29985),r=a(90512),o=a(79889),d=a(86447),c=a(21974),u=a(79645),p=a(79825),m=a(20098),g=a(4002),h=a(25134),f=a(18693),x=a(51727),b=a(41664),y=a.n(b);let v=[{yStart:20,yEnd:-50},{yStart:50,yEnd:150},{yStart:130,yEnd:100},{yStart:-20,yEnd:200},{yStart:150,yEnd:200},{yStart:50,yEnd:150}],w={yStart:0,yEnd:100},T=({item:e,i:t,scrollYProgress:a,windowWidth:i})=>{let{yStart:l,yEnd:n}=v[t]||w;i<768&&(l/=2,n/=2);let d=(0,p.H)(a,[0,1],[l,n]),c=(0,g.q)(d,{damping:20,stiffness:150});return(0,s.jsx)(h.E.div,{style:{y:c},className:(0,r.Z)("flex flex-[1_1_208px] flex-col gap-2 sm:gap-[10px] ",t>2&&"hidden lg:flex"),children:e?.scrollItem?.logos?.map((e,a)=>s.jsx("div",{className:r.Z("customer-logo overflow-hidden rounded-md bg-white will-change-transform",e?.backgroundColor==="#AAC6F1"?"dark-colored-logo":e?.backgroundColor==="#DEE8F6"?"light-colored-logo":""),children:s.jsx(o.Z,{image:e?.logo?.asset,className:"mx-auto"})},`scrollItem-${t}-${a}`))})},k={sliderMasthead:function({heading:e,textCard:t,asset:a}){return(0,s.jsxs)("div",{className:"space-y-10 pt-24 lg:space-y-[115px] lg:pt-[150px]",children:[(0,s.jsx)("div",{className:"container",children:(0,s.jsxs)("div",{className:"flex flex-col justify-between gap-5 lg:flex-row lg:items-end",children:[(0,s.jsx)("h1",{className:"w-full text-center lg:max-w-[750px] lg:text-left",children:(0,s.jsxs)("span",{className:"t-72 font-medium",children:[e?.LineOne,(0,s.jsx)("span",{className:"block",children:e?.LineTwo})]})}),(0,s.jsx)(l.W,{...t,breakpoint:1028,className:"mx-auto md:max-w-[441px] lg:mx-0"})]})}),(0,s.jsx)("div",{className:"relative mx-auto w-full max-w-[1360px] overflow-hidden rounded-2xl bg-gray-900 will-change-transform md:aspect-[1360/725]",children:(0,s.jsx)(n.x,{...a})})]})},twoColumnMasthead:function({asset:e,textCard:t,options:{imageBleed:a=!1}={}}){return a?(0,s.jsxs)("div",{className:"flex flex-col items-center justify-between gap-10 pt-8 md:flex-row md:pt-0 md:pt-0 lg:gap-20",children:[(0,s.jsx)("div",{className:"w-full max-w-[531px] shrink-0",children:(0,s.jsx)(l.W,{...t})}),(0,s.jsx)("div",{className:"mr-[-4%] w-full md:mr-[-14%] md:max-w-[70%]",children:(0,s.jsx)("div",{className:"relative flex aspect-[823/620] max-h-[620px] w-full items-center gap-3 md:gap-5",children:(0,s.jsx)(n.x,{priority:!0,...e})})})]}):(0,s.jsxs)("div",{className:"grid items-center gap-10 pt-8 md:grid-cols-2 md:pt-0",children:[(0,s.jsx)(l.W,{...t}),(0,s.jsx)(n.x,{priority:!0,...e})]})},oneColumnMasthead:function({backgroundImage:e,textCard:t,variant:a}){return(0,s.jsxs)("div",{className:"relative",children:[(0,s.jsx)("div",{className:(0,r.Z)("container","compare"===a?"pb-[200px] pt-8 sm:pb-[310
1px] lg:pb-[290px] lg:pt-[67px]":""),children:(0,s.jsx)(l.W,{...t})}),(0,s.jsx)("div",{className:(0,r.Z)("is-wide container pointer-events-none inset-x-0 bottom-0 !px-0","features"===a?"mt-[63px] block scale-[1.2] md:translate-y-4":"absolute"),children:(0,s.jsx)(o.Z,{priority:!0,image:e,className:"mx-auto w-full"})})]})},scrollMasthead:function({heading:e,subheading:t,content:a,scrollItems:l}){let n=(0,i.useRef)(null),[r,o]=(0,c.H)(),{width:g}=(0,f.Z)(),{scrollY:h}=(0,u.v)({target:n,offset:["start center","end start"]}),b=(0,p.H)(h,[0,1e3],[0,1]);return(0,i.useEffect)(()=>{o(".dark-colored-logo",{background:"#85AAF5"},{duration:.2,delay:(0,m.E)(.05,{from:"center"})}),o(".light-colored-logo",{background:"#CEDEFD"},{duration:.2,delay:(0,m.E)(.05,{from:"center"})})},[o]),(0,s.jsxs)("div",{ref:r,className:"relative overflow-hidden rounded-[15px] bg-blue-900 px-5 pt-12 md:pt-[116px]",children:[(0,s.jsxs)("div",{ref:n,className:"mx-auto flex w-full max-w-[1136px] flex-col justify-between gap-10 gap-y-5 md:flex-row md:items-center",children:[(0,s.jsxs)("div",{className:"max-w-[610px] shrink-0",children:[t&&(0,s.jsx)("div",{className:"t-subheading mb-4 !text-subheading-white",children:t}),(0,s.jsx)("h1",{className:"t-h3 text-white",children:e})]}),(0,s.jsxs)("div",{children:[a&&(0,s.jsx)("div",{className:"t-b20 max-w-[400px] text-body-white",children:(0,s.jsx)(d.Z,{content:a})}),(0,s.jsx)(y(),{href:"/customers/#all-customers","data-track":"Link Clicked","data-track-properties":'{"label": "See all customers"}',children:(0,s.jsx)(x.ZP,{className:"mt-5",button:{link:{title:"See all customers"},buttonOptions:{addArrow:!0,arrowDirection:"down",color:"white"}}})})]})]}),(0,s.jsx)("div",{className:"mt-6 sm:mt-12 lg:mt-[140px]",children:(0,s.jsx)("div",{className:"-mb-12 flex w-full gap-2 sm:gap-[10px]",children:l?.scrollItemsCol.map((e,t)=>s.jsx(T,{item:e,i:t,scrollYProgress:b,windowWidth:g},`scrollRow-${t}`))})}),(0,s.jsx)("div",{className:"absolute inset-x-0 bottom-0 h-[239px] rounded-b-[15px] bg-gradient-to-t from-blue-900"})]})},splitTextMasthead:e=>{let{subheading:t,heading:a,button:i,asset:l,content:r}=e;return(0,s.jsxs)("div",{className:"pt-8 md:pt-0",children:[(0,s.jsx)("div",{className:"container",children:(0,s.jsxs)("div",{className:"mx-auto flex w-full max-w-[1211px] flex-col justify-between gap-6 md:flex-row md:items-center",children:[(0,s.jsxs)("div",{className:"max-w-[654px] flex-1",children:[(0,s.jsx)("div",{className:"t-18 text-blue-200",children:t}),(0,s.jsx)("h1",{className:"t-72 mt-4 text-white",children:a})]}),(0,s.jsxs)("div",{className:"max-w-[464px] flex-1",children:[(0,s.jsx)("div",{className:"t-b18 text-white/70",dangerouslySetInnerHTML:{__html:r}}),i.link&&(0,s.jsx)("div",{className:"mt-[25px]",children:(0,s.jsx)(y(),{href:i.link?.url,children:(0,s.jsx)(x.ZP,{button:i})})})]})]})}),(0,s.jsx)("div",{className:"mx-auto mt-12 max-w-[1440px] md:mt-[100px]",children:(0,s.jsx)(n.Z,{priority:!0,...l})})]})}};var C=e=>{let{layout:t,...a}=e,i=k[t];return i&&(0,s.jsx)(i,{...a[t]},`${t}`)},_=a(27390),j=a(97005),S=a(39846);let A=({heading:e,headingUrl:t,headingBadge:a,content:i,columnSpan:l,asset:n,layout:o,theme:c})=>(0,s.jsx)("div",{className:(0,r.Z)("relative flex flex-col rounded-xl p-8 transition-all duration-[200ms] hover:shadow-[0_4px_10px_rgba(0,0,0,0.1)]",i?2===l?"md:col-span-2":"md:col-span-3":"md:col-span-6","dark"===c?"bg-gray-700 hover:bg-gray-600":"border border-solid border-gray-1000/10 bg-white hover:bg-gray-50"),children:(0,s.jsxs)("div",{children:[(0,s.jsxs)("h4",{className:(0,r.Z)("t-h6 flex items-center gap-2","dark"===c?"text-white":"text-heading-black"),children:[t?(0,s.jsx)(y(),{href:t,className:"block-link underline underline-offset-4","data-track":"Link Clicked","data-track-properties":`{"label": "${e}"}`,children:e}):e," ",a&&(0,s.jsx)(D,{children:a})]}),i&&(0,s.jsx)("div",{className:(0,r.Z)("t-b18 mt-3 border-t pt-[15px] sm:mt-[25px]","dark"===c?"border-gray-600 !text-white/80 [&_a]:text-white/80":"border-gray-300 text-gray-700"),children:(0,s.jsx)(d.Z,{content:i})})]})}),N=({heading:e,headingUrl:t,headingBadge:a,content:l,asset:o,layout:c,theme:u})=>{let[p,m]=(0,i.useState)(!1);return(0,s.jsxs)("div",{className:(0,r.Z)("relative flex flex-col overflow-hidden rounded-xl transition-all duration-[200ms] hover:shadow-[0_4px_10px_rgba(0,0,0,0.1)] md:flex-row md:gap-8","full"===c&&"col-span-full md:p-8 md:pb-0","split"===c&&"p-0 sm:col-span-2 md:col-span-3","dar
1k"===u?"bg-gray-700 hover:bg-gray-800":"border border-solid border-gray-1000/10 bg-white hover:bg-gray-50"),onMouseEnter:()=>m(!0),onMouseLeave:()=>m(!1),children:[(0,s.jsx)("div",{className:(0,r.Z)("md:order-last md:self-end","split"===c&&"h-full shrink grow basis-2/4"),children:o&&(0,s.jsx)(n.Z,{...o,className:(0,r.Z)("split"===c&&"m-0 h-full w-full object-cover")})}),(0,s.jsxs)("div",{className:(0,r.Z)("p-8 md:basis-[18em]","full"===c&&"md:p-0 md:pb-8"),children:[e&&(0,s.jsxs)("h4",{className:(0,r.Z)("t-h6 flex items-center gap-2","dark"===u?"text-white":"text-heading-black"),children:[e,a&&(0,s.jsx)(D,{children:a})]}),l&&(0,s.jsx)("div",{className:(0,r.Z)("t-b18 mb-6 mt-3 border-t pt-[15px] md:border-0","dark"===u?"border-gray-700 text-white/70":"border-gray-300 text-gray-700"),children:(0,s.jsx)(d.Z,{content:l})}),t&&(0,s.jsx)(y(),{href:t,className:"block-link","data-track":"Link Clicked","data-track-properties":`{"label": "Learn more about ${e}"}`,children:(0,s.jsx)(x.IS,{hovered:p,textLink:{link:{title:"Learn more"},textLinkOptions:{arrowColor:"dark"===u?"white":"black"}}})})]})]})},D=({children:e})=>(0,s.jsx)("span",{className:"rounded-[50px] bg-yellow-100 px-3 py-[2px] text-sm font-medium tracking-tight text-yellow-600 md:text-base",children:e}),V=e=>({left:"justify-start !pl-0",center:"justify-center",right:"justify-end !pr-0",top:"!justify-start !pt-0",bottom:"justify-end !pb-0"})[e]||"justify-center",G=e=>({top:"items-start !pt-0",center:"items-center",bottom:"items-end !pb-0",left:"items-start !pl-0",right:"items-end !pr-0"})[e]||"items-center",P=e=>({"605-500":"xl:aspect-[605/500] md:max-w-[605px] xl:min-h-[500px] "})[e];var L=a(36144),I=a(55529);function M({heading:e,content:t,icon:a,asset:i,icon_inline:l,link:d,textAlignment:c="center",background:u}){let p=l||a;return(0,s.jsxs)(O,{link:d,className:(0,r.W)("flex flex-col gap-2 overflow-hidden rounded-xl",c&&`text-${c}`,(0,S.Z)(u?.color||"grey2")),children:["image"in i&&(0,s.jsx)("div",{className:"flex justify-center",children:(0,s.jsx)(n.x,{...i,className:"w-full"})}),(0,s.jsxs)("div",{className:(0,r.W)(p?"px-5 pb-8 pt-6 md:px-[37px] md:pb-[44px] md:pt-[76px]":"p-2"),children:[(0,s.jsxs)("div",{className:(0,r.W)("flex flex-col gap-5",!p&&"flex-col","center"===c&&"items-center justify-center"),children:[a&&(0,s.jsx)(o.Z,{image:a,className:"max-w-[]"}),e&&(0,s.jsx)("h4",{className:"t-24 text-heading-black",children:e})]}),t&&(0,s.jsx)("div",{className:(0,r.W)("mx-auto mt-[10px]",p&&"md:max-w-[380px]",e?"t-16 text-subheading-black md:mt-[10px]":"t-20 !leading-[1.35] !tracking-[-0.4px] text-heading-black md:mt-[30px]"),dangerouslySetInnerHTML:{__html:t}})]})]})}let O=({children:e,link:t,className:a=""})=>t?(0,s.jsx)(y(),{className:`${a} transition-transform duration-300 ease-in-out will-change-transform hover:-translate-y-2`,href:t,children:e}):(0,s.jsx)("div",{className:a,children:e});var E=function({stats:e}){return(0,s.jsx)("div",{className:"grid gap-8 sm:grid-cols-3 lg:gap-10",children:e&&e.map((e,t)=>(0,i.createElement)(U,{...e,key:`stat-${t}`}))})};function U({stat:e,content:t}){return(0,s.jsxs)("div",{className:"text-center",children:[(0,s.jsx)("h4",{className:"t-h1",children:e}),t&&(0,s.jsx)("div",{className:"t-b18 mt-4 text-subheading-black",dangerouslySetInnerHTML:{__html:t}})]})}let R=({stat:e,content:t,image:a})=>(0,s.jsxs)("div",{className:" relative flex-auto overflow-hidden rounded-xl border border-gray-0 bg-gray-50 px-6 py-8 lg:flex-1",children:[a&&(0,s.jsx)("div",{className:"absolute bottom-0 right-0 top-0 w-full max-w-[35%]",children:(0,s.jsx)(o.Z,{image:a,className:"h-full w-full"})}),(0,s.jsx)("div",{className:"t-48 relative !font-normal",children:e}),(0,s.jsx)("div",{className:"relative mt-3",children:t})]}),Z={cards:function({cards:e,icon_inline:t}){let a=e.length,l="md:grid-cols-3";return 2===a&&(l=""),4===a&&(l="lg:grid-cols-4"),(0,s.jsx)("div",{className:(0,r.W)("grid gap-8 sm:grid-cols-2 lg:gap-10",l),children:e&&e.map((e,a)=>(0,i.createElement)(M,{...e,icon_inline:t,key:`card-${a}-${e?.heading}`}))})},stats:E,iconStats:e=>{let{icon:t,textCard:a,secondaryHeading:i,stats:n}=e;return(0,s.jsxs)("div",{children:[t&&(0,s.jsx)("div",{className:"mb-6 flex justify-center",children:(0,s.jsx)(o.Z,{image:t})}),a&&(0,s.jsx)(l.Z,{...a}),i&&(0,s.jsx)("div",{className:"t-24 mt-10 text-center font-medium text-heading-black/80 md:mt-20",children:i}),n?.length>0&&(0,s.jsx)("div",{className:"mt-12 flex w-full flex-wrap gap-4 md:mt-[120px] md:gap-6",children:n?.map(e=>s.jsx(R,{...e},e?._key))})]})},features:e=>{let{features:t,featuresHeading:a,theme:l="dark"}=e,n=t.filter(e=>!e.asset).length%2==0?3:2,o=2===t.filter(e=>e.asset).length?"split":"full",d=t.filter(e=>e.content).length;return(0,s.jsxs)("div",{children:[a&&(0,s.jsx)("h3",{className:(0,r.Z)("mb-6 text-2xl font-medium tracking-tight sm:text-4xl","dar
1k"===l?"text-white":"text-heading-black"),children:a}),(0,s.jsx)("div",{className:(0,r.Z)("grid sm:grid-cols-2 md:grid-cols-6",d?"gap-8":"gap-3"),children:t&&t.map((e,t)=>e.asset?(0,i.createElement)(N,{...e,theme:l,layout:0===t?o:"split",key:`feature-${e._key}`}):(0,i.createElement)(A,{...e,theme:l,columnSpan:n,key:`feature-${e._key}`}))})]})},twoColTextAsset:e=>{let{text:t,asset:a,options:i}=e,{reverse:r,reverseMobile:o,addBackgroundColor:d}=i||{};return(0,s.jsxs)("div",{className:`flex items-center justify-between gap-6 gap-y-8 ${o?"flex-col-reverse":"flex-col"} ${r?"md:flex-row-reverse":"md:flex-row"}`,children:[(0,s.jsx)("div",{className:` w-auto flex-1 md:max-w-[516px] ${r?"xl:mr-3":"xl:ml-3"}`,children:(0,s.jsx)(l.Z,{...t,innerClasses:` ${r?"ml-auto":"mr-auto"}`,breakpoint:890})}),(0,s.jsx)("div",{className:`h-full w-full flex-1 flex-col 2 3 ${G(i?.horizontalAlignment||"center")} ${V(i?.verticalAlignment||"center")} 4 ${d?"px-4 py-20":""} ${i?.fullWidth?"!px-0":""} ${(0,S.Z)(d?i?.backgroundColor?.color:"none")} ${P(i?.aspectRatio)} flex `,children:a&&(0,s.jsx)(n.Z,{...a,alignment:i?.horizontalAlignment,className:`${i?.fullWidth?"w-full":" "}`})})]})},downloadCta:e=>{let{icon:t,logos:a,options:i,textCard:n}=e;return(0,s.jsxs)("div",{className:(0,r.Z)("relative mx-auto max-w-[1360px] rounded-[20px] pb-12 pt-20 md:pb-[110px] md:pt-[125px]",(0,S.Z)(i?.backgroundColor?.color)),children:[(0,s.jsx)("div",{className:"container !px-5",children:(0,s.jsxs)("div",{className:" mx-auto w-full max-w-[1062px]",children:[t&&(0,s.jsx)(o.Z,{image:t,className:"mx-auto mb-8 md:mb-[70px]"}),(0,s.jsx)(l.Z,{...n}),(0,s.jsxs)("div",{className:"relative mt-12 md:mt-20",children:[(0,s.jsx)(j.Z,{speed:40,direction:"left",children:a.map((e,t)=>(0,s.jsx)("div",{className:"flex items-center justify-center",children:(0,s.jsx)(o.Z,{image:e,className:"mx-auto"})},t))}),(0,s.jsx)("div",{className:"absolute bottom-[20%] left-0 top-[20%] z-[10] h-[60%] w-[10%] bg-gradient-to-r from-green-900/100 to-green-900/0 "}),(0,s.jsx)("div",{className:"absolute bottom-[20%] right-0 top-[20%] z-[10] h-[60%] w-[10%] bg-gradient-to-l from-green-900/100 to-green-900/0 "})]})]})}),(0,s.jsx)("div",{className:"absolute bottom-0 left-0 right-0 w-full",children:(0,s.jsxs)(h.E.svg,{initial:"initial",whileInView:"inView",viewport:{once:!0,amount:.4},width:"100%",height:"100%",viewBox:"0 0 1360 241",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,s.jsx)(h.E.ellipse,{variants:{initial:{opacity:0,y:20},inView:{opacity:.3,y:0,transition:{opacity:{duration:.4},type:"spring",damping:20,stiffness:200,delay:.4}}},opacity:"0.3",cx:"679.5",cy:"685",rx:"739.5",ry:"605.5",fill:"#0D4B3B"}),(0,s.jsx)(h.E.path,{variants:{initial:{opacity:0,y:20},inView:{opacity:.3,y:0,transition:{opacity:{duration:.4},type:"spring",damping:20,stiffness:200,delay:.2}}},opacity:"0.3",d:"M1478 685C1478 1045.92 1120.5 1338.5 679.5 1338.5C238.501 1338.5 -119 1045.92 -119 685C-119 324.082 238.501 31.5 679.5 31.5C1120.5 31.5 1478 324.082 1478 685ZM-89.733 685C-89.733 1032.69 254.664 1314.55 679.5 1314.55C1104.34 1314.55 1448.73 1032.69 1448.73 685C1448.73 337.31 1104.34 55.4524 679.5 55.4524C254.664 55.4524 -89.733 337.31 -89.733 685Z",fill:"#0D4B3B"}),(0,s.jsx)(h.E.path,{variants:{initial:{opacity:0,y:20},inView:{opacity:.3,y:0,transition:{opacity:{duration:.4},type:"spring",damping:20,stiffness:200,delay:0}}},opacity:"0.3",d:"M1540 705C1540 1094.08 1154.74 1409.5 679.5 1409.5C204.259 1409.5 -181 1094.08 -181 705C-181 315.915 204.259 0.5 679.5 0.5C1154.74 0.5 1540 315.915 1540 705ZM-172.395 705C-172.395 1090.19 209.011 1402.46 679.5 1402.46C1149.99 1402.46 1531.4 1090.19 1531.4 705C1531.4 319.806 1149.99 7.54498 679.5 7.54498C209.011 7.54498 -172.395 319.806 -172.395 705Z",fill:"#0D4B3B"})]})})]})},blockEditor:e=>{let{content:t}=e,a=["h2","h3"],i=t&&t?.length>0&&t.find(e=>"block"===e._type&&a.includes(e.style));return(0,s.jsxs)("div",{className:"flex justify-between gap-5",children:[i&&(0,s.jsx)("div",{className:"hidden max-w-[206px] flex-1 md:block",children:(0,s.jsx)("div",{className:"sticky top-20",children:(0,s.jsx)(L.Z,{flexContent:t})})}),(0,s.jsx)("div",{className:(0,r.Z)("max-w-[950px] flex-1",!i&&"mx-auto"),children:(0,s.jsx)("div",{className:"mx-auto w-full max-w-[730px]",children:t&&t?.length>
40&&(0,s.jsx)(I.Z,{richContent:t,className:"underline-link normal-ordered-list fade-links"})})})]})}};var H=e=>{let{contentComponent:t,...a}=e,i=Z[t];return i&&(0,s.jsx)(i,{...a[t]},`${t}`)},B=a(50532),z=a(25675),q=a.n(z);function W({image:e,fill:t=!1,className:a,setParentLoadingComplete:l,parentLoadingComplete:n,priority:r,...o}){let[d,c]=(0,i.useState)(!1);if(!e||!e.url)return null;let u=()=>{l?l(!0):c(!0)};return t?(0,s.jsx)(q(),{src:e.url,fill:!0,sizes:"(max-width: 768px) 100vw, (max-width: 1200px) 50vw, 33vw",alt:e.alt||e.title||"",className:`${a} ${d||n?"opacity-100":"opacity-0"} transition-opacity duration-200 `,onLoadingComplete:u,priority:r,...o}):(0,s.jsx)(q(),{src:e.url,width:e.width,height:e.height,alt:e.alt||e.title||"",className:`${a} ${d||n?"opacity-100":"opacity-0"} transition-opacity duration-200 `,onLoadingComplete:u,priority:r,...o})}var F=function(e){return(0,s.jsx)("div",{className:"",children:(0,s.jsx)($,{...e})})};function $({table_header:e,table:t}){return(0,s.jsxs)("div",{children:[(0,s.jsxs)("div",{className:"sticky top-0 grid grid-cols-5 self-start bg-white pb-2 pt-4",children:[(0,s.jsx)("div",{className:"col-span-1"}),e&&e.map(({heading:e,icon:t,link:a},i)=>(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{children:t&&(0,s.jsx)(W,{image:t})}),(0,s.jsx)("h3",{className:"t-26 mt-[15px] text-heading-black",children:e}),a?.url&&(0,s.jsx)("div",{children:"LINK"})]},`table_header-${i}`))]}),(0,s.jsx)("div",{className:"mt-[32px]",children:t&&t.map(({label:{is_heading:e,label:t},columns:a},i)=>(0,s.jsx)("div",{className:"grid grid-cols-5 items-center gap-5",children:e?(0,s.jsx)("div",{className:(0,r.Z)("col-span-5 pb-10 text-[20px] tracking-[-0.4px]",0!==i&&"pt-[125px]"),children:t}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("div",{className:"py-[14px] tracking-[-0.32px] text-body-black",children:t}),a&&a.map(({column:{has_text:e,text:t,tick:a}},i)=>(0,s.jsx)("div",{className:(0,r.Z)("border-b py-[14px]",e||a?"border-gray-1000/[.15]":"border-gray-1000/[.03]"),children:e?(0,s.jsx)("div",{className:"tracking-[-0.32px] text-gray-900",children:t}):(0,s.jsx)("div",{children:a?(0,s.jsx)(B.Z,{type:"tick",className:"w-3 text-gray-900"}):(0,s.jsx)("div",{className:" text-gray-900/20",children:"-"})})},`table-columns-${i}`))]})},`table-${i}`))})]})}var K=a(65820),J=function({faqs:e,heading:t,content:a}){let[l,n]=(0,i.useState)(0);return(0,s.jsxs)("div",{className:"grid gap-8 md:grid-cols-12",children:[(0,s.jsx)("div",{className:"md:col-span-5",children:t&&(0,s.jsx)("h3",{className:"t-h1 text-gray-1000 md:max-w-[330px]",children:t})}),(0,s.jsx)("div",{className:"space-y-[50px] md:col-span-6",children:e&&e.map((e,t)=>(0,i.createElement)(Q,{...e,setActiveDropdown:n,activeDropdown:l,index:t,key:`faq-${t}`}))}),a&&(0,s.jsx)("div",{className:"content-gray-1000 mt-10 rounded-2xl bg-gray-900 px-3 py-5 text-center leading-[1.45] tracking-[-0.48px] text-gray-0 md:col-span-12 md:mt-[133px]",dangerouslySetInnerHTML:{__html:a}})]})};function Q({question:e,answer:t,setActiveDropdown:a,activeDropdown:i,index:l}){let n=i===l;return(0,s.jsx)("button",{type:"button",onClick:()=>a(n?null:l),className:"group block w-full text-left outline-none transition-all focus:!outline-none",children:(0,s.jsxs)("div",{className:"flex w-full items-start gap-4",children:[(0,s.jsx)("div",{className:"pt-1 md:pt-1.5",children:(0,s.jsxs)("svg",{className:(0,r.Z)("w-[31px] transition-colors",n?"text-gray-900":"text-gray-200"),viewBox:"0 0 31 31",fill:"none",children:[(0,s.jsx)("rect",{width:"31",height:"31",rx:"15.5",fill:"currentColor"}),(0,s.jsx)("path",{d:"M10 16H22",className:(0,r.Z)("transition-colors",n?"stroke-white":"stroke-gray-900"),strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round"}),(0,s.jsx)("path",{d:"M16 10V22",className:(0,r.Z)("stroke-gray-900 transition-opacity",n?"opacity-0":"stroke-gray-900 opacity-100"),strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round"})]})}),(0,s.jsxs)("div",{children:[(0,s.jsx)("p",{className:"t-h6 text-heading-black",children:e}),(0,s.jsx)(K.M,{children:n&&(0,s.jsx)(h.E.div,{initial:{height:0,opacity:1},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0}
4,transition:{duration:.3,ease:[.04,.62,.23,.98]},className:"overflow-hidden",children:(0,s.jsx)("div",{dangerouslySetInnerHTML:{__html:t},className:"t-16 mt-[15px] !text-left text-body-black lg:max-w-[90%]"})})})]})]})})}var Y=function({cards:e}){return(0,s.jsx)("div",{children:(0,s.jsx)("div",{className:"grid gap-[5px] xs:grid-cols-2 lg:grid-cols-4",children:e&&e.map((t,a)=>(0,i.createElement)(X,{...t,key:`pricingcards-${a}`,isFirst:0===a,isLast:a===e.length-1}))})})};function X({heading:e,icon:t,price:a,pricing_tagline:i,content:l,link:n,bullet_list:o,tick_list:d,isFirst:c,isLast:u}){return(0,s.jsxs)(y(),{href:n?.url,className:(0,r.Z)("group flex flex-col gap-8 bg-white px-4 py-8 lg:py-[45px]",c&&"lg:rounded-l-[9px]",u&&"lg:rounded-r-[9px]"),children:[(0,s.jsxs)("div",{className:"mx-auto flex min-h-[242px] w-full flex-col lg:max-w-[250px]",children:[(0,s.jsxs)("div",{className:"flex justify-between gap-2",children:[(0,s.jsx)("h2",{className:"t-26 text-heading-black",children:e}),t&&(0,s.jsx)(W,{image:t})]}),(0,s.jsx)("div",{className:"t-h3 mt-5",children:a}),(0,s.jsx)("div",{className:"t-12 mt-2.5 font-medium text-body-black",children:i}),(0,s.jsx)("div",{className:"t-14 mt-[38px] text-body-black",children:l})]}),(0,s.jsxs)("div",{className:"mx-auto flex w-full flex-1 flex-col gap-[50px] lg:max-w-[250px]",children:[(0,s.jsx)("div",{className:"rounded-md bg-gray-900 p-2 text-center font-medium leading-[1.46] tracking-[-0.16px] text-white",children:n?.title}),(0,s.jsxs)("div",{className:"mx-auto flex w-full max-w-[250px] flex-1 flex-col space-y-[30px]",children:[o&&(0,s.jsx)(ee,{list:o}),d&&(0,s.jsx)(ee,{list:d,type:"tick"})]})]})]})}function ee({list:e,type:t="bullet"}){return(0,s.jsx)("ul",{className:(0,r.Z)("t-14 max-w-[227px] !leading-[1.45] !tracking-[-0.42px]","bullet"===t?"space-y-2.5":"space-y-[7px]"),children:e&&e.map(({item:e},a)=>(0,s.jsxs)("li",{className:(0,r.Z)("flex","bullet"===t?"items-center":"items-baseline"),children:["bullet"===t&&(0,s.jsx)("div",{className:"mr-1.5 h-4 w-4 shrink-0 rounded-full bg-gray-900"}),"tick"===t&&(0,s.jsx)(B.Z,{type:"tick",className:"mr-3 w-2.5 shrink-0 text-gray-900"}),e]},`${t}-${a}`))})}var et=e=>{let{comparisons:t}=e;return(0,s.jsx)("div",{className:"grid grid-cols-2 gap-5 md:grid-cols-3 lg:gap-[31px]",children:t?.map((e,t)=>i.createElement(ea,{...e,key:`${e?._id}-${t}`}))})};function ea({title:e,slug:t}){return(0,s.jsx)(y(),{href:`compare/${t?.current}`,className:"group flex flex-col gap-10 rounded-xl bg-white p-5 transition-colors duration-300 hover:bg-heading-black hover:text-white sm:p-6 sm:px-8 sm:pb-5","data-track":"Link Clicked","data-track-properties":`{"label": "Tailscale vs. ${e}"}`,children:(0,s.jsxs)("div",{className:"flex items-center justify-between gap-2 sm:gap-4",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"t-subheading !text-body-black transition-colors duration-300 group-hover:!text-white",children:"Tailscale vs."}),(0,s.jsx)("div",{className:"t-h6 mt-[6px] text-heading-black transition-colors duration-300 group-hover:text-white",children:e})]}),(0,s.jsx)("div",{className:" flex h-5 w-5 shrink-0 items-center justify-center rounded-full bg-heading-black text-white group-hover:bg-white group-hover:text-heading-black sm:h-8 sm:w-8",children:(0,s.jsx)(B.Z,{type:"arrowRight",className:"w-3 sm:w-4"})})]})})}var es=e=>{let{layout:t,...a}=e,i={comparisonsGrid:et}[t];return i&&(0,s.jsx)(i,{...a[t]},`${t}`)},ei=e=>{let{items:t}=e;return(0,s.jsx)("div",{children:t?.map((e,a)=>s.jsxs("div",{className:"relative flex flex-col gap-y-6 pb-16 md:flex-row md:gap-y-8 md:pb-[160px] ",children:[s.jsx("div",{className:"mx-auto max-w-[589px] flex-1 md:mx-0",children:s.jsx("div",{className:"bg-blue/10 aspect-[589/584] w-full rounded-2xl",children:s.jsx(n.Z,{...e.asset})})}),s.jsxs("div",{className:"relative hidden w-px max-w-[1px] flex-1 bg-gray-1000 md:ml-12 md:block lg:ml-[84px]",children:[s.jsx("div",{className:"sticky left-[-17px] top-20 ml-[-16px] mt-[-3px] h-[34px] w-[34px] rounded-full",children:s.jsx(o.Z,{image:e?.icon,className:"h-full w-full"})}),a!==t.length-1&&s.jsx("div",{className:"absolute bottom-[-160px] h-[160px] w-px bg-gray-1000 "})]}),s.jsx("div",{className:"flex flex-1 items-center justify-center md:ml-12",children:s.jsx("div",{className:"w-full max-w-[552px]",children:s.jsx(l.Z,{...e.textCard})})})]},`item${a}`))})},el=a(16893);let en=[[0,1,2],[3,4,5],[6,7,null]],er=[[0,1,null],[2,3,4],[null,5,6]];function eo({initialGrid:e,logos:t,loop:a=3e3,startDelay:l}){let n=(0,i.useRef)(null),r=(0,el.Y)(n),[d,c]=(0,i.useState)(e),[u,p]=(0,i.useState)(null);(0,i.useEffect)(()=>
4{if(!r)return;let e=()=>{let e=d.findIndex(e=>e.includes(null)),t=d[e].indexOf(null),a=[{row:e-1,col:t},{row:e+1,col:t},{row:e,col:t-1},{row:e,col:t+1}].filter(e=>{let t=e.row>=0&&e.row<d.length&&e.col>=0&&e.col<d[0].length,a=!u||e.row!==u.row||e.col!==u.col;return t&&a});if(a.length>0){let s=a[Math.floor(Math.random()*a.length)],i=d[s.row][s.col],l=[...d];l[e][t]=i,l[s.row][s.col]=null,p({row:e,col:t}),c(l)}},t=setTimeout(()=>{let t=setInterval(e,a);n.current=t},l);return()=>{clearTimeout(t),n.current&&clearInterval(n.current)}},[d,r,a,l,u]);let m={};return d.forEach((e,t)=>{e.forEach((e,a)=>{null!==e&&(m[e]={rowIndex:t,cellIndex:a})})}),(0,s.jsx)("div",{ref:n,className:"grid grid-cols-3 gap-[5px]",children:t.map((e,t)=>{let a=m[t];return a?(0,s.jsx)(h.E.div,{className:"cell",layout:!0,initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},style:{gridColumnStart:a.cellIndex+1,gridRowStart:a.rowIndex+1},children:(0,s.jsx)(o.Z,{image:e})},e._key):(0,s.jsx)(h.E.div,{className:"cell",layout:!0},e._key)})})}var ed=function(e){let{grids:t}=e;return(0,s.jsxs)("div",{className:(0,r.Z)("grid gap-[5px]",t.length>1?"grid-cols-3":"grid-cols-2"),children:[t.length>0&&(0,s.jsx)(eo,{initialGrid:en,...t[0],loop:2e3,startDelay:0}),(0,s.jsx)("div",{className:"flex items-center justify-center rounded-xl bg-gray-800",children:(0,s.jsxs)("svg",{className:"w-12 md:w-[84px]",viewBox:"0 0 83 84",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,s.jsx)("ellipse",{cx:"10.3498",cy:"41.7046",rx:"10.3498",ry:"10.3247",fill:"white"}),(0,s.jsx)("ellipse",{cx:"41.3996",cy:"41.7046",rx:"10.3498",ry:"10.3247",fill:"white"}),(0,s.jsx)("ellipse",{opacity:"0.2",cx:"10.3498",cy:"72.6773",rx:"10.3498",ry:"10.3247",fill:"white"}),(0,s.jsx)("ellipse",{opacity:"0.2",cx:"72.4474",cy:"72.6773",rx:"10.3498",ry:"10.3247",fill:"white"}),(0,s.jsx)("ellipse",{cx:"41.3996",cy:"72.6773",rx:"10.3498",ry:"10.3247",fill:"white"}),(0,s.jsx)("ellipse",{cx:"72.4474",cy:"41.7046",rx:"10.3498",ry:"10.3247",fill:"white"}),(0,s.jsx)("ellipse",{opacity:"0.2",cx:"10.3498",cy:"10.729",rx:"10.3498",ry:"10.3247",fill:"white"}),(0,s.jsx)("ellipse",{opacity:"0.2",cx:"41.3996",cy:"10.729",rx:"10.3498",ry:"10.3247",fill:"white"}),(0,s.jsx)("ellipse",{opacity:"0.2",cx:"72.4474",cy:"10.729",rx:"10.3498",ry:"10.3247",fill:"white"})]})}),2===t.length&&(0,s.jsx)(eo,{initialGrid:er,...t[1],loop:4e3,startDelay:1e3})]})},ec=a(55111),eu=function(e){let{heading:t,rows:a,options:i,variant:l,textCard:n}=e,r=i?.colorVariant==="light";return"vertical"===l?(0,s.jsx)(em,{rows:a,textCard:n,lightMode:r}):(0,s.jsx)(ep,{rows:a,heading:t,lightMode:r})};let ep=({rows:e,heading:t,lightMode:a})=>(0,s.jsxs)("div",{className:"relative",children:[(0,s.jsx)("div",{className:`absolute inset-0 z-10 m-auto aspect-[1051/375] w-full max-w-[1051px] rounded-[300px] blur-[97px] ${a?"bg-white":"bg-gray-800"}`}),(0,s.jsx)("div",{className:`absolute inset-0 z-20 m-auto aspect-[639/229] w-full max-w-[639px] rounded-[300px] blur-[52px] ${a?"bg-white":"bg-gray-800"}`}),(0,s.jsx)("div",{className:"absolute inset-0 flex items-center justify-center",children:(0,s.jsx)("h4",{className:"t-h3 z-30 rounded-[10px] bg-heading-black px-[30px] py-[25px] text-center text-white",dangerouslySetInnerHTML:{__html:t.replace(/\|([^*]+?)\|/g,'<span class="text-white"> $1</span>')}})}),(0,s.jsx)("div",{className:"space-y-[45px]",children:e&&e.map((t,s)=>(0,i.createElement)(ef,{...t,i:s,lastRow:s===e?.length-1,key:`tweet-row-${s}`,lightMode:a}))})]}),em=({rows:e,textCard:t,lightMode:a})=>{let n=(0,i.useRef)(null),{scrollYProgress:r}=(0,u.v)({target:n,offset:["start end","end start"]});return(0,s.jsxs)("div",{ref:n,className:"relative pt-16 md:pt-0 ",children:[(0,s.jsx)("div",{className:"pointer-events-none absolute left-0 right-0 top-0 z-10 h-[30%] bg-gradient-to-b from-gray-800/100 to-gray-800/0"}),(0,s.jsx)("div",{className:"pointer-events-none absolute bottom-[30%] left-0 right-0 z-10 h-[30%] bg-gradient-to-t from-gray-800/100 to-gray-800/0 md:bottom-[-11%]"}),(0,s.jsxs)("div",{className:"mx-auto w-full max-w-[1320px] md:px-5",children:[(0,s.jsxs)("div",{className:"relative flex w-full flex-col gap-5 -space-y-10 md:h-[726px] md:flex-row md:space-y-0 lg:gap-8",children:[(0,s.jsx)("div",{className:"pointer-events-none absolute bottom-[-17%] left-0 right-0 z-10 hidden h-[80%
4] bg-gradient-to-t from-gray-800/100 to-gray-800/0 md:bottom-[-11%] md:block"}),e&&e?.map((t,s)=>i.createElement(eg,{...t,lastRow:s===e?.length-1,key:`tweet-row-${s}`,lightMode:a,i:s,scrollProgress:r}))]}),(0,s.jsx)("div",{className:"container",children:(0,s.jsx)("div",{className:"relative z-20 mt-10 bg-gray-800 pb-20 md:mt-20",children:(0,s.jsx)(l.Z,{...t})})})]})]})},eg=({tweets:e,lightMode:t,i:a,lastRow:l})=>{let{width:n}=(0,f.Z)();return n<890&&l?null:(0,s.jsx)("div",{className:"flex-1 ",children:(0,s.jsx)(ec.Z,{className:"vertical-twitter-marquee flex !h-[280px] w-full gap-6 md:!h-full",duration:4e4,axis:n<768?"X":"Y",reverse:a%2==0,children:e&&e.concat(e).map((e,a)=>(0,i.createElement)(eh,{className:"!mx-0 !h-auto md:!w-full",...e,key:`tweet-${a}`,lightMode:t}))})})};function eh({avatar:e,username:t,handle:a,tweet:i,lightMode:l,className:n=""}){let r=l?"text-gray-1000":"text-white";return(0,s.jsxs)("div",{className:`mx-5 flex h-full w-[400px] flex-col justify-between rounded-xl border ${n} p-5 ${l?"border-gray-1000/[0.08]":"border-white/[0.08]"}`,children:[(0,s.jsxs)("div",{children:[(0,s.jsxs)("div",{className:"flex items-center gap-[9px] whitespace-normal ",children:[e&&(0,s.jsx)("div",{className:"relative h-8 w-8 shrink-0 overflow-hidden rounded",children:(0,s.jsx)(o.Z,{image:e,className:"h-full w-full object-cover"})}),(0,s.jsxs)("div",{children:[(0,s.jsxs)("div",{className:"flex items-center gap-2 whitespace-normal ",children:[(0,s.jsx)("div",{className:`t-15 ${r}`,children:a}),(0,s.jsx)("span",{children:(0,s.jsx)("svg",{width:"3",height:"4",viewBox:"0 0 3 4",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:(0,s.jsx)("circle",{cx:"1.43213",cy:"1.79932",r:"1.43213",fill:"white",fillOpacity:"0.14"})})})]}),(0,s.jsx)("div",{className:`t-13 ${l?"text-gray-1000/40":"text-white/40"}`,children:t})]})]}),(0,s.jsx)("div",{className:`mt-[13px] whitespace-normal leading-[1.39] tracking-[-0.48px] ${r}`,dangerouslySetInnerHTML:{__html:i.replace(/@(\w+)/g,'<span class="text-gray-400">@$1</span>')}})]}),(0,s.jsxs)("div",{className:`t-13 mt-[21px] flex items-center gap-4 ${l?"text-gray-1000/[0.54]":"text-white/[0.54]"}`,children:[(0,s.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,s.jsx)("div",{className:"w-4 shrink-0",children:(0,s.jsx)(B.Z,{type:"reply"})}),"Reply"]}),(0,s.jsx)("div",{children:"Share"}),(0,s.jsx)("div",{className:"mb-2",children:"..."})]})]})}function ef({tweets:e,i:t,lightMode:a,lastRow:l}){let{width:n}=(0,f.Z)();return n<768&&l?null:(0,s.jsx)(j.Z,{className:"twitter-marquee",speed:40,direction:t%2?"left":"right",children:e&&e.concat(e).map((e,t)=>(0,i.createElement)(eh,{...e,key:`tweet-${t}`,lightMode:a}))})}var ex=({textCard:e,images:t})=>{let a=(0,i.useRef)(null),{scrollYProgress:n}=(0,u.v)({target:a,offset:["start end","end start"]});return(0,s.jsxs)("div",{ref:a,className:"relative mx-auto flex max-w-[1160px] flex-col items-center justify-between gap-6 gap-y-12 md-large:flex-row ",children:[(0,s.jsx)(l.W,{...e,className:"flex-1 md:max-w-[623px]"}),(0,s.jsxs)("div",{className:"flex max-w-[384px] flex-1 flex-col gap-4 md:gap-6 md-large:flex-row ",children:[(0,s.jsxs)(eb,{direction:"up",scrollY:n,children:[t&&t.slice(0,Math.ceil(t.length/2)).map((e,t)=>(0,s.jsx)(ey,{image:e},`ImageParallax-left-${t}`))," "]}),(0,s.jsxs)(eb,{direction:"down",scrollY:n,children:[t&&t.slice(Math.ceil(t.length/2)).map((e,t)=>(0,s.jsx)(ey,{image:e},`ImageParallax-right-${t}`))," "]})]})]})};let eb=({children:e,scrollY:t,direction:a})=>{let{width:i}=(0,f.Z)(),l=i<890,n=l?0:20,r=l?20:0,o=(0,p.H)(t,[0,1],["up"===a?n:-n,"up"===a?n:-n]),d=(0,g.q)(o,{damping:20,stiffness:200}),c=(0,p.H)(t,[0,1],["up"===a?-r:r,0]),u=(0,g.q)(c,{damping:20,stiffness:200});return(0,s.jsx)(h.E.div,{style:{y:l?0:d,x:l?u:0},className:"flex gap-4 md:gap-6 md-large:flex-col",children:e})};function ey({image:e}){return(0,s.jsx)(h.E.div,{className:(0,r.Z)("max-w-[150px] lg:w-auto lg:max-w-[180px]"),children:(0,s.jsx)(o.Z,{image:e})})}var ev=a(13389),ew=function({defaultActive:e=0,margin:t=50}){let{width:a,height:s}=(0,f.Z)(),l=[],[n,r]=(0,i.useState)(e);return(0,i.useEffect)(()=>{let e=a>1028?s/2:s-t;l.reverse();let i=t=>{let a=t.target.documentElement.scrollTop;for(let t in l){let s=l[t];if(!s.current)break;
4if(a>window.pageYOffset+s.current.getBoundingClientRect().top-e){r(l.length-Number(t)-1);break}}};return window.addEventListener("scroll",i),()=>window.removeEventListener("scroll",i)},[l,a]),{refs:l,active:n}},eT=function(e){let{items:t,textCard:a,icon:r}=e,{active:o,refs:d}=ew({defaultActive:0}),c=(0,i.useRef)(null),[m,{height:x}]=(0,ev.Z)(),{height:b,width:y}=(0,f.Z)(),{scrollYProgress:v}=(0,u.v)({target:c,offset:["start end","end center"]}),w=(0,p.H)(v,[0,.1],[100,0]),T=(0,g.q)(w,{stiffness:200,damping:50,restSpeed:.01,restDelta:.05});return(0,s.jsxs)("div",{ref:c,className:"mx-auto flex flex-col justify-between md-large:flex-row",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)(l.W,{...a,className:"mb-[45px]"}),(0,s.jsx)("div",{className:"mx-auto w-full space-y-[50px] md-large:max-w-[444px] lg:mx-0",children:t.map((e,t)=>{let a=(0,i.useRef)();return d.push(a),(0,s.jsxs)(h.E.div,{ref:a,className:"w-full text-center md-large:flex md-large:text-left",children:[(0,s.jsx)("div",{className:"mb-5 w-full md-large:hidden",children:(0,s.jsx)(n.x,{...e?.asset,className:"mx-auto md-large:max-w-[280px]"})}),(0,s.jsx)(ek,{...e,width:y,icon:r,i:t})]},e.heading)})})]}),(0,s.jsx)(h.E.div,{ref:m,style:{top:b/2-x/2||"unset",y:T},className:"sticky hidden aspect-[625/612] max-h-[612px] w-full max-w-[625px] items-center justify-center md-large:flex",children:(0,s.jsx)(K.M,{initial:!1,mode:"popLayout",children:t.map((e,t)=>o===t&&(0,s.jsx)(h.E.div,{initial:{opacity:0}
4,animate:{opacity:1},exit:{opacity:0},transition:{duration:.8},className:"!pointer-events-none flex !h-auto !w-full items-center justify-center",children:(0,s.jsx)(n.x,{...e?.asset,className:"w-full"})},`imagetest${t}`))})})]})};function ek({heading:e,content:t,i:a,icon:i}){return(0,s.jsxs)(h.E.div,{className:`mx-auto flex md:min-h-[300px] ${0===a?"md-large:min-h-[457px]":"md-large:min-h-[612px]"} flex-col items-center gap-4 md-large:mx-0 md-large:max-w-[355px] md-large:items-start`,children:[(0,s.jsxs)("div",{className:"relative ml-[21px] hidden w-[42px] flex-1 flex-col md:flex",children:[(0,s.jsx)("div",{className:"absolute bottom-0 left-0 top-0 w-px flex-1 bg-heading-black"}),(0,s.jsx)("div",{className:"sticky left-[-42px] top-20 -ml-[20px] mt-[-8px] h-[42px] w-[42px]",children:(0,s.jsx)("div",{className:"relative h-full",children:(0,s.jsx)(o.Z,{image:i,className:"sticky top-20 translate-y-1 "})})})]}),(0,s.jsxs)("div",{className:"md-large:pl-[21px]",children:[(0,s.jsx)("h3",{className:"t-h6 text-heading-black",children:e}),(0,s.jsx)("div",{className:"t-b16 mt-1 text-body-black md:mt-3",dangerouslySetInnerHTML:{__html:t}})]})]})}var eC=a(31304),e_=a.n(eC),ej=e=>{let{blocks:t}=e,[a,n]=(0,i.useState)(""),o=t.map(e=>({...e,features:e?.features?.filter(e=>e?.heading?.toLowerCase().includes(a?.toLowerCase()))})).filter(e=>e?.features?.length>0),c=o?.length>0;return(0,s.jsxs)("div",{className:"flex flex-col justify-between gap-6 gap-y-10 overflow-x-clip md:flex-row xl:gap-20",children:[(0,s.jsx)("aside",{className:"relative flex-1 md:max-w-[243px]",children:(0,s.jsxs)("div",{className:"sticky top-20",children:[(0,s.jsxs)("div",{className:"relative",children:[(0,s.jsx)("input",{type:"text",placeholder:"Search for a feature...",onChange:e=>{n(e.target.value)},className:"border-1 ml-[2px] w-full rounded-lg border-stroke-gray p-2 pl-[17px] outline-none focus:border-red-900 focus:ring-0"}),(0,s.jsx)("div",{className:"absolute right-[17px] top-[12px]",children:(0,s.jsxs)("svg",{width:"16",height:"17",viewBox:"0 0 16 17",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,s.jsx)("path",{d:"M14.0152 14.3746L10.2891 10.6484",stroke:"#212121",strokeWidth:"1.17492",strokeMiterlimit:"10",strokeLinecap:"square"}),(0,s.jsx)("path",{d:"M6.96513 12.024C9.56059 12.024 11.6646 9.91996 11.6646 7.3245C11.6646 4.72904 9.56059 2.625 6.96513 2.625C4.36966 2.625 2.26562 4.72904 2.26562 7.3245C2.26562 9.91996 4.36966 12.024 6.96513 12.024Z",stroke:"#212121",strokeWidth:"1.17492",strokeMiterlimit:"10",strokeLinecap:"square"})]})})]}),(0,s.jsx)("div",{className:"mt-[49px] hidden text-heading-black md:block",children:(0,s.jsx)(eS,{blocks:o})})]})}),(0,s.jsxs)("div",{className:"max-w-[957px] flex-1 ",children:[(0,s.jsx)("div",{id:"all-features",className:"scroll-mt-32"}),(0,s.jsx)("div",{className:"space-y-12 lg:space-y-[160px]",children:c?o?.map((e,t)=>s.jsxs("div",{id:e_()(e?.textCard?.heading,{lower:!0}),className:"scroll-mt-20",children:[s.jsx(l.Z,{breakpoint:768,...e?.textCard}),s.jsx("div",{className:"mt-8 grid gap-5 sm:grid-cols-2 md:mt-[60px] lg:gap-8 ",children:e?.features?.map(e=>s.jsxs("div",{className:r.Z("flex w-full flex-col justify-between rounded-xl px-6 py-[30px] lg:px-10 lg:py-[60px]",t%2==0?"bg-white text-heading-black":"bg-gray-700 text-white"),children:[s.jsx("h3",{className:"t-28",children:e?.heading}),s.jsx("div",{className:r.Z("t-18 mt-3","opacity-80"),children:s.jsx(d.Z,{className:"prose-18",content:e?.content})}),e?.link&&s.jsx(y(),{href:e?.link,className:"mt-10 block","data-track":"Link Clicked","data-track-properties":'{"label": "Learn more"}',children:s.jsx(x.IS,{textLink:{link:{title:"Learn more"},textLinkOptions:{arrowColor:t%2==0?"black":"white"}},className:"text-opacity-100"})})]},e?._key))})]},e?._key)):(0,s.jsx)("div",{className:"",children:(0,s.jsx)("div",{className:"t-24",children:"No results found"})})})]})]})};let eS=({blocks:e})=>{let t="all-features",[a,l]=(0,i.useState)(t),[n,r]=(0,i.useState)(!1);(0,i.useEffect)(()=>{let s=()=>{if(n)return;let s=a,i=e.length>0&&document.getElementById(e_()(e[0]?.textCard?.heading,{lower:!0})),r=i&&i.getBoundingClientRect();if(!i||r&&window.scrollY<=r.top+window.pageYOffset-150)s=t;else{let t=e.find(e=>{let t=document.getElementById(e_()(e?.textCard?.heading,{lower:!0}));if(t){let e=t.getBoundingClientRect();return e.top>
4=0&&e.top<=window.innerHeight/2}return!1});t&&(s=e_()(t.textCard.heading,{lower:!0}))}s!==a&&l(s)};return window.addEventListener("scroll",s),()=>window.removeEventListener("scroll",s)},[e,a,n]);let o=e=>{l(e),r(!0);let t=document.getElementById(e);t&&(t.scrollIntoView({behavior:"smooth",block:"start"}),setTimeout(()=>{r(!1)},1e3))};return(0,s.jsxs)("nav",{className:"t-18 hidden space-y-[26px] md:block",children:[(0,s.jsx)("button",{type:"button","aria-label":"All Features",className:`${"all-features"===a?"font-medium text-heading-black":"text-subheading-black"}`,onClick:()=>{o("all-features")},children:"All Features"}),e?.map(e=>s.jsx("button",{type:"button","aria-label":"tab",onClick:t=>{t.preventDefault(),o(e_()(e?.textCard?.heading,{lower:!0}))},className:`flex items-center gap-4 text-start transition-colors duration-300 hover:text-heading-black ${a===e_()(e?.textCard?.heading,{lower:!0})?"font-medium text-heading-black":"text-subheading-black"}`,children:s.jsx("div",{className:"t-b18",children:e?.textCard?.heading})},e?._key))]})},eA=({labels:e,active:t,handleClick:a})=>{if(!(e?.length<0))return(0,s.jsx)("ul",{className:"mb-12 flex flex-wrap items-center justify-center gap-5",children:e.map((e,i)=>(0,s.jsx)("li",{children:(0,s.jsxs)("button",{className:(0,r.Z)("flex items-center gap-2 rounded-lg border border-solid border-gray-300 px-4 py-2 font-medium tracking-[.01em] text-heading-black transition-colors duration-300 hover:bg-gray-300",t===i&&"bg-gray-300"),type:"button",onClick:()=>a(i),children:[(0,s.jsx)(o.Z,{image:e.icon}),e.title]})}))})},eN=({slides:e,labels:t})=>{let[a,l]=(0,i.useState)(0);return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(eA,{labels:t,active:a,handleClick:e=>{l(e)}}),(0,s.jsx)("div",{className:"grid",children:e.map((e,t)=>(0,s.jsx)(eD,{...e,active:t===a}))})]})},eD=({asset:e,active:t,textCard:a})=>(0,s.jsxs)("div",{className:(0,r.Z)("col-start-1 row-start-1 transition-opacity duration-300",t&&"pointer-events-auto opacity-100",!t&&"pointer-events-none opacity-0"),children:[(0,s.jsx)(n.Z,{...e,className:"mb-12"}),(0,s.jsx)(l.Z,{...a})]});var eV=e=>{let{items:t,headline:a,background:i}=e,l=t.map(e=>({title:e.title,icon:e.icon})),n={background:i?.color==="custom"&&i?.customColor?.value};return(0,s.jsxs)("div",{className:(0,r.Z)("rounded-[20px] p-12 sm:pb-[72px] sm:pt-[100px]",(0,S.Z)(i?.color)),style:n,children:[a&&(0,s.jsx)("h2",{className:"t-h3 mx-auto mb-3 text-center text-heading-black md:mb-12",children:a}),(0,s.jsx)(eN,{slides:t,labels:l})]})},eG=e=>{let{layout:t,...a}=e,i={animatedGrid:ed,twitterMarquee:eu,imageParallax:ex,stickyScroller:eT,connectedScroller:ei,featuresGrid:ej,featuresSlider:eV}[t];return i&&(0,s.jsx)(i,{...a[t]},`${t}`)},eP=a(11163);let eL=e=>{let t=document.getElementById(e);t&&t.scrollIntoView({behavior:"smooth",block:"start"})};var eI=e=>{let{categoryBlock:t}=e,a=(0,eP.useRouter)(),l=a.query.category,n=e=>{let a=t.findIndex(t=>e_()(t.heading.toLowerCase())===e);return -1!==a?a:0},[o,d]=(0,i.useState)(l?n(l):0),[c,u]=(0,i.useState)(""),[p,m]=(0,i.useState)([]);return(0,i.useEffect)(()=>{l&&d(n(l))},[l]),(0,i.useEffect)(()=>{if(c){let e=c.toLowerCase();m(t.flatMap(t=>t.integrationsList.filter(t=>t?.title?.toLowerCase().includes(e)).map(e=>({...e,category:t.heading}))))}else m([])},[c,t]),(0,s.jsxs)("div",{className:"flex flex-col justify-between gap-6 gap-y-8 md-large:flex-row",children:[(0,s.jsxs)("div",{className:"md-large:flex-[0_1_250px]",children:[(0,s.jsx)(eE,{searchTerm:c,setSearchTerm:u}),(0,s.jsx)("div",{className:(0,r.Z)("mt-[49px]",""!==c?"pointer-events-none opacity-0":" opacity-100"),children:(0,s.jsx)(eM,{categoryBlock:t,categoryNameFromURL:l,handleCategoryClick:e=>{if("all"===e)d(null),eL("all-integrations"),a.push("/integrations",void 0,{shallow:!0});else{let t=e_()(e,{lower:!0});eL("all-integrations"),a.push(`/integrations?category=${t}`,void 0,{shallow:!0})}u("")}})})]}),(0,s.jsx)("div",{id:"all-integrations",className:"max-w-[950px] flex-1 scroll-mt-20 space-y-10 md:space-y-20",children:null===o?t.map((e,a)=>(0,s.jsx)(eU,{categoryBlock:t,activeCategoryIndex:a},a)):""===c?(0,s.jsx)(eU,{categoryBlock:t,activeCategoryIndex:o}):(0,s.jsx)(eR,{filteredIntegrations:p})})]})};let eM=({categoryBlock:e,categoryNameFromURL:t,handleCategoryClick:a})=>{let[l,n]=(0,i.useState)(t),[o,d]=(0,i.useState)({}),c=e.reduce((e,t)=>
4{let a=t.group||"ungrouped";return{...e,[a]:[...e[a]||[],t]}},{}),u=c.ungrouped.map(e=>e.heading);delete c.ungrouped;let p=[...u,...Object.keys(c)].sort((e,t)=>e.localeCompare(t)),m=e=>e_()(e,{lower:!0});(0,i.useEffect)(()=>{if(n(t||"all"),t){let e=Object.keys(c).find(e=>c[e].some(e=>m(e.heading)===t));e&&d(t=>({...t,[e]:!0}))}},[t]);let g=e=>{d(t=>({...t,[e]:!t[e]}))};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("ul",{className:"t-b18 hidden space-y-[26px] md-large:block",children:[(0,s.jsx)("li",{role:"button",tabIndex:0,onClick:()=>a("all"),onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&a("all")},className:(0,r.Z)("text-heading-black transition duration-300 hover:opacity-100","all"===l?"!text-blue-600":"opacity:70"),children:"All Integrations"}),p.map(e=>{let t=c[e];return(0,s.jsxs)("div",{children:[t?(0,s.jsxs)("p",{className:"group flex cursor-pointer items-center gap-1.5",role:"button",tabIndex:0,onClick:()=>g(e),onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&g(e)},children:[e.replace(/([a-z])([A-Z])/g,"$1 $2").replace(/^./,e=>e.toUpperCase()).toLowerCase().replace(/^./,e=>e.toUpperCase()),(0,s.jsx)("span",{className:(0,r.Z)("flex h-6 w-6 flex-none transform items-center justify-center rounded-full bg-gray-300 text-gray-700 transition",o[e]?"rotate-180 bg-gray-700 text-white":"rotate-0"),children:(0,s.jsx)("svg",{width:"15",height:"14",viewBox:"0 0 15 14",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:(0,s.jsx)("path",{d:"M3.9585 5.3125L7.3335 8.6875L10.7085 5.3125",stroke:"currentColor",strokeWidth:"1.125",strokeLinecap:"round",strokeLinejoin:"round"})})})]}):(0,s.jsx)("li",{role:"button",tabIndex:0,onClick:()=>{a(e),n(m(e))},onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&a(e)},className:(0,r.Z)(l===m(e)&&"!text-blue-600","text-heading-black transition duration-300 hover:opacity-100"),children:e},e),o[e]&&t.sort((e,t)=>e.heading.localeCompare(t.heading)).map(e=>(0,s.jsx)("li",{role:"button",tabIndex:0,onClick:()=>{a(e.heading),n(m(e.heading))},onKeyDown:t=>{("Enter"===t.key||" "===t.key)&&a(e.heading)},className:(0,r.Z)(l===m(e.heading)&&"!text-blue-600","body-new mt-1.5 text-heading-black/70 transition duration-300 first-of-type:mt-3 hover:text-heading-black"),children:e.heading},e.heading))]},e)})]}),(0,s.jsxs)("div",{className:"md-large:hidden",children:["Filter by",(0,s.jsxs)("select",{className:"mt-2 w-full rounded-lg border border-gray-200 p-2 px-4",onChange:e=>a("all"===e.target.value?"all":m(e.target.value)),children:[(0,s.jsx)("option",{value:"all",children:"All Integrations"}),e.map((e,t)=>(0,s.jsx)("option",{value:e.heading,children:e.heading},t))]})]})]})},eO=({title:e,logo:t,link:a,category:i,description:l})=>{let n=l?.some(e=>"link"===e._type||e.markDefs&&e.markDefs.some(e=>"link"===e._type)),c=(0,s.jsxs)("div",{className:(0,r.Z)(n&&"duration-200 hover:border-gray-300 hover:shadow-brand-hover","group-border-gray-300 group-shadow-brand flex w-full flex-col justify-between rounded-2xl border bg-white p-8"),children:[(0,s.jsx)("div",{className:"flex flex-col",children:(0,s.jsx)("div",{className:"flex flex-[0_1_100px] items-center justify-center xs:flex-[0_1_150px] sm:flex-[0_1_200px]",children:t&&(0,s.jsx)(o.Z,{image:t,className:"transition duration-300 group-hover:brightness-0 group-hover:invert"})})}),(0,s.jsx)("div",{className:"flex w-full flex-wrap items-end justify-between gap-2 md:flex-nowrap",children:(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"t-b18 text-subheading-black transition-colors duration-300 group-hover:text-white ",children:i}),(0,s.jsx)("div",{className:"t-24 font-medium text-heading-black transition-colors duration-300 group-hover:text-white",children:e}),l&&(0,s.jsx)(d.Z,{className:"meta-new mt-2 !font-normal text-gray-500 group-hover:text-white",content:l})]})})]});return a&&!n?(0,s.jsx)(y(),{className:"transition-border flex w-full rounded-2xl duration-200 hover:border-gray-300 hover:shadow-brand-hover",href:a,children:c}):c},eE=({searchTerm:e,setSearchTerm:t})=>(0,s.jsxs)("div",{className:"relative w-full rounded-lg border border-gray-200",children:[(0,s.jsx)("input",{className:"focus:ring-blue w-full rounded-lg border-none px-4",type:"text",value:e,placeholder:"Search...",onChange:e=>t(e.target.value)}),(0,s.jsx)("div",{className:"absolute right-[11px] top-[11px]",children:(0,s.jsxs)("svg",{width:"16",height:"18",viewBox:"0 0 16 18",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,s.jsx)("path",{d:"M14.0152 14.8746L10.2891 11.1484",stroke:"#212121",strokeWidth:"1.17492",strokeMiterlimit:"10",strokeLinecap:"square"}),(0,s.jsx)("path",{d:"M6.96513 12.524C9.56059 12.524 11.6646 10.42 11.6646 7.8245C11.6646 5.22904 9.56059 3.125 6.96513 3.125C4.36966 3.125 2.26562 5.22904 2.26562 7.8245C2.26562 10.42 4.36966 12.524 6.96513 12.524Z",stroke:"#212121",strokeWidth:"1.17492",strokeMiterlimit:"10",strokeLinecap:"square"})]})})]}),eU=({categoryBlock:e,activeCategoryIndex:t})=>{let a=e[t];return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",{className:"flex w-full flex-col justify-between gap-2 gap-y-5 md:flex-row md:items-end",children:[(0,s.jsxs)("div",{className:"w-full max-w-[620px]",children:[(0,s.jsx)("h2",{id:e_()(e[t]?.heading,{lower:!0}),className:"t-36 scroll-mt-20 text-heading-black",children:e[t]?.heading}),(0,s.jsx)("div",{className:"t-b18 mt-4 text-heading-black/80 md:mt-[10px]",children:(0,s.jsx)(d.Z,{content:e[t]?.description})})]}),(0,s.jsx)("div",{children:(0,s.jsxs)("div",{className:"max-w-max whitespace-nowrap rounded-[10px] bg-blue-50 px-[15px] py-[5px] text-[0.8125rem] leading-[1.75rem]",children:[e[t].integrationsList.length," Integrations"]})})]}),(0,s.jsx)("div",{className:"mt-12 grid grid-cols-2 gap-3 md:mt-[73px] xl:grid-cols-3",children:e[t].integrationsList.map(e=>(0,s.jsx)(eO,{...e,category:a.heading},e._key))})]})},eR=({filteredIntegrations:e})=>(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("div",{className:"w-full max-w-[620px]",children:(0,s.jsx)("h2",{className:"t-36 text-heading-black",children:"Search Results"})}),(0,s.jsxs)("div",{className:"mt-8 grid gap-[30px] sm:grid-cols-2 md:mt-[73px] xl:grid-cols-3",children:[0===e.length&&(0,s.jsx)("div",{className:"",children:"0 results found"}),e.map(e=>(0,s.jsx)(eO,{...e},e._key))]})]});var eZ=e=>{let{layout:t,...a}=e,i={filterIntegrations:eI}[t];return i&&(0,s.jsx)(i,{...a[t]},`${t}`)},eH=e=>{let{docs:t,link:a}=e;return(0,s.jsxs)("div",{className:"flex flex-col justify-between gap-6 md:flex-row",children:[(0,s.jsx)("div",{className:"max-w-[840px] flex-[0.75]",children:(0,s.jsxs)("div",{className:" flex h-full flex-col justify-between rounded-xl bg-gray-900 pb-[42px] text-white",children:[(0,s.jsx)("div",{className:"px-5 py-8 xl:p-[50px]",children:(0,s.jsxs)("div",{className:"max-w-[676px]",children:[(0,s.jsx)("h3",{className:"t-36",children:t?.heading}),(0,s.jsx)("div",{className:"t-20 mt-[15px] text-white/70 opacity-70",dangerouslySetInnerHTML:{__html:t?.content}}),(0,s.jsx)("div",{className:" mt-8",children:(0,s.jsx)(y(),{href:t?.button?.link?.url||"/",children:(0,s.jsx)(x.ZP,{button:t?.button})})})]})}),(0,s.jsx)("div",{className:"pl-5 xl:pl-[50px]",children:(0,s.jsx)(n.Z,{...t?.asset})})]})}),(0,s.jsx)("div",{className:"flex-[0.35] md:max-w-[400px]",children:(0,s.jsxs)(y(),{href:a?.link?.url||"/",className:"group w-full",children:[(0,s.jsx)("div",{className:"aspect-[400/429] w-full overflow-hidden rounded-xl bg-green-900 will-change-transform",children:(0,s.jsx)(n.Z,{...a?.asset,className:"h-full w-full rounded-xl object-cover"})}),(0,s.jsxs)("div",{className:"mt-5 px-[5px] md:mt-10 md:px-[15px]",children:[(0,s.jsx)("div",{className:"t-16 font-medium uppercase text-subheading-black",children:a?.subheading}),(0,s.jsx)("h3",{className:"t-24 mt-2 md:mt-[10px]",children:a?.heading}),(0,s.jsx)("div",{className:"mt-3 md:mt-[30px]",children:(0,s.jsx)(x.IS,{textLink:{link:{title:a?.link?.title},textLinkOptions:{arrowColor:"black"}}})})]})]})})]})},eB=e=>{let{layout:t,...a}=e,i={docsSingleLink:eH}[t];return i&&(0,s.jsx)(i,{...a[t]},`${t}`)},ez=a(86769),eq=e=>{let{featuredPost:t,doublePosts:a}=e;return(0,s.jsxs)("div",{className:"flex flex-col justify-between gap-6 lg:flex-row",children:[(0,s.jsx)("div",{className:"flex-1 lg:max-w-[686px]",children:(0,s.jsxs)(y(),{href:`/blog/${t?.slug?.current}`,className:"flex h-full w-full flex-col justify-between gap-8 rounded-xl bg-heading-black text-white","data-track":"Link Clicked","data-track-properties":`{"label": "${t?.title}"}`,children:[(0,s.jsx)(o.Z,{image:t?.featuredImage,className:"w-full"}),(0,s.jsxs)("div",{className:"px-5 pb-8 md:px-[50px] md:pb-[68px]",children:[(0,s.jsxs)("div",{className:"t-18 flex gap-[15px]",children:[(0,s.jsx)("span",{children:"Article"}),(0,s.jsx)("span",{className:"text-subheading-black",children:(0,ez.p)(t?.publishedAt)})]}),(0,s.jsx)("h3",{className:"t-36 mt-[15px]",children:t?.title}),(0,s.jsx)("div",{className:"mt-[30px]",children:(0,s.jsx)(x.ZP,{button:{buttonOptions:{color:"white",addArrow:!0},link:{title:"Read more"}}})})]})]})}),(0,s.jsx)("div",{className:"flex flex-1 flex-col justify-between gap-5 lg:max-w-[554px] xl:gap-10",children:a?.map((e,a)=>s.jsxs(y(),{href:`/blog/${e?.slug?.current}`,className:"flex items-center gap-5 lg:justify-between","data-track":"Link Clicked","data-track-properties":`{"label": "${e?.title}"}`,children:[s.jsx("div",{className:"max-w-[192px] flex-1",children:s.jsx("div",{className:"aspect-[192/300] w-full overflow-hidden rounded-lg will-change-transform",children:s.jsx(o.Z,{image:e?.featuredImage,className:"h-full w-full object-cover"})})}),s.jsxs("div",{className:"max-w-[313px] flex-1",children:[s.jsxs("div",{className:"t-18 flex flex-wrap gap-[15px]",children:[s.jsx("span",{children:"Article"}),s.jsx("span",{className:"text-subheading-black",children:ez.p(t?.publishedAt)})]}),s.jsx("h3",{className:"t-24 mt-4",children:e?.title}),s.jsx("div",{className:"mt-[42px]",children:s.jsx(x.IS,{textLink:{link:{title:"Read more"},textLinkOptions:{arrowColor:"black"}}})})]})]},`post-${a}`))})]})},eW=e=>{let{layout:t,...a}=e,i={featuredDoubleLink:eq}[t];return i&&(0,s.jsx)(i,{...a[t]},`${t}`)},eF=a(5152),e$=a.n(eF),eK=a(47898),eJ=function(e){let t,a,i,n;let{customer:d,backgroundColor:c,circleColor:u,textColor:p,quoteBlock:m,textCard:g}=e,h="dark"===p,f=h?"text-gray-1000":"text-white";if(m){let{quote:e,author:s,role:l,company:r}=m;t=d?.length>0&&d[0]?.slug,a=r,i={quote:e,fullname:s,position:l},n=d?.length>0&&d[0]?.logos}else d?.length>0&&({slug:t,title:a,customerTestimonial:i,logos:n}=d[0]||{});let b={background:c?.color==="custom"?c?.customColor?.value:void 0};return(0,s.jsxs)("div",{className:"flex flex-col items-center gap-11 md-large:flex-row",children:[g&&(0,s.jsx)(l.Z,{...g,className:"order-last md-large:order-first md-large:basis-[15em]"}),(0,s.jsxs)("div",{className:(0,r.Z)("relative block grow overflow-hidden rounded-[20px] px-5 py-8 lg:min-h-[300px] lg:p-[70px]",(0,S.Z)(c?.color||"black")),style:b,children:[(0,s.jsxs)("div",{className:(0,r.Z)("relative z-10 max-w-[862px]",f),children:[(0,s.jsx)(o.Z,{image:h?n?.darkLogo:n?.lightLogo,className:"mb-8 h-8 w-auto object-left lg:mb-[90px]"}),(0,s.jsxs)("div",{className:(0,r.Z)("t-36-small"),children:["â",i?.quote,"â"]}),(0,s.jsxs)("div",{className:(0,r.Z)("t-b16 mt-6 opacity-70 lg:mt-[34px]"),children:[i?.fullname,", ",i?.position,a&&` at ${a}`]}),!g&&d?.length>0&&t?.current&&(0,s.jsx)(y(),{href:`/customers/${t.current}`,"data-track":"Link Clicked","data-track-properties":'{"label": "Read full story"}',children:(0,s.jsx)(x.IS,{className:(0,r.Z)("mt-4 md:mt-8 lg:mt-[92px]",f),textLink:{link:{title:"Read full story"},textLinkOptions:{arrowColor:h?"black":"white"}}})})]}),u?.color!=="none"&&(0,s.jsx)("svg",{className:(0,r.Z)("pointer-events-none absolute -bottom-8 right-0 w-[40%] max-w-[292px] sm:bottom-0 lg:w-full",(0,eK.Z)(u?.color||"gray-500")),viewB
4ox:"0 0 292 292",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:(0,s.jsx)("path",{d:"M292 292V0C130.729 0 0 130.729 0 292H292Z",fill:"currentColor"})})]})]})},eQ=a(51394),eY=a(9055),eX=()=>{let[e,t]=(0,i.useState)({stories:[],hasMore:!0}),[a,l]=(0,i.useState)(1);return(0,i.useEffect)(()=>{(async function(){let e=await fetch(`/api/customers?page=${a}`),s=await e.json();t(e=>({stories:[...e.stories,...s],hasMore:9===s.length}))})()},[a]),(0,s.jsxs)("div",{children:[(0,s.jsx)("ul",{className:"grid gap-6 md:grid-cols-2 lg:grid-cols-3 lg:gap-y-12 xl:gap-x-10",children:e?.stories.map((e,t)=>s.jsx("li",{children:s.jsx(eY.Z,{...e})},`${e._id}-${t}`))}),e.hasMore&&(0,s.jsx)("div",{className:"mt-10 flex justify-center md:mt-[120px]",children:(0,s.jsx)(eQ.Z,{onClick:()=>l(e=>e+1)})})]})},e0=e=>{let{customer:t}=e;return(0,s.jsxs)(y(),{href:`/customers/${t?.slug?.current}`,className:"group flex w-full flex-col justify-between gap-6 gap-y-8 md:flex-row","data-track":"Link Clicked","data-track-properties":'{"label": "Read story"}',children:[(0,s.jsx)("div",{className:"max-w-[620px] flex-1",children:(0,s.jsx)("div",{className:"flex aspect-[620/396] items-center justify-center rounded-[15px] bg-gray-900 will-change-transform",children:(0,s.jsx)(o.Z,{image:t?.logos?.lightLogo,className:"max-h-[50px] w-full max-w-[55%]"})})}),(0,s.jsxs)("div",{className:"flex max-w-[535px] flex-1 flex-col justify-between",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("h2",{className:"t-36",dangerouslySetInnerHTML:{__html:t?.preview?.title}}),(0,s.jsx)("div",{className:"t-b18 mt-3 line-clamp-3 text-body-black lg:mt-6 ",dangerouslySetInnerHTML:{__html:t?.preview?.excerpt}})]}),(0,s.jsx)("div",{children:(0,s.jsx)(x.IS,{className:"mt-4 lg:mt-8",textLink:{link:{title:"Read story"},textLinkOptions:{arrowColor:"black"}}})})]})]})};let e1=e$()(()=>a.e(81963).then(a.bind(a,81963)),{loadableGenerated:{webpack:()=>[81963]},ssr:!1});var e2=e=>{let{layout:t,...a}=e,i={testimonial:eJ,caseStudySingle:e0,allStories:eX,testimonialSlider:e1}[t];return i&&(0,s.jsx)(i,{...a[t]},`${t}`)},e3=a(65760),e4=a(99261),e6=({cards:e})=>(0,s.jsx)("div",{className:"my-3 flex flex-col flex-wrap gap-3 md:flex-row",children:e.map((e,t)=>(0,s.jsx)("div",{className:(0,r.Z)("contentCard"===e.type&&e.contentCard?.links&&"transition duration-200 hover:border-gray-300 hover:shadow-brand-hover","mediaCard"===e.type?"order-first md:order-none":"order-none","w-full overflow-hidden rounded-2xl border border-gray-200 shadow-brand md:flex-1"),children:"mediaCard"===e.type?(0,s.jsx)(o.Z,{image:e.mediaCard,className:"h-full w-full object-cover object-center"}):(0,s.jsxs)("div",{className:"flex h-full flex-col items-start gap-3 p-8",children:[e.contentCard?.icon&&(0,s.jsx)(o.Z,{image:e.contentCard.icon,className:"h-full max-h-6 w-auto"}),(0,s.jsx)("h3",{className:"featured-body-new font-medium",children:e.contentCard.title}),(0,s.jsx)("p",{className:"body-new text-gray-500",children:e.contentCard.description}),e.contentCard?.links&&(0,s.jsx)("div",{className:"flex items-center justify-center gap-2.5",children:e.contentCard.links.map(e=>(0,s.jsx)(e4.ZP,{...e}))})]})},e.type+t))}),e5=a(58755);let e7=({plan:e})=>{let t=function(e){switch(e){case"personal":default:return{...e5.RB[e],asset:()=>(0,s.jsxs)("svg",{width:"70",height:"32",viewBox:"0 0 70 52",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,s.jsx)("path",{d:"M26 44C16.0604 44 8 35.9396 8 26C8 16.0604 16.0604 8 26 8L26 44Z",fill:"#85D996"}),(0,s.jsx)("path",{d:"M62 26C62 16.0589 53.9411 8 44 8C34.0589 8 26 16.0589 26 26C26 35.9411 34.0589 44 44 44C53.9411 44 62 35.9411 62 26Z",fill:"#0D4B3B"})]})};case"starter":return{...e5.RB[e],asset:()=>(0,s.jsxs)("svg",{width:"70",height:"32",viewBox:"0 0 70 52",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,s.jsx)("path",{d:"M8 8C17.9396 8 26 16.0604 26 26C26 35.9396 17.9396 44 8 44V8Z",fill:"#95BFFF"}),(0,s.jsx)("path",{d:"M26 44L62 44L62 8L26 8L26 44Z",fill:"#3B51AA"})]})};case"premium":return{...e5.RB[e],asset:()=>(0,s.jsxs)("svg",{width:"88",height:"32",viewBox:"0 0 88 52",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,s.jsx)("path",{d:"M44 8C44 17.9396 35.9396 26 26 26C16.0604 26 8 17.9396 8 8H44Z",fill:"#EFC078"}),(0,s.jsx)("path",{d:"M44 26C44 35.9396 35.9396 44 26 44C16.0604 44 8 35.9396 8 26H44Z",fill:"#EFC078"}),(0,s.jsx)("path",{d:"M62 44C71.9411 44 80 35.9411 80 26C80 16.0589 71.9411 8 62 8C52.0589 8 44 16.0589 44 26C44 35.9411 52.0589 44 62 44Z",fill:"#762B0B"})]})};case"enterprise":return{...e5.RB[e],asset:()=>
4(0,s.jsxs)("svg",{width:"72",height:"28",viewBox:"0 0 72 37",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,s.jsx)("rect",{y:"18.2773",width:"18",height:"36",rx:"9",transform:"rotate(-90 0 18.2773)",fill:"#BE8FE1"}),(0,s.jsx)("path",{d:"M18 18.2773C15.6362 18.2773 13.2956 18.7429 11.1117 19.6475C8.92784 20.5521 6.94353 21.878 5.27208 23.5494C3.60062 25.2209 2.27475 27.2052 1.37017 29.389C0.465583 31.5729 -2.06649e-07 33.9135 0 36.2773L18 36.2773L18 18.2773Z",fill:"#995FC3"}),(0,s.jsx)("circle",{cx:"27",cy:"27.2773",r:"9",transform:"rotate(-90 27 27.2773)",fill:"#995FC3"}),(0,s.jsx)("path",{d:"M36 36.2773L72 36.2773V0.277344L36 0.277344L36 36.2773Z",fill:"#502C6B"})]})}}}(e);return t?(0,s.jsxs)("div",{className:"flex flex-1 flex-col rounded-2xl border border-gray-200 p-8 shadow-brand transition duration-300 hover:border-gray-300 hover:shadow-brand-hover",children:[(0,s.jsxs)("div",{className:"h3-new mb-2.5 flex flex-row items-center justify-between font-medium",children:[t.title,(0,s.jsx)(t.asset,{})]}),(0,s.jsx)("p",{className:"body-new mb-[24px] text-gray-600",children:t.description}),(0,s.jsxs)("div",{className:"mt-auto flex flex-col gap-3",children:[(0,s.jsxs)("div",{className:"meta-new flex items-center gap-2.5 text-gray-500",children:[(0,s.jsx)("span",{className:"h3-new font-medium text-gray-800",children:t.price_monthly}),t.price_monthly.includes("$")&&"per active user/month"]}),(0,s.jsx)(y(),{href:t.cta.url,"data-track":"Link Clicked","data-track-properties":JSON.stringify({label:t.cta.label}),children:(0,s.jsx)(x.ZP,{button:{link:{title:t.cta.label},buttonOptions:{color:"Enterprise"===t.title?"outline-black":"black"}},addArrow:!1,className:"!w-full"})})]})]},t.title):null};var e8=({title:e})=>(0,s.jsxs)(s.Fragment,{children:[e&&(0,s.jsx)("h2",{className:"h2-new mb-11 text-center text-gray-800",children:e}),(0,s.jsx)("div",{className:"flex flex-col gap-3 md:grid md:grid-cols-2 lg:grid-cols-4",children:["personal","starter","premium","enterprise"].map(e=>(0,s.jsx)(e7,{plan:e}))})]});let e9={none:"",white:"border-white",black:"border-gray-1000",black1:"border-gray-500",black4:"border-gray-900",grey1:"border-gray-0",grey2:"border-gray-50",grey3:"border-gray-200",grey4:"border-gray-300",red:"border-red-600",red1:"border-red-900",blue:"border-blue-700",blue1:"border-blue-900",yellow:"border-yellow-600",yellow1:"border-yellow-900",yellow2:"border-yellow-400",green1:"border-green-900",green:"border-green-600"};var te=({color:e})=>{if("custom"===e.color){let t={borderColor:e.customColor.value};return(0,s.jsx)("hr",{style:t})}return(0,s.jsx)("hr",{className:(0,r.Z)(e9[e.color])})},tt=a(22006),ta=a(16772);let ts={none:"",white:"bg-white",black:"bg-gray-1000",black1:"bg-gray-500",black4:"bg-gray-900",grey1:"bg-gray-0",grey2:"bg-gray-50",grey3:"bg-gray-200",grey4:"bg-gray-300",red:"bg-red-600",red1:"bg-red-900",blue:"bg-blue-700",blue1:"bg-blue-900",yellow:"bg-yellow-600",yellow1:"bg-yellow-900",yellow2:"bg-yellow-400",green1:"bg-green-900",green:"bg-green-600"};var ti=({title:e,description:t,hubspotForm:a,links:i,backgroundColor:l})=>{let n=l?.color!=="custom"?l:{background:l.customColor?.value};return(0,s.jsxs)("div",{className:(0,r.Z)(l&&ts[l.color],"grid grid-cols-1 gap-3 rounded-2xl p-8 md:grid-cols-2"),style:n,children:[(0,s.jsxs)("div",{className:"md:pr-8",children:[(0,s.jsx)("h2",{className:"h2-new",children:e}),t&&(0,s.jsx)(d.Z,{content:t,className:"!ts-prose mt-3 text-body-black"}),i&&(0,s.jsx)("div",{className:"mt-5 flex gap-2.5",children:i.map(e=>(0,s.jsx)(e4.ZP,{...e}))})]}),(0,s.jsx)("div",{className:"md:pl-8",children:(0,s.jsx)(ta.Z,{formId:a.formId,defaultId:a.defaultId,rudderstackEventName:a.rudderstackEventName})})]})},tl=a(49722);let tn=(e,t,a,i)=>{let n={hero:e3.ZP,flexCards:e6,divider:te,faq:tt.Z,form:ti,textCard:l.Z,masthead:C,media:_.Z,specialBlocks:eG,content:H,comparisonsBlocks:es,customersBlocks:e2,integrationsBlocks:eZ,docs:eB,resourcesBlocks:eW,stats:E,table:F,pricing_cards:Y,faqs:J,pricingPlans:e8,awsProcurementBlock:tl.Z}[e];return n?(0,s.jsx)(n,{...a,bgColor:t,pageTheme:i}):null};function tr({components:e=[],bgColor:t="white",sectionKey:a,pageTheme:l}){return e?.map((e,n)=>{let r=e.component,o=e.id||n,d=`${a}-${r}-${o}`;return s.jsx(i.Fragment,{children:tn(r,t,e[r],l)},d)})}},560:function(e,t,a){"use strict";var s=a(85893),i=a(90512),l=a(18273),n=a(39846);let r=e=>{switch(e){case"green":return"bg-green-800";
4case"blue":return"bg-blue-900";case"red":return"bg-red-900";case"orange":return"bg-yellow-800";case"purple":return"bg-purple-900";case"neutral":return"bg-gray-800";default:return"bg-white"}},o=(e="",t="mt")=>{switch(e){case"none":return"";case"12":return"mt"===t?"mt-3":"mb-3";case"24":return"mt"===t?"mt-6":"mb-6";case"32":return"mt"===t?"mt-8":"mb-8";case"40":return"mt"===t?"mt-10":"mb-10";case"48":return"mt"===t?"mt-12":"mb-12";case"64":return"mt"===t?"mt-16":"mb-16";case"75":return"mt"===t?"mt-[75px]":"mb-[75px]";case"80":return"mt"===t?"mt-20":"mb-20";case"96":return"mt"===t?"mt-24":"mb-24";case"100":return"mt"===t?"mt-[100px]":"mb-[100px]";case"120":return"mt"===t?"mt-[120px]":"mb-[120px]";case"160":return"mt"===t?"mt-40":"mb-40";default:return"mt"===t?`mt-${e}`:`mb-${e}`}};t.Z=function(e){let{uid:t="",components:a=[],options:{background:d,marginTop:c,marginBottom:u}={},pageTheme:p}=e,m="custom"===d.color;return(0,s.jsx)("section",{className:(0,i.Z)(c&&o(c,"mt"),u&&o(u,"mb"),{[(0,n.Z)(d?.color)||r(p)]:!m}),style:{background:m?d.customColor?.value:""},id:t,children:(0,s.jsx)("div",{className:"container-new",children:(0,s.jsx)(l.O,{pageTheme:p,components:a})})})}},22006:function(e,t,a){"use strict";var s=a(85893),i=a(90512),l=a(99261),n=a(57389);let r=e=>Array.isArray(e)?e.map(e=>e.children?.map(e=>e.text).join("")).join("\n"):e;t.Z=({title:e,content:t,description:a,links:o,className:d})=>{let c={"@context":"https://schema.org","@type":"FAQPage",mainEntity:t?.map(e=>({"@type":"Question",name:e.question,acceptedAnswer:{"@type":"Answer",text:r(e.answer)}}))};return(0,s.jsxs)("section",{className:(0,i.Z)("py-16 md:mt-0 md:py-32",d),children:[(0,s.jsx)("script",{type:"application/ld+json",dangerouslySetInnerHTML:{__html:JSON.stringify(c)}}),(0,s.jsxs)("div",{className:"container grid gap-8 md-large:grid-cols-5",children:[(0,s.jsxs)("div",{className:"col-span-2 flex flex-col lg:ps-8",children:[e&&(0,s.jsx)("h2",{className:"h2-new",children:e}),a&&(0,s.jsx)("p",{className:"body-new mb-6 mt-3 text-gray-700",children:a}),o&&(0,s.jsx)("div",{className:"flex gap-2.5",children:o.map(e=>(0,s.jsx)(l.ZP,{...e}))})]}),t&&(0,s.jsx)(n.Z,{faqs:t})]})]})}},48955:function(e,t,a){"use strict";a.d(t,{Z:function(){return tA}});var s=a(85893),i=a(67294),l=a(22006),n=a(27390),r=a(11163),o=a(2261),d=a(98918);a(15663),a(88947);var c=a(41664),u=a.n(c),p=a(90512),m=a(51727),g=a(41017),h=a(50532),f=a(58755);let x=({plan:e,className:t})=>(0,s.jsxs)("div",{className:(0,p.Z)(t,"w-lg:w-[365px] h-full w-full rounded-2xl border border-gray-200 bg-white shadow-brand transition duration-300 hover:border-gray-300 hover:shadow-brand-hover"),role:"presentation",children:[(0,s.jsxs)("div",{className:"flex w-full flex-col p-8 ",children:[(0,s.jsxs)("p",{className:"h3-new flex items-center justify-between",children:[e.title,(0,s.jsx)(h.Z,{type:`plan-${e.id}`,className:"h-[36px]"})]}),(0,s.jsx)("p",{className:"mt-3 h-[72px] text-base font-normal leading-6 tracking-[-0.16px] text-heading-black md:min-w-[300px]",children:e.description}),(0,s.jsxs)("div",{className:"",children:[(0,s.jsxs)("p",{className:"mt-6 flex items-center gap-2.5 text-4xl tracking-tight",children:[e.price_monthly,(0,s.jsx)("span",{className:"meta-new tracking-[-0.14px] text-gray-500",children:e.price_description})]}),(0,s.jsx)(u(),{href:e.cta.url,"data-track":"Link Clicked","data-track-properties":`{"label": "${e.cta.label}"}`,children:(0,s.jsx)(m.ZP,{button:{buttonOptions:{color:"Enterprise"===e.title?"outline-black":"black",addArrow:!1},link:{title:e.cta.label}},className:"mt-6"})}),(0,s.jsx)("p",{className:"meta-new mt-3.5 h-4 !font-normal",children:e.credit_card_description})]})]}),(0,s.jsx)("hr",{className:"border-gray-200"}),(0,s.jsx)("div",{className:"px-8 pb-6",children:e.cards&&e.cards?.highlights.length>0&&(0,s.jsxs)("div",{children:[(0,s.jsx)("h3",{className:"mb-3 mt-6 text-sm font-medium text-heading-black",children:e.cards.highlights_subheading}),(0,s.jsx)("ul",{children:e.cards.highlights.map(e=>(0,s.jsxs)("li",{className:"mb-2.5 flex items-start gap-1 text-sm tracking-tighter",children:[(0,s.jsx)(h.Z,{type:"check",className:"mt-[2px] w-[1.15rem] shrink-0"}),(0,s.jsx)("p",{children:e})]},e))})]})})]});var b=({textCard:e})=>{let t=(0,r.useRouter)(),[a,l]=(0,i.useState)(()=>"personal"===t.query.plan?"personal":"business"),[n,c]=(0,i.useState)(!1),[u,m]=(0,i.useState)(!0),[h,b]=(0,i.useState)(null),y=e=>"personal"===e?0:2;return(0,i.useEffect)(()=>
4{if(h?.initialized){let e=t.query.plan,a=y(e);l("personal"===e?"personal":"business"),h.slideTo(a)}},[t.query.plan,h]),(0,s.jsx)("section",{className:"relative bg-gray-50 pb-10 pt-24 lg:pt-44",children:(0,s.jsxs)("div",{className:"container-new",children:[(0,s.jsxs)("div",{className:"mb-6 flex flex-col items-start justify-between lg:flex-row lg:items-center lg:px-8",children:[(0,s.jsx)(g.Z,{className:"!mx-0 !text-left [&_h1]:text-5xl",...e}),(0,s.jsxs)("div",{className:"flex w-full items-center justify-between lg:w-auto",children:[(0,s.jsxs)("div",{className:"relative flex items-center gap-1.5 rounded-full border border-gray-200 bg-white p-2",children:[(0,s.jsx)("span",{className:(0,p.Z)("personal"===a?"w-[110.43px] translate-x-0":"w-[109px] translate-x-full lg:w-[112.41px] xl:translate-x-[calc(100%+4px)]","absolute z-0 h-[43.59px] rounded-full bg-gray-300 transition-transform duration-200 ease-in-out")}),(0,s.jsxs)("button",{className:(0,p.Z)("personal"!==a?"text-gray-500 hover:bg-gray-300":"text-gray-600","meta-new z-10 flex items-center gap-1 rounded-full px-4 py-3 font-medium transition-colors duration-200"),onClick:()=>{l("personal"),t.push("/pricing?plan=personal",void 0,{scroll:!1}),h&&h.slideTo(0)},"data-track":"Link Clicked","data-track-properties":'{"label": "Pricing page - Personal button"}',type:"button",children:[(0,s.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:[(0,s.jsx)("path",{d:"M10.6668 14V12.6667C10.6668 11.9594 10.3859 11.2811 9.88578 10.781C9.38568 10.281 8.70741 10 8.00016 10H4.00016C3.29292 10 2.61464 10.281 2.11454 10.781C1.61445 11.2811 1.3335 11.9594 1.3335 12.6667V14",stroke:"currentColor",strokeWidth:"1.33333",strokeLinecap:"round",strokeLinejoin:"round"}),(0,s.jsx)("path",{d:"M6.00016 7.33333C7.47292 7.33333 8.66683 6.13943 8.66683 4.66667C8.66683 3.19391 7.47292 2 6.00016 2C4.5274 2 3.3335 3.19391 3.3335 4.66667C3.3335 6.13943 4.5274 7.33333 6.00016 7.33333Z",stroke:"currentColor",strokeWidth:"1.33333",strokeLinecap:"round",strokeLinejoin:"round"}),(0,s.jsx)("path",{d:"M14.6665 13.9993V12.6659C14.6661 12.0751 14.4694 11.5011 14.1074 11.0341C13.7454 10.5672 13.2386 10.2336 12.6665 10.0859",stroke:"currentColor",strokeWidth:"1.33333",strokeLinecap:"round",strokeLinejoin:"round"}),(0,s.jsx)("path",{d:"M10.6665 2.08594C11.2401 2.2328 11.7485 2.5664 12.1116 3.03414C12.4747 3.50188 12.6717 4.07716 12.6717 4.66927C12.6717 5.26138 12.4747 5.83666 12.1116 6.3044C11.7485 6.77214 11.2401 7.10574 10.6665 7.2526",stroke:"currentColor",strokeWidth:"1.33333",strokeLinecap:"round",strokeLinejoin:"round"})]}),"Personal"]}),(0,s.jsxs)("button",{className:(0,p.Z)("business"!==a?"text-gray-500 hover:bg-gray-300":"text-gray-600","meta-new z-10 flex items-center gap-1 rounded-full px-4 py-3 font-medium transition-colors duration-200"),onClick:()=>{l("business"),t.push("/pricing?plan=business",void 0,{scroll:!1}),h&&h.slideTo(2)},"data-track":"Link Clicked","data-track-properties":'{"label": "Pricing page - Business button"}',type:"button",children:[(0,s.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",children:[(0,s.jsx)("path",{d:"M11.9998 1.33337H3.99984C3.26346 1.33337 2.6665 1.93033 2.6665 2.66671V13.3334C2.6665 14.0698 3.26346 14.6667 3.99984 14.6667H11.9998C12.7362 14.6667 13.3332 14.0698 13.3332 13.3334V2.66671C13.3332 1.93033 12.7362 1.33337 11.9998 1.33337Z",stroke:"currentColor",strokeWidth:"1.33333",strokeLinecap:"round",strokeLinejoin:"round"}),(0,s.jsx)("path",{d:"M6 14.6667V12H10V14.6667",stroke:"currentColor",strokeWidth:"1.33333",strokeLinecap:"round",strokeLinejoin:"round"}),(0,s.jsx)("path",{d:"M5.3335 4H5.34016",stroke:"currentColor",strokeWidth:"1.33333",strokeLinecap:"round",strokeLinejoin:"round"}),(0,s.jsx)("path",{d:"M10.6665 4H10.6732",stroke:"currentColor",strokeWidth:"1.33333",strokeLinecap:"round",strokeLinejoin:"round"}),(0,s.jsx)("path",{d:"M8 4H8.00667",stroke:"currentColor",strokeWidth:"1.33333",strokeLinecap:"round",strokeLinejoin:"round"}),(0,s.jsx)("path",{d:"M8 6.66663H8.00667",stroke:"currentColor",strokeWidth:"1.33333",strokeLinecap:"round",strokeLinejoin:"round"}),(0,s.jsx)("path",{d:"M8 9.33337H8.00667",stroke:"currentColor",strokeWidth:"1.33333",strokeLinecap:"round",strokeLinejoin:"round"}),(0,s.jsx)("path",{d:"M10.6665 6.66663H10.6732",stroke:"currentColor",strokeWidth:"1.33333",strokeLinecap:"round",strokeLinejoin:"round"}),(0,s.jsx)("path",{d:"M10.6665 9.33337H10.6732",stroke:"currentColor",strokeWidth:"1.33333",strokeLinecap:"round",strokeLinejoin:"round"}),(0,s.jsx)("path",{d:"M5.3335 6.66663H5.34016",stroke:"currentColor",strokeWidth:"1.33333",strokeLinecap:"round",strokeLinejoin:"round"}),(0,s.jsx)("path",{d:"M5.3335 9.33337H5.34016",stroke:"currentColor",strokeWidth:"1.33333",strokeLinecap:"round",strokeLinejoin:"round"})]}),"Business"]})]}),(0,s.jsxs)("ul",{className:"flex gap-1 lg:hidden",children:[(0,s.jsx)("li",{className:(0,p.Z)(u?"bg-gray-300 text-gray-400":"bg-gray-700 text-white","h-11 w-11 rounded-full p-1.5"),children:(0,s.jsx)("button",{type:"button",className:"flex h-full w-full items-center justify-center",onClick:()=>h&&h.slidePrev(),onKeyDown:()=>h&&h.slidePrev(),"aria-label":"Previous slide",disabled:u,children:(0,s.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,s.jsx)("path",{d:"M9.5 6L2.5 6",stroke:"currentColor",strokeWidth:"1.33333",strokeLinecap:"round",strokeLinejoin:"round"}),(0,s.jsx)("path",{d:"M6 9.5L2.5 6L6 2.5",stroke:"currentColor",strokeWidth:"1.33333",strokeLinecap:"round",strokeLinejoin:"round"})]})})}),(0,s.jsx)("li",{className:(0,p.Z)(n?"bg-gray-300 text-gray-400":"bg-gray-700 text-white","h-11 w-11 rounded-full p-1.5"),children:(0,s.jsx)("button",{type:"button",className:"flex h-full w-full items-center justify-center",onClick:()=>h&&h.slideNext(),onKeyDown:()=>h&&h.slideNext(),"aria-label":"Next slide",disabled:n,children:(0,s.jsxs)("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,s.jsx)("path",{d:"M2.5 6L9.5 6",stroke:"currentColor",strokeWidth:"1.33333",strokeLinecap:"round",strokeLinejoin:"round"}),(0,s.jsx)("path",{d:"M6 9.5L9.5 6L6 2.5",stroke:"currentColor",strokeWidth:"1.33333",strokeLinecap:"round",strokeLinejoin:"round"})]})})})]})]})]}),(0,s.jsx)("div",{className:"lg:h-[625px]",children:(0,s.jsxs)("div",{className:"relative left-0 right-0 -mx-5 overflow-hidden px-2 pb-4 lg:absolute lg:mx-auto lg:max-w-[1440px] lg:px-0",children:[(0,s.jsx)("div",{className:"pricing-gradient-overlay-left h-full"}),(0,s.jsx)("div",{className:"pricing-gradient-overlay-right h-full"}),(0,s.jsx)("div",{className:"mx-5 flex gap-3 pb-3 lg:mx-auto lg:max-w-[1120px]",children:(0,s.jsxs)(o.tq,{modules:[d.LW,d.Gk],spaceBetween:12,direction:"horizontal",slidesPerView:"auto",scrollbar:{hide:!1,draggable:!0},mousewheel:{sensitivity:.1,forceToAxis:!0},breakpoints:{1024:{slidesPerView:3,scrollbar:{hide:!1,draggable:!0,enabled:!0}},0:{slidesPerView:1,scrollbar:{enabled:!1}}},initialSlide:y(t.query.plan),onSlideChange:e=>{e.progress>.9?c(!0):c(!1),e.progress<.1?m(!0):m(!1),0===e.activeIndex||1===e.activeIndex?l("personal"):l("business")},onSwiper:e=>b(e),className:"min-w-full !overflow-visible",children:[f.m$.map(e=>
4(0,s.jsx)(o.o5,{className:"lg:!w-[365px]",children:(0,s.jsx)(x,{plan:f.RB[e],className:"business"===a?"[&_a]:opacity-50 [&_h3]:opacity-50 [&_hr]:opacity-50 [&_p]:opacity-50 [&_ul]:opacity-50":""})},f.RB[e].title)),f.Vx.map(e=>(0,s.jsx)(o.o5,{className:"lg:!w-[365px]",children:(0,s.jsx)(x,{plan:f.RB[e],className:"personal"===a?"[&_a]:opacity-50 [&_h3]:opacity-50 [&_hr]:opacity-50 [&_p]:opacity-50 [&_ul]:opacity-50":""})},f.RB[e].title))]})})]})})]})})},y=a(31304),v=a.n(y);let w=({featureRefs:e})=>(0,s.jsxs)("table",{className:"relative w-full text-left",children:[(0,s.jsx)("thead",{className:"pricing-table-nav-gradient sticky top-[151px] z-20",children:(0,s.jsxs)("tr",{className:"w-full",children:[(0,s.jsx)("th",{scope:"col",className:"featured-body-new ps-8 font-medium text-gray-700",children:"Plans"}),f.oP.map(e=>(0,s.jsx)("td",{className:"pb-5 pt-2.5 text-center font-medium text-gray-700 last:pr-8",width:"15%",children:(0,s.jsxs)("div",{className:"inline-flex items-center gap-1",children:[f.RB[e].title,(0,s.jsx)(h.Z,{type:`plan-${f.RB[e].id}`,className:"h-[18px]"})]})},f.RB[e].title))]})}),(0,s.jsx)("tbody",{children:f.tW.map(t=>(0,s.jsxs)(i.Fragment,{children:[(0,s.jsx)("tr",{id:v()(t.title,{lower:!0}),className:"scroll-mt-44",children:(0,s.jsx)("th",{ref:a=>a&&(e.current[v()(t.title,{lower:!0})]=a),scope:"colgroup",colSpan:f.oP.length+1,className:"border-b pb-4 pl-5 ps-8 pt-12 text-xl font-medium text-gray-700",children:t.title})}),t.features.map((e,a)=>(0,s.jsxs)("tr",{className:`relative transition-colors hover:bg-white ${a+1!==t.features.length&&"border-b"}`,id:v()(f.R2[e].title,{lower:!0}),children:[(0,s.jsx)("th",{className:"body-new px-5 py-2.5 ps-8 font-normal text-gray-700 text-opacity-80",children:f.R2[e].tooltip?(0,s.jsx)(k,{label:f.R2[e].title,tip:f.R2[e].tooltip}):f.R2[e].title}),f.oP.map(t=>(0,s.jsx)("td",{className:"body-new px-3 py-2.5 text-center text-gray-900 last:pr-8",children:(0,s.jsx)(T,{plan:t,feature:e})},f.RB[t].title+f.R2[e].title)),(0,s.jsx)("td",{className:"pointer-events-none absolute inset-y-0 left-0 w-7 bg-gradient-to-r from-gray-50 to-transparent","aria-hidden":"true"}),(0,s.jsx)("td",{className:"pointer-events-none absolute inset-y-0 right-0 w-7 bg-gradient-to-l from-gray-50 to-transparent","aria-hidden":"true"})]},f.R2[e].title))]},t.title))})]}),T=({plan:e,feature:t})=>f.RB[e].quantities[t]?f.RB[e].quantities[t]:f.RB[e].links[t]?f.RB[e].links[t].url?(0,s.jsx)(u(),{href:f.RB[e].links[t].url,className:"text-sm underline hover:no-underline","data-track":"Link Clicked","data-track-properties":`{"label": "${f.RB[e].links[t].text}"}`,children:f.RB[e].links[t].text}):(0,s.jsx)("span",{className:"text-sm",children:f.RB[e].links[t]?.text}):f.RB[e].features.includes(t)?(0,s.jsx)(h.Z,{type:"check",className:"mx-auto w-5"}):(0,s.jsx)(h.Z,{type:"minus",className:"mx-auto w-5 opacity-[.15]"}),k=({label:e,tip:t})=>(0,s.jsxs)("div",{className:"group relative inline-block",children:[(0,s.jsx)("span",{className:"border-b border-dotted border-current",children:e}),(0,s.jsx)("span",{className:"pointer-events-none absolute left-[calc(100%+1em)] top-0 z-10 w-max max-w-xs rounded bg-gray-1000 p-3 text-sm text-white opacity-0 group-hover:opacity-100",children:t})]});var C=()=>{let[e,t]=(0,i.useState)("users-and-devices"),a=(0,i.useRef)({});return(0,i.useEffect)(()=>{let e=a.current,s=new IntersectionObserver(e=>{e.forEach(e=>{e.isIntersecting&&t(e.target.id)})},{rootMargin:"0px 0px -50% 0px",threshold:1});return Object.keys(e).forEach(e=>{let t=document.getElementById(e);t&&s.observe(t)}),()=>{Object.keys(e).forEach(e=>{let t=document.getElementById(e);t&&s.unobserve(t)})}},[]),(0,s.jsx)("section",{className:"hidden bg-gray-50 py-20 lg:block",children:(0,s.jsxs)("div",{className:"container-new relative",children:[(0,s.jsx)("h2",{className:"text-center text-[28px] font-medium tracking-tight text-heading-black",children:"Compare all plans"}),(0,s.jsxs)("p",{className:"mb-11 text-center",children:["Have any questions? Check out our"," ",(0,s.jsx)(u(),{href:"/kb/1366/faq/",className:"underline hover:no-underline","data-track":"Link Clicked","data-track-properties":'{"label": "product FAQ"}',children:"product FAQ"}),","," ",(0,s.jsx)(u(),{href:"/kb/1251/pricing-faq/",className:"underline hover:no-underline","data-track":"Link Clicked","data-track-properties":'{"label": "licensing FAQ"}',children:"licensing FAQ"}),", or"," ",(0,s.jsx)(u(),{href:"/contact/sales",className:"underline hover:no-underline","data-track":"Link Clicked","data-track-properties":'{"label": "contact sales"}',children:"contact our sales team"}),"."]}),(0,s.jsxs)("div",{className:"sticky top-[66px] z-20 flex items-center justify-center bg-gray-0 py-3 xl:justify-between xl:px-8",children:[(0,s.jsx)("p",{className:"meta-new hidden !font-normal xl:block",children:"Scroll to"}),(0,s.jsx)("ul",{className:"relative flex w-fit gap-1.5 rounded-full border border-gray-200 bg-white p-2",children:f.tW.map(a=>(0,s.jsx)("li",{className:(0,p.Z)(e===v()(a.title,{lower:!0})&&"bg-gray-300 text-gray-600","meta-new relative z-10 rounded-full text-gray-500 hover:bg-gray-300"),children:(0,s.jsx)("a",{href:`#${v()(a.title,{lower:!0})}`,onClick:()=>t(v()(a.title,{lower:!0})),onKeyDown:()=>t(v()(a.title,{lower:!0})),className:"block h-full w-full scroll-smooth p-3",children:a.id})},a.title))})]}),(0,s.jsx)(w,{featureRefs:a})]})})},_=a(49722),j=a(16772),S=({hubspotForm:e,isOpen:t,onClose:a})=>{let l=(0,i.useRef)(null);return((0,i.useEffect)(()=>{let e=e=>{l.current&&!l.current.contains(e.target)&&a()};return t?document.addEventListener("mousedown",e):document.removeEventListener("mousedown",e),()=>{document.removeEventListener("mousedown",e)}},[t,a]),t)?(0,s.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black bg-opacity-50",children:(0,s.jsxs)("div",{ref:l,className:"relative mx-brand-32 mt-[65px] w-[768px] overflow-y-auto rounded-brand-lg border border-gray-200 bg-white p-brand-32 text-gray-700 shadow-2",children:[(0,s.jsxs)("div",{className:"mb-6 flex items-center justify-between",children:[(0,s.jsx)("h2",{className:"title-sm mb-2 font-medium leading-9 tracking-[-0.96px]",children:"Request Private offer"}),(0,s.jsx)("button",{className:"flex items-center justify-center rounded-brand-sm p-brand-8 text-gray-500 hover:bg-gray-100 hover:text-gray-700",onClick:a,type:"button",children:(0,s.jsxs)("svg",{width:"16",height:"17",viewBox:"0 0 16 17",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,s.jsx)("rect",{width:"16",height:"16",transform:"translate(0 0.5)",fill:"transparent"}),(0,s.jsx)("path",{d:"M12 4.5L4 12.5",stroke:"currentColor",strokeWidth:"1.33333",strokeLinecap:"round",strokeLinejoin:"round"}),(0,s.jsx)("path",{d:"M4 4.5L12 12.5",stroke:"currentColor",strokeWidth:"1.33333",strokeLinecap:"round",strokeLinejoin:"round"})]})})]}),(0,s.jsx)(j.Z,{formId:e.formId,defaultId:e.defaultId,rudderstackEventName:e.rudderstackEventName})]})}):null};let A=()=>(0,s.jsxs)("p",{className:"body-new text-gray-700",children:["Get more out of Tailscale with optional add-ons. Available on all plans. Head to the"," ",(0,s.jsx)("a",{href:"https://console.tailscale.com/admin/settings/general",className:"underline hover:no-underline",children:"settings page"})," ","to configure your add-ons."]}),N=[{image:()=>(0,s.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"40",height:"40",viewBox:"0 0 40 40",fill:"none",children:[(0,s.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M0 20C0 31.0531 8.96279 40 20 40C31.0372 40 40 31.0531 40 20C40 8.94695 31.0531 0 20 0C8.94695 0 0 8.94695 0 20Z",fill:"#192E45"}),(0,s.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M2.67648 17.6089L4.19667 15.4869C4.19667 15.5028 4.10166 18.5431 4.10166 18.5431L4.52921 16.247C5.79604 18.8123 8.89976 22.3595 11.7343 24.2597C12.0352 24.4656 12.2885 24.6872 12.4627 24.9089C12.8269 25.0515 13.1911 25.1306 13.5553 25.194C13.7454 25.2256 13.9512 25.2415 14.1412 25.2573C14.3313 25.2732 14.5371 25.2732 14.7272 25.2732C14.9172 25.2732 15.1072 25.2573 15.2972 25.2415C15.4872 25.2256 15.6773 25.194 15.8673 25.1623C16.0573 25.1306 16.2473 25.099 16.4215 25.0356C16.6116 24.9881 16.7857 24.9406 16.9758 24.8773C17.15 24.8298 17.34 24.7506 17.5142 24.6872C17.6884 24.6081 17.8625 24.5447 18.0367 24.4497C18.2109 24.3547 18.3851 24.2755 18.5435 24.1805C18.7177 24.1013 18.876 23.9905 19.0502 23.8955C19.2244 23.8005 19.3827 23.6896 19.5569 23.5946C19.7311 23.4996 19.8895 23.3888 20.0478 23.2937C20.2062 23.1829 20.3804 23.0879 20.5387 22.97
47C20.6971 22.8662 20.8713 22.7712 21.0454 22.6603L21.2038 22.5653L21.283 22.6128L22.4231 23.3729L21.2671 23.072C21.1563 23.1987 21.0454 23.3254 20.9188 23.4521C20.7762 23.5946 20.6179 23.7371 20.4754 23.8796C20.317 24.0063 20.1587 24.1488 19.9845 24.2597C19.8103 24.3864 19.6519 24.4972 19.4619 24.6081C19.1135 24.8298 18.7335 25.0198 18.3376 25.1781C18.1476 25.2573 17.9417 25.3365 17.7517 25.3998C17.5458 25.4632 17.3558 25.5265 17.15 25.574C16.9441 25.6215 16.7382 25.669 16.5324 25.7007C16.3265 25.7324 16.1207 25.7482 15.9148 25.7799C15.5031 25.7957 15.0755 25.7957 14.6638 25.7324C14.458 25.7007 14.2521 25.669 14.0462 25.6215C13.8404 25.574 13.6504 25.5107 13.4603 25.4473C13.1278 25.3207 12.7952 25.1623 12.4944 24.9723C12.4944 24.9723 11.4017 25.1306 11.8451 25.9541C12.2885 26.7775 12.9536 26.6983 12.6369 27.6643C12.4152 28.1869 12.0985 28.6936 11.7501 29.1686C11.0217 30.1504 9.88155 31.0214 9.9924 31.5439C15.1705 37.9256 26.8412 37.0388 31.2751 31.3381C31.2117 30.5146 29.9132 30.1188 29.0106 28.1077C29.264 28.1869 29.644 28.2977 29.644 28.2819C29.644 28.266 28.5672 26.5241 28.5197 26.35L29.2165 26.3975C29.2165 26.3975 28.298 25.2573 28.2663 25.1465L29.2006 25.0198C29.2006 25.0198 28.0288 23.6738 28.013 23.5629L29.2006 23.753L27.9021 22.1853H28.5197L27.7913 21.1243C27.6646 21.0768 27.5379 21.0451 27.4112 21.0135C27.2529 20.9659 27.0945 20.9184 26.9362 20.8709C25.1626 20.3167 23.4841 19.81 21.8689 18.7965C19.6044 17.3872 17.5775 15.6611 16.0573 14.3151L13.0011 12.8266C10.0716 12.6049 7.31623 12.6841 5.63768 13.0166L6.71448 11.1797L5.06761 13.1591C4.95676 13.1275 4.92509 13.0641 4.92509 13.0641L5.03594 10.6255L4.51338 12.8266C4.35502 12.7474 4.165 12.7157 3.97498 12.7157C3.24655 12.7157 2.66064 13.3017 2.66064 14.0301C2.66064 14.6952 3.15154 15.2494 3.80079 15.3286L2.67648 17.6089Z",fill:"#D0933A"}),(0,s.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M4.51317 12.795C4.35481 12.7316 4.16479 12.6841 3.9906 12.6841C3.26218 12.6841 2.67627 13.27 2.67627 13.9984C2.67627 14.6319 3.13549 15.1703 3.73724 15.2969C3.75307 15.2969 3.75307 15.2969 3.76891 15.2969C4.16479 15.1703 4.95655 14.1093 4.82987 13.4442C4.78237 13.2067 4.67152 12.985 4.51317 12.795Z",fill:"#FFCC86"}),(0,s.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M16.057 11.1006C15.8195 10.4513 15.8828 9.61206 16.2154 8.8203C16.6904 7.72766 17.5931 6.99924 18.4482 6.99924C18.6223 6.99924 18.7807 7.03091 18.9391 7.09425C19.4299 6.65086 20 6.28665 20.6334 6.03328C24.133 4.63978 29.2478 7.12592 30.5622 10.5622C31.1956 12.2249 31.0056 14.046 30.4672 15.7087C30.0238 17.0705 28.4086 19.0341 29.0103 20.5226C28.7728 20.4593 23.7688 18.9074 22.3753 18.0206C20.1425 16.6271 18.1315 14.9169 16.6271 13.5867L16.5796 13.5392L11.4965 11.1323C11.4331 11.1006 11.3698 11.0689 11.3223 11.0372C12.0507 11.0372 14.8219 11.3698 16.057 11.1006Z",fill:"#FDD321"}),(0,s.jsx)("path",{d:"M17.5622 11.6706C17.4196 11.6706 17.293 11.639 17.1979 11.5914C16.9446 11.4806 16.7545 11.2747 16.6279 10.958C16.4062 10.4196 16.4695 9.67538 16.7704 8.97862C17.1663 8.07601 17.9105 7.4426 18.5914 7.4426C18.7181 7.4426 18.8448 7.47427 18.9715 7.52177C19.304 7.66429 19.5416 7.99683 19.6207 8.47189C19.7158 8.97862 19.6366 9.56453 19.3832 10.1188C18.9873 11.0214 18.2272 11.6706 17.5622 11.6706Z",fill:"white"}),(0,s.jsx)("path",{d:"M18.5759 7.69592C18.6709 7.69592 18.7659 7.71175 18.861 7.75926C19.1143 7.8701 19.3043 8.15514 19.3677 8.53519C19.4469 8.99441 19.3835 9.53281 19.146 10.0395C18.7976 10.8471 18.1167 11.433 17.5466 11.433C17.4516 11.433 17.3566 11.4172 17.2774 11.3855C17.0399 11.2905 16.9132 11.0688 16.8499 10.8946C16.6598 10.4196 16.7073 9.72284 16.9765 9.08942C17.3408 8.28182 18.0058 7.69592 18.5759 7.69592ZM18.5759 7.22086C17.8158 7.22086 16.9766 7.91761 16.5332 8.91523C16.2006 9.65949 16.1531 10.4671 16.3906 11.0847C16.5332 11.4489 16.7707 11.7022
417.0716 11.8448C17.2141 11.9081 17.3724 11.9398 17.5466 11.9398C18.3067 11.9398 19.146 11.243 19.5735 10.2454C19.8427 9.64366 19.9219 9.01025 19.8269 8.45601C19.7319 7.90177 19.4469 7.50589 19.0351 7.3317C18.9085 7.25253 18.7501 7.22086 18.5759 7.22086Z",fill:"#1D2A3A"})]}),title:"Mullvad",description:"Browse the internet privately, and securely with Tailscale and Mullvad.",price:"$5",priceDescription:"Per month for Mullvad on up to 5 devices",buttonText:"Get started",buttonUrl:"https://login.tailscale.com/start"}],D=()=>(0,s.jsx)("p",{className:"body-new text-gray-700",children:"Get started with Tailscale through your preferred cloud marketplace â consolidate billing, and speed up deployment."}),V=[{image:()=>(0,s.jsxs)("svg",{width:"144",height:"26",viewBox:"0 0 144 26",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,s.jsxs)("g",{clipPath:"url(#clip0_972_5518)",children:[(0,s.jsx)("path",{d:"M54.1698 14.985V8.19932C54.1698 7.53764 54.0428 7.05899 53.7887 6.73519C53.5347 6.42547 53.1395 6.25653 52.6032 6.25653C51.6435 6.25653 50.6697 6.55217 49.6959 7.14345C49.7101 7.242 49.7101 7.34055 49.7101 7.4391C49.7101 7.53764 49.7101 7.65027 49.7101 7.74882V14.9569H47.7483V8.17116C47.7483 7.50949 47.6213 7.03083 47.3673 6.70703C47.1132 6.39731 46.7181 6.22837 46.1818 6.22837C45.1797 6.22837 44.22 6.52401 43.3027 7.10122V14.9428H41.3409V4.94725H42.9781L43.1757 5.94681C44.4458 5.07396 45.6737 4.65161 46.8733 4.65161C48.1011 4.65161 48.9338 5.11619 49.3572 6.04535C50.6556 5.11619 51.9681 4.65161 53.2666 4.65161C54.1698 4.65161 54.8755 4.90502 55.3553 5.42591C55.8493 5.93273 56.0892 6.6648 56.0892 7.60804V14.9428H54.1698V14.985Z",fill:"#252F3E"}),(0,s.jsx)("path",{d:"M64.2183 14.985L64.0631 13.9573C63.5832 14.3656 63.0611 14.6753 62.4965 14.9006C61.9179 15.1258 61.3534 15.2384 60.7888 15.2384C59.8574 15.2384 59.1094 14.9709 58.5448 14.436C57.9803 13.901 57.6981 13.1971 57.6981 12.2961C57.6981 11.3388 58.0368 10.5645 58.7283 10.0013C59.4199 9.42413 60.3372 9.14256 61.4945 9.14256C62.2566 9.14256 63.0893 9.25519 63.9784 9.48044V8.18524C63.9784 7.48133 63.8232 6.97452 63.4986 6.69295C63.174 6.39731 62.6235 6.25653 61.8473 6.25653C60.7324 6.25653 59.5751 6.45362 58.3755 6.86189V5.48223C58.8553 5.22882 59.434 5.0458 60.1114 4.90502C60.803 4.76424 61.4945 4.69385 62.186 4.69385C63.4421 4.69385 64.3595 4.94726 64.9522 5.46815C65.545 5.98904 65.8413 6.77742 65.8413 7.84737V14.985H64.2183ZM61.2546 13.7602C62.1437 13.7602 63.0611 13.4223 63.9784 12.7607V10.7475C63.2869 10.5785 62.5953 10.4941 61.8897 10.4941C60.4078 10.4941 59.6598 11.0713 59.6598 12.2116C59.6598 12.7043 59.8009 13.0985 60.0691 13.366C60.3513 13.6194 60.7465 13.7602 61.2546 13.7602Z",fill:"#252F3E"}),(0,s.jsx)("path",{d:"M68.0854 14.9849V4.98934H69.7225L69.9342 6.46755C70.3011 6.07336 70.6399 5.76364 70.9645 5.55246C71.2891 5.34129 71.5996 5.17235 71.9383 5.07381C72.2629 4.97526 72.6298 4.91895 73.0109 4.91895C73.2649 4.91895 73.5331 4.93302 73.8153 4.97526V6.74911C73.3919 6.6928 73.0391 6.66464 72.7427 6.66464C71.6842 6.66464 70.781 6.97436 70.033 7.60788V14.9849H68.0854Z",fill:"#252F3E"}),(0,s.jsx)("path",{d:"M75.0291 14.9849V0.399902H76.9908V9.35365L81.2388 5.00348H83.624L78.8819 9.74784L83.9344 14.9849H81.4646L76.9767 10.2547V14.9849H75.0291Z",fill:"#252F3E"}),(0,s.jsx)("path",{d:"M85.7268 10.4094C85.7551 11.5357 86.0373 12.3804 86.5736 12.9154C87.1099 13.4503 87.9285 13.7178 89.0575 13.7178C90.1019 13.7178 91.1604 13.5207 92.233 13.1125V14.5062C91.2874 15.013 90.1301 15.2805 88.7612 15.2805C87.1382 15.2805 85.9103 14.83 85.0918 13.9431C84.2591 13.0561 83.8498 11.7328 83.8498 9.98709C83.8498 8.31179 84.2591 7.016
459 85.0918 6.10151C85.9244 5.18642 87.0817 4.70776 88.5636 4.70776C89.8197 4.70776 90.7794 5.05972 91.4427 5.76363C92.1201 6.46754 92.4447 7.46709 92.4447 8.74821C92.4447 9.36765 92.3882 9.93078 92.2895 10.4235H85.7268V10.4094ZM88.4507 6.1719C87.618 6.1719 86.9688 6.42531 86.5172 6.90396C86.0514 7.3967 85.7974 8.12877 85.7268 9.10017H90.6523C90.6665 9.00162 90.6665 8.8186 90.6665 8.59335C90.6665 7.79089 90.483 7.18553 90.102 6.77726C89.735 6.38307 89.1846 6.1719 88.4507 6.1719Z",fill:"#252F3E"}),(0,s.jsx)("path",{d:"M100.094 14.7457C99.4448 14.9991 98.7109 15.1258 97.9065 15.1258C96.0294 15.1258 95.0979 14.1966 95.0979 12.3242V6.524H93.2773V5.25696L95.1544 5.01763L95.4508 2.17383H97.0456V4.97539H100.009V6.50992H97.0456V12.2257C97.0456 12.7184 97.1585 13.0563 97.3702 13.2534C97.5818 13.4505 97.9629 13.549 98.4851 13.549C99.0214 13.549 99.5577 13.4786 100.08 13.3519V14.7457H100.094Z",fill:"#252F3E"}),(0,s.jsx)("path",{d:"M101.435 19.0395V4.98949H103.072L103.255 6.0172C104.257 5.13027 105.372 4.69385 106.6 4.69385C107.884 4.69385 108.886 5.15843 109.62 6.08759C110.354 7.01675 110.721 8.26971 110.721 9.86055C110.721 11.4795 110.326 12.7747 109.55 13.7461C108.774 14.7175 107.743 15.2103 106.445 15.2103C105.259 15.2103 104.243 14.8161 103.382 14.0418V19.0536H101.435V19.0395ZM106.036 6.27061C105.104 6.27061 104.215 6.56625 103.382 7.17161V12.6762C104.243 13.3097 105.104 13.6194 105.993 13.6194C107.814 13.6194 108.717 12.3946 108.717 9.9591C108.717 8.70614 108.491 7.79105 108.054 7.18569C107.63 6.58033 106.953 6.27061 106.036 6.27061Z",fill:"#252F3E"}),(0,s.jsx)("path",{d:"M116.084 14.8441C115.647 14.999 115.181 15.0835 114.659 15.0835C113.967 15.0835 113.431 14.8864 113.064 14.4781C112.697 14.0839 112.514 13.5067 112.514 12.7606V0.399902H114.475V12.6339C114.475 12.9295 114.532 13.1548 114.659 13.2955C114.786 13.4363 114.997 13.5067 115.28 13.5067C115.548 13.5067 115.816 13.4926 116.084 13.4504V14.8441Z",fill:"#252F3E"}),(0,s.jsx)("path",{d:"M123.649 14.985L123.494 13.9573C123.014 14.3656 122.492 14.6753 121.927 14.9006C121.348 15.1258 120.784 15.2384 120.219 15.2384C119.288 15.2384 118.54 14.9709 117.975 14.436C117.411 13.901 117.129 13.1971 117.129 12.2961C117.129 11.3388 117.467 10.5645 118.159 10.0013C118.85 9.42413 119.768 9.14256 120.925 9.14256C121.687 9.14256 122.52 9.25519 123.409 9.48044V8.18524C123.409 7.48133 123.254 6.97452 122.929 6.69295C122.604 6.39731 122.054 6.25653 121.278 6.25653C120.163 6.25653 119.006 6.45362 117.806 6.86189V5.48223C118.286 5.22882 118.864 5.0458 119.542 4.90502C120.233 4.76424 120.925 4.69385 121.617 4.69385C122.873 4.69385 123.79 4.94726 124.383 5.46815C124.975 5.98904 125.272 6.77742 125.272 7.84737V14.985H123.649ZM120.685 13.7602C121.574 13.7602 122.492 13.4223 123.409 12.7607V10.7475C122.717 10.5785 122.026 10.4941 121.32 10.4941C119.838 10.4941 119.09 11.0713 119.09 12.2116C119.09 12.7043 119.231 13.0985 119.5 13.366C119.782 13.6194 120.177 13.7602 120.685 13.7602Z",fill:"#252F3E"}),(0,s.jsx)("path",{d:"M134.502 14.6048C133.74 14.999 132.851 15.1961 131.849 15.1961C130.296 15.1961 129.111 14.7456 128.278 13.8587C127.459 12.9718 127.036 11.6906 127.036 10.0013C127.036 8.32595 127.459 7.04483 128.306 6.12975C129.153 5.21466 130.353 4.76416 131.905 4.76416C132.794 4.76416 133.613 4.94718 134.389 5.31321V6.70695C133.641 6.46762 132.907 6.355 132.173 6.355C131.072 6.355 130.268 6.63656 129.788 7.19969C129.294 7.76282 129.054 8.64975 129.054 9.87455V10.128C129.054 11.3246 129.308 12.1975 129.788 12.7606C130.282 13.3237 131.058 13.6053 132.131 13.6053C132.836 13.6053 133.613 13.4786 134.459 13.2111V14.6048H134.502Z",fill:"#252F3E"}),(0,s.jsx)("path",{d:"M137.282 10.4094C137.31 11.5357 137.593 12.3804 138.129 12.9154C138.665 13.4503 139.484 13.7178 140.613 13.7178C141.657 13.7178 142.716 13.5207 143.788 13.1125V14.5062C142.843 15.013 141.685 15.2805 140.316 15.2805C138.693 15.2805 137.466 14.83 136.647 13.9431C135.814 13.0561 135.405 11.7328 135.405 9.98709C135.405 8.31179 135.814 7.01659 136.647 6.10151C137.48 5.18642 138.637 4.70776 140.119 4.70776C141.375 4.70776 142.335 5.05972 142.998 5.76363C143.675 6.46754 144 7.46709 144 8.74821C144 9.36765 143.943 9.93078 143.845 10.4235H137.282V10.4094ZM140.006 6.1719C139.173 6.1719
4138.524 6.42531 138.072 6.90396C137.607 7.3967 137.353 8.12877 137.282 9.10017H142.208C142.222 9.00162 142.222 8.8186 142.222 8.59335C142.222 7.79089 142.038 7.18553 141.657 6.77726C141.276 6.38307 140.726 6.1719 140.006 6.1719Z",fill:"#252F3E"}),(0,s.jsx)("path",{d:"M30.488 15.2805C29.8529 15.2805 29.2319 15.2101 28.625 15.0693C28.0182 14.9285 27.5525 14.7737 27.2278 14.5906C27.0303 14.478 26.9032 14.3654 26.8609 14.2528C26.8045 14.1401 26.7903 14.0275 26.7903 13.9149V13.3095C26.7903 13.0561 26.875 12.9294 27.0585 12.9294C27.1291 12.9294 27.1996 12.9435 27.2843 12.9716C27.3549 12.9998 27.4678 13.042 27.5948 13.0983C28.0041 13.2814 28.4416 13.4221 28.9214 13.5207C29.4013 13.6192 29.8811 13.6615 30.361 13.6615C31.1231 13.6615 31.7017 13.5348 32.1251 13.2673C32.5344 12.9998 32.7461 12.6197 32.7461 12.127C32.7461 11.7891 32.6332 11.5075 32.4215 11.2823C32.2098 11.057 31.8005 10.8458 31.2078 10.6487L29.4577 10.0997C28.5686 9.81812 27.9335 9.40986 27.5242 8.87489C27.1291 8.33991 26.9174 7.76271 26.9174 7.12919C26.9174 6.62237 27.0303 6.17187 27.242 5.79176C27.4537 5.41164 27.75 5.07377 28.1029 4.80628C28.4557 4.5388 28.8791 4.32762 29.3589 4.18684C29.8388 4.04606 30.3469 3.97567 30.8832 3.97567C31.1513 3.97567 31.4194 3.98974 31.7017 4.03198C31.9699 4.07421 32.238 4.11645 32.4779 4.17276C32.7179 4.22908 32.9578 4.28539 33.1695 4.35578C33.3812 4.42617 33.5505 4.49656 33.6776 4.56695C33.8469 4.6655 33.9598 4.76405 34.0304 4.86259C34.101 4.96114 34.1292 5.08785 34.1292 5.25678V5.81991C34.1292 6.07332 34.0445 6.20002 33.861 6.20002C33.7622 6.20002 33.607 6.15779 33.3953 6.05924C32.7038 5.74952 31.9275 5.59466 31.0807 5.59466C30.3892 5.59466 29.8529 5.70729 29.4718 5.93254C29.0908 6.15779 28.9073 6.50975 28.9073 7.00248C28.9073 7.34036 29.0202 7.62192 29.2601 7.86125C29.5001 8.08651 29.9376 8.31176 30.5868 8.52293L32.2945 9.07198C33.1695 9.35354 33.7905 9.73366 34.1574 10.2264C34.5243 10.7191 34.7219 11.2823 34.7219 11.9158C34.7219 12.4367 34.6231 12.9013 34.4114 13.3095C34.1997 13.7178 33.9034 14.0838 33.5364 14.3795C33.1695 14.6751 32.7179 14.9004 32.1957 15.0552C31.6735 15.196 31.109 15.2805 30.488 15.2805ZM15.0059 14.9567C14.7942 14.9567 14.6389 14.9144 14.5401 14.844C14.4413 14.7737 14.3567 14.6047 14.2861 14.3654L11.4635 5.05969C11.3929 4.82036 11.3647 4.6655 11.3647 4.58103C11.3647 4.38394 11.4635 4.28539 11.6611 4.28539H12.8466C13.0724 4.28539 13.2276 4.32762 13.3264 4.39801C13.4111 4.4684 13.4958 4.63734 13.5663 4.87667L15.5986 12.8309L17.4474 4.87667C17.5039 4.63734 17.5745 4.48248 17.6732 4.39801C17.772 4.32762 17.9273 4.28539 18.1531 4.28539H19.1269C19.3527 4.28539 19.508 4.32762 19.6067 4.39801C19.7055 4.4684 19.7761 4.63734 19.8326 4.87667L21.7378 12.9435L23.8266 4.87667C23.8971 4.63734 23.9818 4.48248 24.0665 4.39801C24.1512 4.32762 24.3205 4.28539 24.5463 4.28539H25.6613C25.8589 4.28539 25.9577 4.38394 25.9577 4.58103C25.9577 4.63734 25.9435 4.69366 25.9435 4.76405C25.9293 4.83444 25.9012 4.93299 25.8588 5.05969L22.9515 14.3654C22.8809 14.6047 22.7963 14.7596 22.6975 14.844C22.5987 14.9144 22.4434 14.9567 22.2317 14.9567H21.2015C20.9757 14.9567 20.8204 14.9144 20.7216 14.83C20.6228 14.7455 20.5523 14.5906 20.4958 14.3513L18.6188 6.60829L16.7558 14.3513C16.6994 14.5906 16.6288 14.7455 16.53 14.83C16.4312 14.9144 16.276 14.9567 16.0502 14.9567H15.0059ZM5.31016 13.6474C5.70532 13.6474 6.11461 13.577 6.55211 13.4221C6.98962 13.2814 7.37068 13.0139 7.69528 12.6478C7.89286 12.4226 8.034 12.1692 8.10456 11.8735C8.17513 11.592 8.21746 11.24 8.21746 10.8318V10.3249C7.86464 10.2405 7.49769 10.1701 7.10253 10.1278C6.72147 10.0856 6.34042 10.0575 5.97347 10.0575C5.16902 10.0575 4.57627 10.2123 4.1811 10.5361C3.78594 10.8599 3.58835 11.3245 3.58835 11.9299C3.58835 12.493 3.72948 12.9153 4.02586 13.1969C4.35046 13.5066 4.75974 13.6474 5.31016 13.6474ZM10.2074 11.8172C10.2074 12.2677 10.2498 12.6197 10.3486 12.8872C10.4332 13.1547 10.5744 13.4362 10.7437 13.7459C10.8002 13.8445 10.8284 13.929 10.8284 14.0134C10.8284 14.1401 10.7578 14.2528 10.6026 14.3654L9.82636 14.9004C9.71346 14.9708 9.61467 14.9989 9.51588 14.9989C9.38886 14.9989 9.27595 14.9426 9.16305 14.83
4C8.99369 14.661 8.85256 14.478 8.72554 14.2668C8.61263 14.0697 8.48562 13.8304 8.3586 13.5629C7.41302 14.6751 6.22751 15.2242 4.8162 15.2242C3.80005 15.2242 2.9956 14.9426 2.41696 14.3654C1.82421 13.7882 1.52783 13.0139 1.52783 12.0566C1.52783 11.0289 1.89477 10.2123 2.62866 9.57879C3.36254 8.95935 4.35046 8.63556 5.57831 8.63556C5.98759 8.63556 6.41098 8.66371 6.84849 8.7341C7.286 8.79042 7.75173 8.88896 8.23158 9.00159V8.11466C8.23158 7.19958 8.04811 6.56606 7.66705 6.18595C7.286 5.81991 6.63679 5.62282 5.70532 5.62282C5.28193 5.62282 4.84442 5.67913 4.40691 5.77768C3.96941 5.87623 3.5319 6.01701 3.1085 6.18595C2.91092 6.27042 2.76979 6.32673 2.68511 6.34081C2.60043 6.35488 2.54398 6.36896 2.50164 6.36896C2.33228 6.36896 2.2476 6.24226 2.2476 5.98885V5.39757C2.2476 5.20047 2.27583 5.05969 2.33228 4.97522C2.38873 4.89075 2.50164 4.80628 2.671 4.72181C3.09439 4.51064 3.60246 4.32762 4.19522 4.17276C4.78797 4.0179 5.40895 3.94751 6.07227 3.94751C7.51181 3.94751 8.55618 4.27131 9.23361 4.93298C9.89693 5.58058 10.2356 6.56606 10.2356 7.88941V11.8172H10.2074Z",fill:"#252F3E"}),(0,s.jsx)("path",{d:"M32.7743 21.123C28.8085 24.0513 23.0503 25.5999 18.0966 25.5999C11.1529 25.5999 4.90081 23.0376 0.158784 18.7719C-0.208157 18.4341 0.116445 17.9836 0.568066 18.237C5.67703 21.2075 11.9856 22.9813 18.52 22.9813C22.9233 22.9813 27.7641 22.0662 32.2097 20.1938C32.873 19.9123 33.4235 20.6444 32.7743 21.123Z",fill:"#FF9900"}),(0,s.jsx)("path",{d:"M34.4255 19.2365C33.9174 18.5889 31.0665 18.9268 29.7822 19.0816C29.4012 19.1238 29.3306 18.786 29.6834 18.5466C31.9557 16.9558 35.6815 17.4204 36.119 17.9413C36.5565 18.4763 36.0061 22.207 33.8751 23.9808C33.5504 24.2483 33.24 24.1075 33.3811 23.7415C33.8609 22.5589 34.9335 19.8982 34.4255 19.2365Z",fill:"#FF9900"})]}),(0,s.jsx)("defs",{children:(0,s.jsx)("clipPath",{id:"clip0_972_5518",children:(0,s.jsx)("rect",{width:"144",height:"25.2",fill:"white",transform:"translate(0 0.399902)"})})})]}),title:"AWS",description:"Simplify procurement by purchasing Tailscale through AWS Marketplace. Enjoy flexible terms, consolidated billing, and utilize your existing AWS spend commitments and credits. Benefit from seamless AWS integration, automated deployment, and centralized vendor management.",buttons:[{links:[{_key:"deccf468b29a",title:"Buy with AWS",url:"https://aws.amazon.com/marketplace/procurement?productId=prod-g7z3hrj26x74o&sellerId=seller-w4srvrf4waksi&isBuyWithAWS=true",ctaKey:"BuyWithAws",sellerId:"seller-w4srvrf4waksi",productId:"prod-g7z3hrj26x74o",_type:"link",color:"black"}]},{links:[{_key:"deccf468b29a",title:"Free Trial on AWS",url:"https://aws.amazon.com/marketplace/procurement?productId=prod-g7z3hrj26x74o&sellerId=seller-w4srvrf4waksi&isBuyWithAWS=true",ctaKey:"TryFreeWithAws",sellerId:"seller-w4srvrf4waksi",productId:"prod-g7z3hrj26x74o",_type:"link",color:"outline-black"}]}]},{image:()=>(0,s.jsxs)("svg",{width:"36",height:"34",viewBox:"0 0 36 34",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,s.jsx)("path",{d:"M12.0014 0.000409092H22.6541L11.5955 32.7658C11.4819 33.1025 11.2655 33.395 10.9768 33.6023C10.6882 33.8095 10.3418 33.9211 9.98646 33.9211H1.69601C1.42677 33.9212 1.16139 33.8571 0.921828 33.7342C0.682266 33.6113 0.475406 33.4332 0.318362 33.2145C0.161317 32.9958 0.0586021 32.7428 0.0187139 32.4766C-0.0211743 32.2103 0.00291098 31.9383 0.0889769 31.6832L10.3919 1.15577C10.5055 0.818941 10.7219 0.526241 11.0107 0.318899C11.2994 0.111556 11.6459 0.000428885 12.0014 0.000409092Z",fill:"url(#paint0_linear_540_19436)"}),(0,s.jsx)("path",{d:"M27.4805 21.9772H10.5879C10.4308 21.9771 10.2774 22.0242 10.1475 22.1125C10.0176 22.2008 9.91731 22.3261 9.85969 22.4722C9.80208 22.6183 9.78979 22.7784 9.82444 22.9316C9.8591 23.0848 9.93908 23.2239 10.054 23.331L20.9088 33.4625C21.2248 33.7573 21.641 33.9212 22.0732 33.9211H31.6384L27.4805 21.9772Z",fill:"#0078D4"}),(0,s.jsx)("path",{d:"M12.0012 0.000409141C11.6418 -0.000969882 11.2914 0.112589 11.0012 0.324499C10.711 0.536409 10.4961 0.835566 10.388 1.17827L0.101446 31.6554C0.00959018 31.9114 -0.0192479 32.1858 0.0173719 32.4554C0.0539916 32.7249 0.154992 32.9817 0.311828 33.2039C0.468665 33.4262 0.676724 33.6074 0.918405 33.7322C1.16009 33.8571 1.42828 33.9219 1.7003 33.9211H10.2047C10.5215 33.8645 10.8175 33.7249 11.0626 33.5164C11.3077 33.308 11.4931 33.0382 11.5998 32.7347L13.6512 26.6891L20.9785 33.5235C21.2856 33.7774 21.6708 33.9179 22.0693 33.9211H31.5989L27.4193 21.9772L15.2353 21.9801L22.6923 0.000409141H12.0012Z",fill:"url(#paint1_linear_540_19436)"}),(0,s.jsx)("path",{d:"M25.6073 1.15415C25.4938 0.817867 25.2777 0.525652 24.9894 0.318674C24.7011 0.111695 24.3551 0.000386014 24.0002 0.000427258H12.1279C12.4828 0.00044748 12.8288 0.111781 13.1171 0.31875C13.4053 0.52572 13.6215 0.817901 13.735 1.15415L24.0383 31.6828C24.1244 31.938 24.1486 32.21 24.1087 32.4763C24.0689 32.7427 23.9662 32.9957 23.8091 33.2145C23.6521 33.4333 23.4452 33.6115 23.2056 33.7344C22.966 33.8574 22.7006 33.9215 22.4313 33.9216H34.304C34.5733 33.9215 34.8386 33.8573 35.0782 33.7343C35.3177 33.6113 35.5246 33.4331 35.6815 33.2143C35.8385 32.9955 35.9412 32.7425 35.981 32.4762C36.0209 32.2099 35.9967 31.938 35.9106 31.6828L25.6073 1.15415Z",fill:"url(#paint2_linear_540_19436)"}),(0,s.jsxs)("defs",{children:[(0,s.jsxs)("linearGradient",{id:"paint0_linear_540_19436",x1:"15.884",y1:"2.51405",x2:"4.82088",y2:"35.1972",gradientUnits:"userSpaceOnUse",children:[(0,s.jsx)("stop",{stopColor:"#114A8B"}),(0,s.jsx)("stop",{offset:"1",stopColor:"#0669BC"})]}),(0,s.jsxs)("linearGradient",{id:"paint1_linear_540_19436",x1:"19.3396",y1:"17.7453",x2:"16.7805",y2:"18.6106",gradientUnits:"userSpaceOnUse",children:[(0,s.jsx)("stop",{stopOpacity:"0.3"}),(0,s.jsx)("stop",{offset:"0.071",stopOpacity:"0.2"}),(0,s.jsx)("stop",{offset:"0.321",stopOpacity:"0.1"}),(0,s.jsx)("stop",{offset:"0.623",stopOpacity:"0.05"}),(0,s.jsx)("stop",{offset:"1",stopOpacity:"0"})]}),(0,s.jsxs)("linearGradient",{id:"paint2_linear_540_19436",x1:"17.9321",y1:"1.56082",x2:"30.0761",y2:"33.9146",gradientUnits:"userSpaceOnUse",children:[(0,s.jsx)("stop",{stopColor:"#3CCBF4"}),(0,s.jsx)("stop",{offset:"1",stopColor:"#2892DF"})]})]})]}),title:"Azure",description:"Seamlessly deploy and manage Tailscale in your Azure infrastru
4cture while consolidating billing and streamlining vendor management.",buttons:[{buttonText:"Buy with Azure",buttonUrl:"https://azuremarketplace.microsoft.com/en-us/marketplace/apps/tailscale1616171838087.tailscale_enterprise_subscription?tab=PlansAndPrice",addArrow:!0}]}];var G=({hubspotForm:e})=>{let[t,a]=(0,i.useState)(!1);return(0,s.jsx)("section",{id:"addons",className:"bg-gray-50",children:(0,s.jsxs)("div",{className:"container-new",children:[(0,s.jsx)(S,{hubspotForm:e,isOpen:t,onClose:()=>a(!1)}),(0,s.jsxs)("div",{children:[(0,s.jsxs)("div",{className:"col-span-2 mb-3 lg:mb-8 lg:px-8",children:[(0,s.jsx)("h2",{className:"h3-new mb-3 text-gray-700",children:"Cloud Marketplaces"}),(0,s.jsx)(D,{})]}),(0,s.jsx)("div",{className:"flex w-full grid-cols-4 flex-col items-center gap-2 lg:grid [&>*:first-child]:col-span-3",children:V.map(e=>(0,s.jsxs)("div",{className:"flex flex-col rounded-2xl border border-gray-200 bg-white p-8 text-gray-700 shadow-brand transition duration-300 hover:border-gray-300 hover:shadow-brand-hover lg:h-[338px]",children:[(0,s.jsxs)("div",{className:"mb-3 flex items-center justify-between",children:[(0,s.jsx)("h3",{className:"h4-new",children:e.title}),e.image&&(0,s.jsx)(e.image,{})]}),(0,s.jsx)("p",{className:"body-new mb-6 text-gray-500",children:e.description}),(0,s.jsxs)("div",{className:"mt-auto flex flex-col gap-4",children:[e.price&&(0,s.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,s.jsx)("p",{className:"h2-new text-gray-700",children:e.price}),(0,s.jsx)("p",{className:"meta-new text-gray-500",children:e.priceDescription})]}),(0,s.jsxs)("div",{className:"flex flex-col items-center gap-3 lg:flex-row",children:[e.buttons.map(t=>"AWS"===e.title?(0,s.jsx)(_.Z,{awsProcurementBlock:t,classNames:"flex"}):(0,s.jsx)(u(),{href:t.buttonUrl,target:"_blank",children:(0,s.jsx)(m.ZP,{button:{buttonOptions:{color:t.color||"black",addArrow:!1},link:{title:t.buttonText}}})})),"AWS"===e.title&&(0,s.jsx)("button",{type:"button",onClick:()=>a(!0),className:"group group relative inline-flex w-full shrink-0 items-center justify-center gap-[11px] overflow-hidden rounded-lg border border-heading-black bg-transparent px-[17px] py-2 text-center font-body font-medium leading-[1.46] tracking-[-0.16px] text-heading-black transition-all transition-colors duration-200 hover:bg-heading-black hover:text-white focus:outline-none xs:w-auto",children:"Request Private offer"})]})]})]},e.title))})]}),(0,s.jsxs)("div",{className:"mt-8 flex w-full grid-cols-4 flex-col-reverse items-center gap-2 lg:mt-3 lg:grid",children:[N.map(e=>(0,s.jsxs)("div",{className:"flex w-full flex-1 flex-col rounded-2xl border border-gray-200 bg-white p-8 text-gray-700 shadow-brand transition duration-300 hover:border-gray-300 hover:shadow-brand-hover lg:h-[338px]",children:[(0,s.jsxs)("div",{className:"mb-3 flex items-center justify-between",children:[(0,s.jsx)("h3",{className:"h4-new",children:e.title}),e.image&&(0,s.jsx)(e.image,{})]}),(0,s.jsx)("p",{className:"body-new mb-6 text-gray-500",children:e.description}),(0,s.jsxs)("div",{className:"mt-auto flex flex-col gap-4",children:[e.price&&(0,s.jsxs)("div",{className:"flex items-center gap-2.5",children:[(0,s.jsx)("p",{className:"h2-new text-gray-700",children:e.price}),(0,s.jsx)("p",{className:"meta-new text-gray-500",children:e.priceDescription})]}),(0,s.jsx)(u(),{href:e.buttonUrl,target:"_blank",children:(0,s.jsx)(m.ZP,{button:{buttonOptions:{color:"black",addArrow:e.title.toLowerCase().includes("aws")||e.title.toLowerCase().includes("azure")},link:{title:e.buttonText}}})})]})]},e.title)),(0,s.jsxs)("div",{className:"col-span-2 mb-1 lg:mb-0 lg:px-8",children:[(0,s.jsx)("h2",{className:"h3-new mb-3 text-gray-700",children:"Optional Add-ons"}),(0,s.jsx)(A,{})]})]})]})})},P=e=>{let{masthead:t,FAQs:a,hubspotForm:i,Media:r}=e;return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(b,{...t}),(0,s.jsx)("div",{className:"bg-gray-50 pb-16 lg:pb-0 lg:pt-24",children:(0,s.jsx)(n.Z,{...r})}),(0,s.jsx)(C,{}),(0,s.jsx)(G,{hubspotForm:i}),(0,s.jsx)("div",{className:"scroll-mt-20 bg-gray-50",id:"faqs",children:(0,s.jsx)("div",{className:"container-new",children:a?.content&&(0,s.jsx)(l.Z,{title:a?.title||"Pricing FAQs",de
4scription:a?.description,links:a?.links,content:a?.content})})})]})},L=a(25675),I=a.n(L),M=JSON.parse('{"m$":["personal"],"Vx":["starter","premium","enterprise"],"oP":["personal","starter","premium","enterprise"],"RB":{"personal":{"id":"personal","title":"Personal","description":"For individuals who want to securely connect personal devices, for free.","price_monthly":"$0","price_description":"Per active user/month","cta":{"label":"Get started for free","url":"https://login.tailscale.com/start?next_url=%2Fadmin%2Fmachines"},"features":["users","devices","addon_devices","desktop_mobile_apps","peer_to_peer_connections","end_to_end_encryption","ipv4_ipv6","split_tunnelling","short_dns_host_names","subnet_routers","ha_failover","ip_space_collision_resolution","exit_nodes","network_level_access_policies","resource_level_access_policies","restrict_based_on_purpose","acl_tests","app_connectors","gitops_for_acls","service_accounts","service_provisioning","tailscale_kubernetes_operator","tailscale_ssh","tailscale_funnel","user_approval","standard_user_roles","sso_with_any_idp","custom_authentication_periods","device_approval","tailnet_lock","posture_management","custom_postures","webhooks","configuration_audit_logging","ui","cli","api","iac","customer_support"],"quantities":{"users":"3","devices":"100","addon_devices":"$0.50 each","custom_postures":"up to 2"},"links":{"log_streaming":{"text":"configuration logs only","url":"/kb/1255/log-streaming/#configuration-audit-log-streaming"}},"cards":{"users_and_devices":["Up to 3 users w/ public domain","Up to 100 devices. <a href=\'#addons\' class=\'underline hover:no-underline underline-offset-2 whitespace-nowrap\'>Need more?</a>"],"features":["Peer-To-Peer Connections","MagicDNS","Network, Resource-level, and Attribute-based Access Policies (ACLs)","User Approval","SSO with any IdP"]}},"starter":{"id":"starter","title":"Starter","description":"For teams or organizations looking for an easy-to-use, secure, legacy VPN replacement.","price_monthly":"$6","price_description":"Per active user/month","cta":{"label":"Get started for free","url":"https://login.tailscale.com/start?next_url=%2Fadmin%2Fmachines"},"features":["users","devices","addon_devices","desktop_mobile_apps","peer_to_peer_connections","end_to_end_encryption","ipv4_ipv6","split_tunnelling","short_dns_host_names","subnet_routers","app_connectors","ha_failover","exit_nodes","custom_authentication_periods","network_level_access_policies","resource_level_access_policies","restrict_based_on_purpose","restrict_based_on_group","acl_tests","gitops_for_acls","on_demand_access","service_accounts","service_provisioning","tailscale_kubernetes_operator","user_approval","standard_user_roles","sso_with_any_idp","posture_management","webhooks","configuration_audit_logging","ui","cli","api","iac","customer_support","pay_by_credit_card","device_approval"],"quantities":{"users":"Unlimited","devices":"100 + 10/user","addon_devices":"$0.50 each"},"links":{"restrict_based_on_group":{"text":"autogroups only","url":"/kb/1337/acl-syntax/#autogroups"}},"cards":{"users_and_devices":["Unlimited Users","100 devices + 10 devices per user <a href=\'#addons\' class=\'underline hover:no-underline underline-offset-2 whitespace-nowrap\'>Need more?</a>"],"features":["<a href=\'#access-control\' class=\'underline hover:no-underline underline-offset-2 whitespace-nowrap\'>Limited ACLs</a>","Standard user roles","ACL tags","Auth Keys","SSO with any IdP","Configuration Audit Logging","Webhooks"]}},"premium":{"id":"premium","title":"Premium","description":"For companies who need service and resource level authentication and access control.","price_monthly":"$18","price_description":"Per active user/month","cta":{"label":"Get started for free","url":"https://login.tailscale.com/start?next_url=%2Fadmin%2Fmachines"},"features":["users","devices","addon_devices","desktop_mobile_apps","peer_to_peer_connections","end_to_end_encryption","ipv4_ipv6","split_tunnelling","short_dns_host_names","subnet_routers","app_connectors","ha_failover","ip_space_collision_resolution","regional_routing","exit_nodes","network_level_access_policies","resource_level_access_policies","restrict_based_on_purpose","restrict_based_on_group","restrict_based_on_individual_user","acl_tests","gitops_for_acls","on_demand_access","
4service_accounts","service_provisioning","tailscale_kubernetes_operator","tailscale_ssh","tailscale_funnel","custom_authentication_periods","user_approval","standard_user_roles","advanced_user_roles","sso_with_any_idp","device_approval","posture_management","customize_ui_visibility","configure_auto_updates_settings","runtime_configurations","configure_mdm_tools","webhooks","configuration_audit_logging","network_flow_logging","ui","cli","api","iac","customer_support","priority_support","pay_by_credit_card"],"quantities":{"users":"Unlimited","devices":"100 + 20/user","addon_devices":"$0.50 each"},"links":{},"cards":{"users_and_devices":["Unlimited Users","100 devices + 20 devices per user <a href=\'#addons\' class=\'underline hover:no-underline underline-offset-2 whitespace-nowrap\'>Need more?</a>"],"features":["ACLs","SSO with any IdP","Network flow logging","Tailscale SSH","Tailscale Funnel","GitOps for ACLs","Advanced user roles","MDM Policies","Priority support"]}},"enterprise":{"id":"enterprise","title":"Enterprise","description":"For companies who need advanced integrations, compliance and support for access control at scale.","price_monthly":"Custom","price_description":"Purpose-built for business","cta":{"label":"Contact Sales","url":"/contact/sales"},"features":["users","devices","addon_devices","desktop_mobile_apps","peer_to_peer_connections","end_to_end_encryption","ipv4_ipv6","split_tunnelling","short_dns_host_names","subnet_routers","app_connectors","ha_failover","ip_space_collision_resolution","regional_routing","exit_nodes","network_level_access_policies","resource_level_access_policies","restrict_based_on_purpose","restrict_based_on_group","restrict_based_on_individual_user","acl_tests","gitops_for_acls","on_demand_access","service_accounts","service_provisioning","tailscale_kubernetes_operator","tailscale_ssh","tailscale_ssh_session_recording","tailscale_funnel","custom_authentication_periods","user_approval","standard_user_roles","advanced_user_roles","sso_with_any_idp","user_group_provisioning_azure_ad","user_group_provisioning_okta","device_approval","tailnet_lock","posture_management","custom_postures","posture_integrations","customize_ui_visibility","configure_auto_updates_settings","runtime_configurations","configure_mdm_tools","webhooks","configuration_audit_logging","network_flow_logging","log_streaming","ui","cli","api","iac","customer_support","priority_support","additional_support_options","pay_by_credit_card","pay_by_invoice","annual_billing"],"quantities":{"users":"Unlimited","devices":"100 + 20/user","addon_devices":"$0.50 each"},"links":{},"cards":{"users_and_devices":["Unlimited Users","100 devices + 20 devices per user <a href=\'#addons\' class=\'underline hover:no-underline underline-offset-2 whitespace-nowrap\'>Need more?</a>"],"features":["User & Group provisioning (SCIM)","Network flow logging with log streaming","Tailscale SSH session recording","Annual Billing","Pay By Invoice","Tailnet Lock","Advanced Device Posture Management","MDM Policies","Priority support","Additional Support Options"]}}},"tW":[{"title":"Users & Devices","features":["users","devices","addon_devices","desktop_mobile_apps"]},{"title":"Virtual Private Networking","features":["peer_to_peer_connections","end_to_end_encryption","ipv4_ipv6","split_tunnelling","short_dns_host_names","exit_nodes","subnet_routers","app_connectors","ha_failover","ip_space_collision_resolution","regional_routing"]},{"title":"Access control","features":["network_level_access_policies","acl_tests","gitops_for_acls","on_demand_access","resource_level_access_policies","restrict_based_on_purpose","restrict_based_on_group","restrict_based_on_individual_user"]},{"title":"Application Networking","features":["service_accounts","service_provisioning","tailscale_kubernetes_operator","tailscale_ssh","tailscale_funnel"]},{"title":"User Management","features":["user_approval","standard_user_roles","advanced_user_roles","sso_with_any_idp","custom_authentication_periods","user_group_provisioning_azure_ad","user_group_provisioning_okta"]},{"title":"Endpoint & Posture Management","features":["device_approval","tailnet_lock","posture_management","custom_postures","posture_integrations"]},{"title":"Mobile Device Management Policies","features":["customize_ui_visibility","runtime_configurations","configure_mdm_tools"]},{"title":"Monitoring & Compliance","features":["webhooks","configuration_audit_logging","network_flow_logging","tailscale_ssh_session_recording","log_streaming"]},{"title":"Interfaces","features":["ui","cli","api","iac"]},{"title":"Support","features":["customer_support","priority_support","additional_support_options"]},{"title":"Payment Options","features":["pay_by_credit_card","pay_by_invoice","annual_billing"]}],"R2":{"users":{"title":"Users","tooltip":"A user is any distinct email address in your account. Personal includes 3 free users. Starter and Premium offer unlimited users; you pay for the number of active users at the end of your billing cycle.","quantity":"Users: %s"},"desktop_mobile_apps":{"title":"Desktop & mobile apps"},"addon_devices":{"title":"Add-on devices"},"devices":{"title":"Devices","tooltip":"A device is any computer, phone, or server with Tailscale installed that\'s connected to your network. Device limits are pooled across your network.","quantity":"Devices: %s"},"peer_to_peer_connections":{"title":"Peer-to-peer connections","tooltip":"Establish direct connections between nodes in your tailnet, to minimize latency."},"end_to_end_encryption":{"title":"End-to-end encryption","tooltip":"Encrypt all traffic end-to-e
4nd with WireGuard\xae."},"ipv4_ipv6":{"title":"IPv4 and IPv6","tooltip":"Route both IPv4 and IPv6 traffic."},"split_tunnelling":{"title":"Split tunnelling","tooltip":"Split DNS traffic so only traffic to your internal network goes over Tailscale, and everything else goes directly to the internet."},"short_dns_host_names":{"title":"Short DNS host names (MagicDNS)","tooltip":"Automatically register human readable DNS names with MagicDNS to make it even easier to access devices and services on your network."},"subnet_routers":{"title":"Subnet routers","tooltip":"Relay traffic from your tailnet through a gateway to a subnet of VPCs, corporate LANs, physical networks, and more."},"app_connectors":{"title":"App connectors","tooltip":"Control access to software as a service (SaaS) applications available over your tailnet."},"ha_failover":{"title":"HA failover","tooltip":"Expose the same subnet routers and app connectors on multiple routers to ensure availability even if one router goes offline."},"ip_space_collision_resolution":{"title":"IP space collision resolution (4via6 subnet routers)","tooltip":"Route traffic to overlapping IPv4 subnets without renumbering with 4via6 subnet routers, by assigning unique IPv6 addresses for each subnet."},"exit_nodes":{"title":"Exit nodes","tooltip":"Route Internet traffic through a designated egress point on your tailnet, like a traditional VPN."},"network_level_access_policies":{"title":"Network-level access policies (ACLs)","tooltip":"Precisely define access in your tailnet based on IP address, subnet, or port."},"resource_level_access_policies":{"title":"Resource-level access policies","tooltip":"Use ACL tags to assign identity to a device in order to enforce access based on roles and groups."},"restrict_based_on_purpose":{"title":"Restrict based on purpose (ACL tags)","tooltip":"Assign an identity to a device that is separate from human users, and use that identity as part of an ACL to restrict access."},"restrict_based_on_group":{"title":"Restrict based on group","tooltip":"Allow specific ACL-defined groups to access tagged nodes."},"restrict_based_on_individual_user":{"title":"Restrict based on individual user","tooltip":"Allow specific ACL-defined users to access tagged nodes."},"acl_tests":{"title":"ACL tests","tooltip":"Test ACLs to make sure they\'re properly scoped to avoid unnecessary exposure of critical systems on your network."},"gitops_for_acls":{"title":"GitOps for ACLs","tooltip":"Use a GitOps workflow to centralize management and version-control of your ACLs."},"on_demand_access":{"title":"On-demand access","tooltip":"Use partner integrations to grant elevated privileges (e.g. on-call), including temporary access, using an approval workflow."},"separation_of_administrative_duties":{"title":"Separation of administrative duties (User roles)","tooltip":"Assign admin roles to appropriately manage permissions, including IT admin, Network admin, Billing admin, and Auditor roles."},"service_accounts":{"title":"Service accounts","tooltip":"Pre-authenticate services or nodes (e.g., servers and ephemeral containers) added to your network."},"service_provisioning":{"title":"Service provisioning","tooltip":"Assign an identity to a service or node and restrict access on your tailnet, using ACL tags."},"tailscale_kubernetes_operator":{"title":"Tailscale Kubernetes operator","tooltip":"Provide full ingress and egress connectivity from Kubernetes clusters to non-Kubernetes resources, as well as cross-cluster peering, via Tailscale."},"tailscale_ssh":{"title":"Tailscale SSH","tooltip":"Authenticate and encrypt SSH connections between devices in your tailnet, using Tailscale instead of SSH basic auth, keys, certs, or a bastion."},"tailscale_funnel":{"title":"Tailscale Funnel","tooltip":"Route traffic from the Internet to a node in your tailnet to publicly share it with anyone, even if they arenât using Tailscale."},"custom_authentication_periods":{"title":"Custom authentication periods","tooltip":"Enforce that users re-authenticate with your identity provider at an interval you choose. By default, this is every 6 months"},"user_approval":{"title":"User approval","tooltip":"Prevent new users in your organization from joining a tailnet until theyâve been approved by an admin"},"standard_user_roles":{"title":"Standard user roles","tooltip":"Standard user roles include owner, admin, and member"},"advanced_user_roles":{"title":"Advanced user roles","tooltip":"Advanced user roles include billing admin, IT admin, network admin, and auditor"},"sso_with_any_idp":{"title":"SSO with any IdP","tooltip":"Log in to Tailscale and manage users with any OIDC i
4dentity provider."},"user_group_provisioning_azure_ad":{"title":"User & group provisioning (Azure AD + SCIM)","tooltip":"Sync group membership and new or deactivated users from Azure AD."},"user_group_provisioning_okta":{"title":"User & group provisioning (Okta + SCIM)","tooltip":"Sync group membership and new or deactivated users from Okta."},"device_approval":{"title":"Device approval","tooltip":"Review and approve new devices and nodes before adding them to your tailnet."},"tailnet_lock":{"title":"Tailnet Lock","tooltip":"Prevent new, and potentially malicious, nodes from joining your tailnet without first being signed by an already trusted node."},"posture_management":{"title":"Device posture management","tooltip":"Use posture conditions to more granularly control access in your network policies."},"custom_postures":{"title":"Postures based on custom attributes","tooltip":"Attach custom posture attributes to your devices and use them as part of posture conditions."},"posture_integrations":{"title":"Device posture integrations","tooltip":"Automatically synchronize device trust information from third-party posture checking tools and use it as part of posture conditions."},"customize_ui_visibility":{"title":"Customize UI Visibility","tooltip":"Change the visibility of UI elements in Tailscale
4Client menu"},"configure_auto_updates_settings":{"title":"Configure auto-updates settings","tooltip":"Configure checking and installing Tailscale latest version automatically"},"runtime_configurations":{"title":"Runtime configurations","tooltip":"Configure Tailscale behavior in end user devices eg. Automatically start Tailscale when user logs in, force tailscale to be always on, route all traffic via a specific exit node, and more"},"configure_mdm_tools":{"title":"Configure MDM Tools","tooltip":"Configure and deploy Tailscale using MDM solutions like SimpleMDM, Iru, Microsoft Intune, Jamf"},"webhooks":{"title":"Webhooks","tooltip":"Subscribe to events on your tailnet, and forward those events to any integration or app â like Slack or Microsoft Teams."},"configuration_audit_logging":{"title":"Configuration audit logging","tooltip":"Record actions that modify a tailnet\'s configuration, including type of action, actor, target resource, and time."},"network_flow_logging":{"title":"Network flow logging","tooltip":"Record network traffic between nodes on your tailnet."},"log_streaming":{"title":"Log streaming","tooltip":"Send real-time network traffic information to any SIEM or observability tool for analysis, or to a bucket for long-term storage."},"tailscale_ssh_session_recording":{"title":"Tailscale SSH session recording","tooltip":"Capture and stream terminal sessions over Tailscale SSH for analysis or storage."},"ui":{"title":"UI","tooltip":"Log in to the tailscale.com admin console to manage users, nodes, and their permissions, on your tailnet."},"cli":{"title":"CLI","tooltip":"Quickly access information, manage devices or troubleshoot issues with a built-in command-line interface."},"api":{"title":"API","tooltip":"Use the API to manage your network\'s devices, ACLs, DNS settings, and more."},"iac":{"title":"IaC","tooltip":"Configure your tailnet using Terraform or Pulumi."},"customer_support":{"title":"Customer support","tooltip":"Use the documentation or email us to get help with using Tailscale."},"priority_support":{"title":"Priority support","tooltip":"Issue is prioritized based on severity."},"additional_support_options":{"title":"Additional support options","tooltip":"Contact our sales team for information."},"pay_by_credit_card":{"title":"Pay by credit card"},"pay_by_invoice":{"title":"Pay by invoice"},"annual_billing":{"title":"Annual billing"},"regional_routing":{"title":"Regional routing","tooltip":"Route your traffic across distributed HA subnet routers or app connectors based on region."}}}'),O=e=>{let{masthead:t,FAQs:a}=e;return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(E,{...t}),(0,s.jsx)(U,{}),(0,s.jsx)(Z,{}),(0,s.jsx)(W,{faqs:a})]})};let E=({textCard:e})=>(0,s.jsx)("section",{className:"bg-gray-0 py-20 md:pb-24 md:pt-44",children:(0,s.jsx)("div",{className:"container",children:(0,s.jsx)(g.Z,{...e,className:"md:pl-10"})})}),U=()=>(0,s.jsx)("section",{className:"bg-gray-0 pb-10",children:(0,s.jsxs)("div",{className:"container",children:[(0,s.jsx)("div",{className:"flex flex-col gap-6 xl:flex-row",children:(0,s.jsxs)("div",{className:"grow basis-9/12",children:[(0,s.jsx)("h2",{className:"mb-6 text-center text-lg font-medium tracking-tighter text-heading-black sm:text-2xl md:ml-12 md:text-left lg:text-[32px]",children:"Tailscale at Work"}),(0,s.jsx)("div",{className:"group grid grid-cols-1 gap-2 md:grid-cols-3",children:M.Vx.map(e=>(0,s.jsx)(R,{plan:M.RB[e]},M.RB[e].title))})]})}),(0,s.jsx)("h2",{className:"mb-6 mt-6 text-center text-lg font-medium tracking-tighter text-heading-black sm:text-2xl md:ml-10 md:text-left lg:text-[32px]",children:"For any plan"}),(0,s.jsxs)("div",{id:"addons",className:"col-span-full mt-6 grid scroll-mt-20 gap-[18px] rounded-2xl bg-white p-6 @container md:grid-cols-2",children:[(0,s.jsxs)("div",{className:"col-span-2 flex flex-col @md:items-center @md:text-center",children:[(0,s.jsx)("p",{className:"flex items-center justify-between text-[32px] font-medium tracking-tight",children:"Add-ons"}),(0,s.jsxs)("p",{className:"mt-3 text-base tracking-tight text-gray-1000 text-opacity-80",children:["Get more out of Tailscale with optional add-ons. Available on all plans. Head to the"," ",(0,s.jsx)("a",{href:"https://console.tailscale.com/admin/settings/general",className:"underline hover:no-underline",children:"settings page"})," ","to configure your add-ons."]})]}),(0,s.jsx)("div",{className:"col-span-2 grid items-center gap-x-8 rounded-lg bg-gray-0 px-10 py-8 @container lg:col-span-1",children:(0,s.jsxs)("div",{className:"grid gap-x-8 gap-y-4 @sm:grid-cols-2",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)(I(),{src:"/images/logos/mullvad.svg",alt:"Mullvad",width:1257,height:252,className:"w-[192px]"}),(0,s.jsxs)("p",{className:"mt-3 max-w-[51ch] text-base tracking-tight text-heading-black text-opacity-80",children:["Securely and privately browse the web with Tailscale + Mullvad."," ",(0,s.jsx)(u(),{href:"/mullvad",className:"underline hover:no-underline","data-track":"Link Clicked","data-track-properties":'{"label": "Learn more about Mullvad"}',children:"Learn more"})]})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("p",{className:"text-[28px] font-medium tracking-tight",children:"$5"}),(0,s.jsx)("p",{className:"mt-2.5 text-sm font-medium uppercase text-heading-black",children:"Per month for 5 devices"}),(0,s.jsx)("a",{href:"https://login.tailscale.com/start",children:(0,s.jsx)(m.ZP,{button:{buttonOptions:{color:"black",addArrow:!1}
4,link:{title:"Manage add-ons"}},className:"mt-3 xs:w-full"})})]})]})}),(0,s.jsx)("div",{className:"bg-gray-0-1 col-span-2 items-center rounded-lg px-10 py-8 @container lg:col-span-1",children:(0,s.jsxs)("div",{className:"grid gap-x-8 gap-y-4 @sm:grid-cols-2",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("p",{className:"text-xl font-medium tracking-tight",children:"Additional devices"}),(0,s.jsxs)("p",{className:"mt-3 max-w-[51ch] text-base tracking-tight text-heading-black text-opacity-80",children:["Add devices without adding more users to your plan."," ",(0,s.jsx)(u(),{href:"#faqs",className:"underline hover:no-underline","data-track":"Link Clicked","data-track-properties":'{"label": "Learn more about additional devices faq"}',children:"Learn more"})]})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("p",{className:"text-[28px] font-medium tracking-tight",children:"$0.50"}),(0,s.jsx)("p",{className:"mt-2.5 text-sm font-medium uppercase text-heading-black",children:"Per device/month"}),(0,s.jsx)("a",{href:"https://login.tailscale.com/start",children:(0,s.jsx)(m.ZP,{button:{buttonOptions:{color:"black",addArrow:!1},link:{title:"Get started"}},className:"mt-3 xs:w-full"})})]})]})})]}),(0,s.jsx)("h2",{className:"mb-6 mt-6 text-center text-lg font-medium tracking-tighter text-heading-black sm:text-2xl md:ml-10 md:text-left lg:text-[32px]",children:"Tailscale at Home"}),M.m$.map(e=>(0,s.jsx)(R,{plan:M.RB[e]},M.RB[e].title)),(0,s.jsx)(q,{})]})}),R=({plan:e})=>(0,s.jsx)("div",{className:(0,p.Z)("h-full rounded-2xl bg-white p-6 @container sm:p-8 lg:p-12 md:group-has-[>div:nth-child(3)]:[&:nth-child(1)]:rounded-r-none md:[&:nth-child(2)]:rounded-none md:[&:nth-child(3)]:rounded-l-none"),children:(0,s.jsxs)("div",{className:"@md:grid @md:grid-cols-2 @md:gap-8 @3xl:grid-cols-4",children:[(0,s.jsxs)("div",{className:"@2xl:max-w-[250px]",children:[(0,s.jsxs)("p",{className:"flex items-center justify-between text-xl font-medium tracking-tight sm:text-[32px] md:text-2xl lg:text-[32px]",children:[e.title,(0,s.jsx)(h.Z,{type:`plan-${e.id}`,className:"h-[24px] @2xl:h-[36px]"})]}),(0,s.jsx)("p",{className:"mt-6 min-h-[7ch] text-sm tracking-tight text-heading-black text-opacity-80 @2xl:text-base",children:e.description})]}),(0,s.jsxs)("div",{className:"@md:row-start-2 @2xl:max-w-[250px] @3xl:row-start-auto",children:[(0,s.jsx)("p",{className:"mt-6 text-4xl font-medium tracking-tight @md:mt-0 @3xl:text-5xl",children:e.price_monthly}),(0,s.jsx)("p",{className:"mt-2.5 text-xs font-medium uppercase text-heading-black @2xl:text-sm",children:e.price_description}),(0,s.jsx)(u(),{href:e.cta.url,"data-track":"Link Clicked","data-track-properties":`{"label": "${e.cta.label}"}`,children:(0,s.jsx)(m.ZP,{button:{buttonOptions:{color:"Enterprise"===e.title?"grey":"black",addArrow:!1},link:{title:e.cta.label}},className:"mt-6 xs:w-full"})})]}),(0,s.jsxs)("div",{className:"@md:col-start-2 @md:row-span-3 @3xl:col-span-2 @3xl:grid @3xl:grid-cols-2 @3xl:gap-8",children:[e.cards?.users_and_devices.length>0&&(0,s.jsxs)("div",{className:"min-h-[11ch]",children:[(0,s.jsx)("h3",{className:"mb-3 mt-6 text-sm font-medium tracking-tighter text-[#595656] @md:mt-4 @2xl:mt-0 @2xl:text-base",children:"Users and devices"}),(0,s.jsx)("ul",{children:e.cards.users_and_devices.map(e=>(0,s.jsxs)("li",{className:"mb-2.5 flex items-start gap-1 text-sm tracking-tighter text-gray-1000 text-opacity-80 @2xl:text-base",children:[(0,s.jsx)(h.Z,{type:"check",className:"mt-[2px] w-[1.15rem] shrink-0"}),(0,s.jsx)("span",{dangerouslySetInnerHTML:{__html:e}})]},e))})]}),e.cards?.features.length>0&&(0,s.jsxs)("div",{children:[(0,s.jsx)("h3",{className:"mb-3 mt-6 text-sm font-medium tracking-tighter text-[#595656] @2xl:mt-0 @2xl:text-base",children:"Features"}),(0,s.jsx)("ul",{children:e.cards.features.map(e=>(0,s.jsxs)("li",{className:"mb-2.5 flex items-start gap-1 text-sm tracking-tighter text-gray-1000 text-opacity-80 @2xl:text-base",children:[(0,s.jsx)(h.Z,{type:"check",className:"mt-[2px] w-[1.15rem] shrink-0"}),(0,s.jsx)("span",{dangerouslySetInnerHTML:{__html:e}})]},e))})]})]})]})}),Z=()=>(0,s.jsx)("section",{className:"hidden py-20 md:block",children:(0,s.jsxs)("div",{className:"container",children:[(0,s.jsx)("h2",{className:"mb-20 text-center text-4xl font-medium tracking-tight text-heading-black",children:"Compare plans and features"}),(0,s.jsx)(H,{})]})}),H=()=>(0,s.jsxs)("table",{className:"w-full text-left",children:[(0,s.jsxs)("thead",{className:"sticky bg-white",children:[(0,s.jsxs)("tr",{children:[(0,s.jsx)("th",{scope:"col",className:"pb-4 pl-5 text-xl font-medium",children:"Compare plans"}),M.oP.map(e=>(0,s.jsx)("td",{className:"text-center font-medium text-gray-1000",width:"15%",children:(0,s.jsxs)("div",{className:"inline-flex items-center gap-1",children:[M.RB[e].title,(0,s.jsx)(h.Z,{type:`plan-${M.RB[e].id}`,className:"h-[18px]"})]})},M.RB[e].title))]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("th",{scope:"col",className:"pl-5 font-normal text-heading-black text-opacity-80",children:"Pricing per active user/month"}),M.oP.map(e=>(0,s.jsx)("td",{className:"text-center text-gray-900",children:M.RB[e].price_monthly},M.RB[e].price_monthly))]})]}),(0,s.jsx)("tbody",{children:M.tW.map(e=>(0,s.jsxs)(i.Fragment,{children:[(0,s.jsx)("tr",{id:v()(e.title,{lower:!0}),children:(0,s.jsx)("th",{scope:"colgroup",colSpan:M.oP.length+1,className:"border-b-2 pb-4 pl-5 pt-12 text-xl font-medium",children:e.title})}),e.features.map((t,a)=>(0,s.jsxs)("tr",{className:`transition-colors hover:bg-gray-0 ${a+1!==e.features.length&&"border-b"}`,id:v()(M.R2[t].title,{lower:!0}),children:[(0,s.jsx)("th",{className:"px-5 py-3.5 font-normal text-heading-black text-opacity-80",children:M.R2[t].tooltip?(0,s.jsx)(z,{label:M.R2[t].title,tip:M.R2[t].tooltip}):M.R2[t].title}),M.oP.map(e=>(0,s.jsx)("td",{className:"px-5 py-3.5 text-center text-gray-900",children:(0,s.jsx)(B,{plan:e,feature:t})},M.RB[e].title+M.R2[t].title))]},M.R2[t].title))]},e.title))})]}),B=({plan:e,feature:t})=>M.RB[e].quantities[t]?M.RB[e].quantities[t]:M.RB[e].links[t]?(0,s.jsx)(u(),{href:M.RB[e].links[t].url,className:"text-sm underline hover:no-underline","data-track":"Link Clicked","data-track-properties":`{"label": "${M.RB[e].links[t].text}"}`,children:M.RB[e].links[t].text}):M.RB[e].features.includes(t)?(0,s.jsx)(h.Z,{type:"check",className:"mx-auto w-5"}):(0,s.jsx)(h.Z,{type:"minus",className:"mx-auto w-5 opacity-[.15]"}),z=({label:e,tip:t})=>(0,s.jsxs)("div",{className:"group relative inline-block",children:[(0,s.jsx)("span",{className:"border-b border-dotted border-current",children:e}),(0,s.jsx)("span",{className:"pointer-events-none absolute left-[calc(100%+1em)] top-0 z-10 w-max max-w-xs rounded bg-gray-1000 p-3 text-sm text-white opacity-0 group-hover:opacity-100",children:t})]}),q=()=>(0,s.jsx)("div",{className:"col-span-full mt-6 rounded-2xl bg-gray-200 p-4 text-center text-gray-900",children:(0,s.jsxs)("p",{className:"[font-size:_clamp(0.85rem,2vw,1rem)]",children:["Have any questions? Check out our"," ",(0,s.jsx)(u(),{href:"/kb/1366/faq/",className:"underline hover:no-underline","data-track":"Link Clicked","data-track-properties":'{"label": "product FAQ"}',children:"product FAQ"}),","," ",(0,s.jsx)(u(),{href:"/kb/1251/pricing-faq/",className:"underline hover:no-underline","data-track":"Link Clicked","data-track-properties":'{"label": "licensing FAQ"}',children:"licensing FAQ"}),", or"," ",(0,s.jsx)(u(),{href:"/contact/sales",className:"underline hover:no-underline","data-track":"Link Clicked","data-track-properties":'{"label": "contact sales"}',children:"contact our sales team"}),"."]})}),W=({faqs:e})=>(0,s.jsx)("div",{className:"scroll-mt-20 bg-gray-50",id:"faqs",children:(0,s.jsx)("div",{className:"container-new",children:e?.content&&(0,s.jsx)(l.Z,{title:e?.title||"Pricing FAQs",de
4scription:e?.description,links:e?.links,content:e?.content})})});var F=JSON.parse('{"oP":["prod_JYBUKXG4yj4ckH","prod_JYBUxdQRfztUPF","prod_JYBVS9YFFAIp7Z","enterprise"],"bD":["prod_JYBUKXG4yj4ckH","prod_Jaz2XjdKGHfRTF","prod_JYBUxdQRfztUPF","prod_JYBVS9YFFAIp7Z","enterprise"],"RB":{"prod_JYBUKXG4yj4ckH":{"id":"prod_JYBUKXG4yj4ckH","title":"Personal","description":"For personal & hobby projects","price_monthly":"Free","price_yearly":"Free","cta":{"label":"Use Tailscale","url":"https://login.tailscale.com/start"},"features":["devices","subnets","admin_users","peer_to_peer","desktop_mobile_apps","split_dns","magic_dns","node_sharing","funnel","exit_nodes","auto_approvers","tailscale_ssh","tailscale_ssh_console","https","config_audit_logging","api_access","acl_tags","acl_named_users","block_incoming","custom_auth_periods","oidc","sso","mfa","auth_keys","oauth_clients","webhooks","community_forum","email_support"],"quantities":{"devices":"20","subnets":"1","admin_users":"1","acl_named_users":"1","acl_tags":"Unlimited"},"cards":{"features":["1 user","20 devices","1 subnet router","Secure, peer-to-peer connections","SSO and MFA","Sharing, MagicDNS, and more"]}},"prod_Jaz2XjdKGHfRTF":{"id":"prod_Jaz2XjdKGHfRTF","title":"Personal Pro","description":"For power users & home labs","price_monthly":500,"price_yearly":6000,"prices":{"monthly":"price_1Ixn4oJko6VkHnHBnGh4Du2s","yearly":"price_1Ixn4oJko6VkHnHByGGQanpA"},"features":["devices","subnets","admin_users","peer_to_peer","desktop_mobile_apps","split_dns","magic_dns","node_sharing","funnel","exit_nodes","auto_approvers","tailscale_ssh","tailscale_ssh_console","https","config_audit_logging","api_access","acl_tags","acl_named_users","block_incoming","custom_auth_periods","oidc","device_approval","sso","mfa","auth_keys","oauth_clients","webhooks","community_forum","email_support"],"quantities":{"devices":"100","subnets":"2","admin_users":"1","acl_named_users":"1","acl_tags":"Unlimited"}},"prod_JYBUxdQRfztUPF":{"id":"prod_JYBUxdQRfztUPF","title":"Team","description":"For connecting your teamâs devices","price_monthly":"$6","price_yearly":"$5","price_description":"Per user/month","cta":{"label":"Try for free","url":"https://console.tailscale.com/admin/settings/billing/checkout/price_1Iv57aJko6VkHnHBRNZmjfoW"},"prices":{"monthly":"price_1Iv57aJko6VkHnHBMsPnMLck","yearly":"price_1Iv57aJko6VkHnHBRNZmjfoW"},"features":["devices","subnets","admin_users","peer_to_peer","desktop_mobile_apps","split_dns","magic_dns","node_sharing","funnel","exit_nodes","auto_approvers","tailscale_ssh","tailscale_ssh_console","https","config_audit_logging","api_access","acl_tags","acl_named_users","block_incoming","sso","mfa","auth_keys","custom_auth_periods","oidc","device_approval","user_approval","okta","oauth_clients","webhooks","community_forum","email_support"],"quantities":{"devices":"5 \xd7 users","devices:note:monthly":"then $5 per 10","devices:note:yearly":"then $4.20 per 10","subnets":"5","subnets:note:monthly":"then $25 each","subnets:note:yearly":"then $20.83 each","admin_users":"2","acl_named_users":"5","acl_named_users:note:monthly":"then $12 each","acl_named_users:note:yearly":"then $10 each","acl_tags":"Unlimited"},"cards":{"features":["5 devices \xd7 number of users","5 subnet routers included","2 admin users","5 unique users in ACL policy","Custom authentication periods","Okta integration"]}},"prod_JYBVS9YFFAIp7Z":{"id":"prod_JYBVS9YFFAIp7Z","title":"Business","description":"For enforcing access policies","price_monthly":"$18","price_yearly":"$15","price_description":"Per user/month","cta":{"label":"Try for free","url":"https://console.tailscale.com/admin/settings/billing/checkout/price_1Iv581Jko6VkHnHBc8T1HR2n"},"prices":{"monthly":"price_1Iv581Jko6VkHnHByBwjGkDR","yearly":"price_1Iv581Jko6VkHnHBc8T1HR2n"},"features":["devices","subnets","admin_users","peer_to_peer","desktop_mobile_apps","split_dns","magic_dns","node_sharing","funnel","exit_nodes","auto_approvers","tailscale_ssh","tailscale_ssh_console","https","config_audit_logging","api_access","subnet_failover","user_roles","acl_tags","acl_named_users","block_incoming","sso","mfa","auth_keys","custom_auth_periods","oidc","device_approval","user_approval","okta","okta-provisioning","oauth_clients","webhooks","community_forum","email_support"],"quantities":{"devices":"10 \xd7 users","devices:note:monthly":"then $5 per 10","devices:note:yearly":"then $4.20 per 10","subnets":"10","subnets:note:monthly":"then $25 each","subnets:note:yearly":"then $20.83 each","admin_users":"Unlimited","acl_named_users":"Unlimited","acl_tags":"Unlimited"},"cards":{"features":["10 devices \xd7 number of users","10 subnet routers included","Unlimited admin users","Unlimited users in ACL policy","Subnet router failover"]}},"enterprise":{"id":"enterprise","title":"Enterprise","description":"For large or unique deployments","price_monthly":"Custom","price_yearly":"Custom","cta":{"label":"Contact Sales","url":"https://tailscale.com/contact-sales"},"features":["devices","subnets","admin_users","peer_to_peer","desktop_mobile_apps","split_dns","magic_dns","
4node_sharing","funnel","exit_nodes","auto_approvers","tailscale_ssh","tailscale_ssh_console","https","config_audit_logging","api_access","subnet_failover","user_roles","acl_tags","acl_named_users","block_incoming","sso","mfa","auth_keys","custom_auth_periods","oidc","device_approval","user_approval","okta","okta-provisioning","oauth_clients","webhooks","community_forum","email_support"],"quantities":{"devices":"Unlimited","subnets":"Unlimited","additional_devices":"Unlimited","additional_subnets":"Unlimited","admin_users":"Unlimited","acl_named_users":"Unlimited","acl_tags":"Unlimited"},"cards":{"features":["Unlimited devices","Unlimited subnet routers","Unlimited admin users","Unlimited named ACL users","IoT pricing","Priority support"]}}},"tW":[{"title":"Basics","features":["admin_users","devices","subnets"]},{"title":"Features","features":["peer_to_peer","desktop_mobile_apps","split_dns","magic_dns","node_sharing","funnel","exit_nodes","auto_approvers","tailscale_ssh","tailscale_ssh_console","api_access","https","config_audit_logging","oauth_clients","webhooks","subnet_failover","user_roles"]},{"title":"Access Controls","features":["acl_named_users","acl_tags","block_incoming"]},{"title":"Authentication","features":["sso","mfa","auth_keys","custom_auth_periods","oidc","device_approval","user_approval","okta","okta-provisioning"]},{"title":"Support","features":["community_forum","email_support"]}],"R2":{"devices":{"title":"Devices","tooltip":"A device is any computer, phone, or server with Tailscale installed and connected to your network. Device limits are pooled across your network.","quantity":"%s device"},"admin_users":{"title":"Admin users","tooltip":"Admin users have access to the admin console for overview of devices on the network and network settings. Includes Admin, IT admin, and Network admin.","quantity":"%s admin user"},"subnets":{"title":"Subnet routers","tooltip":"Subnet routers allow you to connect devices you can\'t install Tailscale on directly. Devices connected by subnet routers don\'t count towards your device total.","quantity":"%s subnet router"},"peer_to_peer":{"title":"Secure, peer-to-peer connections","tooltip":"Traffic over Tailscale is end-to-end encrypted with WireGuard\xae and sent peer-to-peer between devices, for minimal latency and better privacy."},"desktop_mobile_apps":{"title":"Desktop & mobile apps","tooltip":"We offer native clients for Windows, macOS, iOS, Android, and most popular Linux distros."},"split_dns":{"title":"Split DNS","tooltip":"Split DNS lets you use a DNS server only for specific domains, such as internal applications."},"magic_dns":{"title":"MagicDNS","tooltip":"MagicDNS automatically registers DNS names for devices on your network, making it even easier to access devices over Tailscale."},"node_sharing":{"title":"Node sharing","tooltip":"Sharing allows you to invite users outside your network to access your devices in a controlled way.","beta":true},"funnel":{"title":"Tailscale Funnel","tooltip":"Route traffic from the wider internet to one or more of your Tailscale nodes.","beta":true},"exit_nodes":{"title":"Exit nodes","tooltip":"Exit nodes let you route all your internet traffic through a device on your network, like a traditional privacy VPN."},"auto_approvers":{"title":"Auto approvers","tooltip":"Authorize users to advertise subnet routes and exit nodes without further approval.","beta":true},"tailscale_ssh":{"title":"Tailscale SSH","tooltip":"Authenticate and encrypt SSH connections in your network using using Tailscale node keys instead of SSH keys.","beta":true},"tailscale_ssh_console":{"title":"Tailscale SSH Console","tooltip":"Create a browser-based SSH session from the admin console to a node on your tailnet.","beta":true},"api_access":{"title":"API access","tooltip":"Use our public API to manage your network\'s devices, ACLs, DNS settings, and more."},"https":{"title":"HTTPS certificates","tooltip":"Allow users to provision TLS certificates for their devices.","beta":true},"subnet_failover":{"title":"Subnet router failover","tooltip":"Expose the same subnet on multiple routers to ensure availability even if one goes offline.","beta":true},"user_roles":{"title":"Additional user roles","tooltip":"In addition to Admin, use IT admin, Network admin, and Auditor roles for separation of duties."},"acl_named_users":{"title":"Unique users in ACLs","tooltip":"Tailscale\'s ACL (access control lists) policy lets you set rules for who can access resources on your network. Rules can apply to devices, tags, individual users, or wildcards.<br><br>We only charge for each unique user named in your ACL policy.","quantity":"%s unique users in ACL"},"acl_tags":{"title":"ACL Tags","tooltip":"ACL Tags let you authenticate devices as part of a group, rather than a user. For example, you can use tag:production for production web servers, or tag:database for database servers.<br><br>ACL rules for tagged devices for free.","quantity":"%s ACL tag"},"block_incoming":{"title":"Block incoming connections","tooltip":"Native clients allow blocking all incoming connections, for simple access controls when managing servers or remote devices."},"config_audit_logging":{"title":"Configuration audit logging","tooltip":"Configuration audit logs record actions that modify a tailnetâs configuration, including the type of action, the actor, the target resource, and the time."},"sso":{"title":"Single Sign-On (SSO)","tooltip":"Authenticate users to your network using your existing Single Sign-On (SSO) system. You can manage who has access to your network from your existing tools."},"mfa":{"title":"Multi-factor Auth (MFA)","tooltip":"Enforce 2-factor or multi-factor authentication (MFA) policies using your Single Sign-On (SSO) provider."},"auth_keys":{"title":"Auth keys","tooltip":"Authenticate servers and ephemeral nodes like containers to your network."},"custom_auth_periods":{"title":"Custom authentication periods","tooltip":"Enforce that users re-authenticate with your identity provider at an interval you choose. By default, this is every 6 months."},"oidc":{"title":"Custom OIDC","tooltip":"Integrate Tailscale with a custom OIDC provider.","beta":true},"device_approval":{"title":"Device approval","tooltip":"Require new devices to be approved before they can access a network."},"user_approval":{"title":"User approval","tooltip":"Require new users to be approved before they can access a network.","beta":true},"okta":{"title":"Okta SSO","tooltip":"Integrate all your application access together by using Tailscale with Okta as your SSO provider."},"okta-provisioning":{"title":"User & group provisioning for Okta","tooltip":"Sync group membership and deactivated users from Okta."},"oauth_clients":{"title":"OAuth clients","tooltip":"Provide fine-grained control on the access granted to clients that use the Tailscale API.","beta":true},"webhooks":{"title":"Webhooks","tooltip":"Subscribe to certain events on your Tailscale network and process the event notifications through an integration or app."},"community_forum":{"title":"Community forum","tooltip":"Join our public community forum at forum.tailscale.com"},"email_support":{"title":"Email support","tooltip":"Reach out to us at [email protected] for help using Tailscale."}}}'),$=e=>{let{masthead:t,FAQs:a}=e,[l,n]=(0,i.useState)("yearly");return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(K,{...t}),(0,s.jsx)("section",{className:"bg-gray-0 pb-10",children:(0,s.jsx)("div",{className:"container",children:(0,s.jsxs)("div",{className:"flex gap-5",children:[(0,s.jsxs)("label",{className:"flex items-center gap-2",htmlFor:"period_yearly",children:[(0,s.jsx)("input",{type:"radio",name:"period",value:"yearly",id:"period_yearly",checked:"yearly"===l,onChange:()=>n("yearly")}),"Yearly",(0,s.jsx)("span",{className:"text-xs",children:"Save 16%"})]}),(0,s.jsxs)("label",{className:"flex items-center gap-2",htmlFor:"period_monthly",children:[(0,s.jsx)("input",{type:"radio",name:"period",value:"monthly",id:"period_monthly",checked:"monthly"===l,onChange:()=>n("monthly")}),"Monthly"]})]})})}
4),(0,s.jsx)(J,{pricingPeriod:l}),(0,s.jsx)(Y,{pricingPeriod:l}),(0,s.jsx)(ea,{faqs:a})]})};let K=({textCard:e})=>(0,s.jsx)("section",{className:"bg-gray-0 py-20 md:pb-24 md:pt-44",children:(0,s.jsx)("div",{className:"container",children:(0,s.jsx)(g.Z,{...e})})}),J=({pricingPeriod:e})=>(0,s.jsx)("section",{className:"bg-gray-0 pb-10",children:(0,s.jsx)("div",{className:"container",children:(0,s.jsxs)("div",{className:"grid grid-cols-1 gap-1 lg:grid-cols-2 xl:grid-cols-4",children:[F.oP.map((t,a)=>(0,s.jsx)(Q,{plan:F.RB[t],index:a,pricingPeriod:e},F.RB[t].title)),(0,s.jsxs)("div",{className:"mt-4 bg-white p-10 text-sm xl:col-span-4",children:["For Team and Business plans, the maximum number of allowed devices increases with every user you add to your network. Device limits are pooled across your account, and do not need to be associated with any particular user. Need to add more devices without adding more users? See:"," ",(0,s.jsx)(u(),{href:"/pricing-v2#how-do-device-limits-work",className:"underline hover:no-underline",children:"How do device limits work?"})]}),(0,s.jsxs)("div",{className:"bg-white p-10 text-sm xl:col-span-2",children:["Need more for your personal network? The ",(0,s.jsx)("strong",{children:"Personal Pro"})," plan expands your personal account with 100 devices, 2 subnet routers, and custom auth periods for ",(0,s.jsx)("strong",{children:"yearly"===e?"$48 per year":"$5 per month"}),"."]}),(0,s.jsxs)("div",{className:"bg-white p-10 text-sm xl:col-span-2",children:["Using Tailscale for an open source or friends & family project? The ",(0,s.jsx)("strong",{children:"Community on GitHub"})," plan can get you up to 25 users, 5 devices per user, and 2 admins for ",(0,s.jsx)("strong",{children:"free"}),"."]})]})})}),Q=({plan:e,index:t,pricingPeriod:a})=>(0,s.jsxs)("div",{className:(0,p.Z)("bg-white p-10",0===t&&"rounded-tl-2xl",t+1===F.oP.length&&"rounded-tr-2xl"),children:[(0,s.jsx)("p",{className:"flex items-center justify-between text-[32px] font-medium tracking-tight",children:e.title}),(0,s.jsx)("p",{className:"mt-6 text-sm tracking-tight text-heading-black text-opacity-80",children:e.description}),(0,s.jsx)("p",{className:"mt-16 text-5xl font-medium tracking-tight",children:"yearly"===a?e.price_yearly:e.price_monthly}),(0,s.jsx)("p",{className:"mt-2.5 text-xs font-medium uppercase text-heading-black",children:e.price_description}),(0,s.jsx)(u(),{href:e.cta.url,"data-track":"Link Clicked","data-track-properties":`{"label": "${e.cta.label}"}`,children:(0,s.jsx)(m.ZP,{button:{buttonOptions:{color:"Enterprise"===e.title?"grey":"black",addArrow:!1},link:{title:e.cta.label}},className:"mt-6 xs:w-full"})}),e.cards?.features.length>0&&(0,s.jsx)("ul",{className:"mt-6",children:e.cards.features.map(e=>(0,s.jsxs)("li",{className:"mb-2.5 flex items-start gap-1 text-sm tracking-tighter",children:[(0,s.jsx)(h.Z,{type:"check",className:"mt-[2px] w-[1.15rem] shrink-0"}),e]},e))})]}),Y=({pricingPeriod:e})=>(0,s.jsx)("section",{className:"hidden py-20 md:block",children:(0,s.jsxs)("div",{className:"container",children:[(0,s.jsx)("h2",{className:"mb-20 text-center text-4xl font-medium tracking-tight text-heading-black",children:"Compare plans and features"}),(0,s.jsx)(X,{pricingPeriod:e})]})}),X=({pricingPeriod:e})=>(0,s.jsxs)("table",{className:"w-full text-left",children:[(0,s.jsx)("thead",{className:"sticky bg-white",children:(0,s.jsxs)("tr",{children:[(0,s.jsx)("th",{scope:"col",className:"pb-4 pl-5 text-xl font-medium",children:"Compare plans"}),F.bD.map(e=>(0,s.jsx)("td",{className:"text-center font-medium text-gray-1000",width:"15%",children:(0,s.jsx)("div",{className:"inline-flex items-center gap-1",children:F.RB[e].title})},F.RB[e].title))]})}),(0,s.jsx)("tbody",{children:F.tW.map((t,a)=>(0,s.jsxs)(i.Fragment,{children:[(0,s.jsx)("tr",{children:(0,s.jsx)("th",{scope:"colgroup",colSpan:F.bD.length+1,className:"border-b-2 pb-4 pl-5 pt-12 text-xl font-medium",children:t.title})}),"Basics"===t.title&&0===a&&(0,s.jsxs)("tr",{className:"border-b transition-colors hover:bg-gray-0",children:[(0,s.jsx)("th",{className:"px-5 py-3.5 font-normal text-heading-black text-opacity-80",children:"Users"}),(0,s.jsx)("td",{className:"px-5 py-3.5 text-center text-sm text-gray-900",children:"1"},"basics-users-personal"),(0,s.jsx)("td",{className:"px-5 py-3.5 text-center text-sm text-gray-900",children:"1"},"basics-users-personal-pro"),(0,s.jsx)("td",{className:"px-5 py-3.5 text-center text-sm text-gray-900",children:"yearly"===e?"$5 per user per month":"$6 per user per month"},"basics-users-team"),(0,s.jsx)("td",{className:"px-5 py-3.5 text-center text-sm text-gray-900",children:"yearly"===e?"$15 per user per month":"$18 per user per month"},"basics-users-business"),(0,s.jsx)("td",{className:"px-5 py-3.5 text-center text-sm text-gray-900",children:"Unlimited"},"basics-users-enterprise")]},"basics-users"),t.features.map((a,i)=>(0,s.jsxs)("tr",{className:`transition-colors hover:bg-gray-0 ${i+1!==t.features.length&&"border-b"}`,children:[(0,s.jsx)("th",{className:"px-5 py-3.5 font-normal text-heading-black text-opacity-80",children:F.R2[a].tooltip?(0,s.jsx)(et,{label:F.R2[a].title,tip:F.R2[a].tooltip}):F.R2[a].title}),F.bD.map(t=>(0,s.jsx)("td",{className:"px-5 py-3.5 text-center text-sm text-gray-900",children:(0,s.jsx)(ee,{plan:t,feature:a,pricingPerio
4d:e})},F.RB[t].title+F.R2[a].title))]},F.R2[a].title))]},t.title))})]}),ee=({plan:e,feature:t,pricingPeriod:a})=>{if(F.RB[e].quantities[t]){let i=F.RB[e].quantities[t],l=F.RB[e].quantities[`${t}:note:${a}`]||"";return(0,s.jsxs)("span",{children:[i,l&&(0,s.jsx)("span",{className:"block text-gray-500",children:l})]})}return F.RB[e].features.includes(t)?"enterprise"===e&&"email_support"===t?(0,s.jsxs)("span",{className:"mx-auto flex justify-center gap-1",children:[(0,s.jsx)(h.Z,{type:"check",className:"w-5"}),"enterprise"===e&&"email_support"===t?"Priority":""]}):(0,s.jsx)(h.Z,{type:"check",className:"mx-auto w-5"}):(0,s.jsx)(h.Z,{type:"minus",className:"mx-auto w-5 opacity-[.15]"})},et=({label:e,tip:t})=>(0,s.jsxs)("div",{className:"group relative inline-block",children:[(0,s.jsx)("span",{className:"border-b border-dotted border-current",children:e}),(0,s.jsx)("span",{className:"pointer-events-none absolute left-[calc(100%+1em)] top-0 z-10 w-max max-w-xs rounded bg-gray-1000 p-3 text-sm text-white opacity-0 group-hover:opacity-100",children:t})]}),ea=({faqs:e})=>(0,s.jsx)("div",{className:"scroll-mt-20 bg-gray-50",id:"faqs",children:(0,s.jsx)("div",{className:"container-new",children:e?.content&&(0,s.jsx)(l.Z,{title:e?.title||"Pricing FAQs",description:e?.description,links:e?.links,content:e?.content})})});var es=JSON.parse('{"oP":["free","starter","premium","enterprise"],"RB":{"free":{"id":"free","title":"Free","description":"For individuals or small teams who want all that Tailscale has to offer, for free.","price_monthly":"$0","price_description":"Per active user/month","cta":{"label":"Get started for free","url":"https://login.tailscale.com/start?next_url=%2Fadmin%2Fmachines"},"features":["users","devices","desktop_mobile_apps","peer_to_peer_connections","end_to_end_encryption","ipv4_ipv6","split_tunnelling","short_dns_host_names","subnet_routers","ha_failover","ip_space_collision_resolution","exit_nodes","network_level_access_policies","resource_level_access_policies","restrict_based_on_purpose","restrict_based_on_group","restrict_based_on_individual_user","acl_tests","app_connectors","gitops_for_acls","on_demand_access","separation_of_administrative_duties","service_accounts","service_provisioning","tailscale_kubernetes_operator","tailscale_ssh","tailscale_ssh_session_recording","tailscale_funnel","user_approval","standard_user_roles","sso_with_standard_idp","sso_with_advanced_idp","custom_authentication_periods","user_group_provisioning_azure_ad","device_approval","tailnet_lock","posture_management","custom_postures","posture_integrations","webhooks","configuration_audit_logging","ui","cli","api","iac","customer_support"],"quantities":{"users":"3","devices":"100","custom_postures":"up to 2"},"links":{"log_streaming":{"text":"configuration logs only","url":"/kb/1255/log-streaming/#configuration-audit-log-streaming"}},"cards":{"users_and_devices":["Up to 3 users w/Custom Domain","Up to 100 devices."],"features":["Peer-To-Peer Connections","MagicDNS","Network, Resource-level, and Attribute-based Access Policies (ACLs)","User Approval","SSO with standard IdP"]}},"starter":{"id":"starter","title":"Starter","description":"For teams or organizations looking for an easy-to-use, secure, legacy VPN replacement.","price_monthly":"$6","price_description":"Per active user/month","cta":{"label":"Get started for free","url":"https://login.tailscale.com/start?next_url=%2Fadmin%2Fmachines"},"features":["users","devices","desktop_mobile_apps","peer_to_peer_connections","end_to_end_encryption","ipv4_ipv6","split_tunnelling","short_dns_host_names","subnet_routers","app_connectors","ha_failover","exit_nodes","network_level_access_policies","resource_level_access_policies","restrict_based_on_purpose","restrict_based_on_group","acl_tests","gitops_for_acls","on_demand_access","service_accounts","service_provisioning","tailscale_kubernetes_operator","user_approval","standard_user_roles","sso_with_standard_idp","posture_management","webhooks","configuration_audit_logging","ui","cli","api","iac","customer_support","pay_by_credit_card"],"quantities":{"users":"Unlimited","devices":"100 + 10/user"},"links":{"restrict_based_on_group":{"text":"autogroups only","url":"/kb/1337/acl-syntax/#autogroups"}},"cards":{"users_and_devices":["First 3 users free","Unlimited Users","100 devices + 10 devices per user"],"features":["Limited ACLs","ACL tags","Auth Keys","SSO with standard IdP","Configuration Audit Logging","Webhooks"]}},"premium":{"id":"premium","title":"Premium","description":"For companies who need service and resource level authentication and access control.","price_monthly":"$18","price_description":"Per active user/month","cta":{"label":"Get started for free","url":"https://login.tailscale.com/start?next_url=%2Fadmin%2Fmachines"},"features":["users","devices","desktop_mobile_apps","peer_to_peer_connections","end_to_end_encryption","ipv4_ipv6","split_tunnelling","short_dns_host_names","subnet_routers","app_connectors","ha_failover","ip_space_collision_resolution","regional_routing","exit_nodes","network_level_access_policies","resource_level_access_policies","restrict_based_on_purpose","restrict_based_on_group","restrict_based_on_individual_user","acl_tests","gitops_for_acls","on_demand_access","
4separation_of_administrative_duties","service_accounts","service_provisioning","tailscale_kubernetes_operator","tailscale_ssh","tailscale_funnel","custom_authentication_periods","user_approval","standard_user_roles","advanced_user_roles","sso_with_standard_idp","sso_with_advanced_idp","device_approval","posture_management","customize_ui_visibility","configure_auto_updates_settings","runtime_configurations","configure_mdm_tools","webhooks","configuration_audit_logging","network_flow_logging","ui","cli","api","iac","customer_support","priority_support","pay_by_credit_card"],"quantities":{"users":"Unlimited","devices":"100 + 20/user"},"links":{},"cards":{"users_and_devices":["First 3 users free","Unlimited Users","100 devices + 20 devices per user"],"features":["ACLs","SSO with advanced IdP","Network flow logging","Tailscale SSH","Tailscale Funnel","GitOps for ACLs","Admin user roles","MDM Policies","Priority support"]}},"enterprise":{"id":"enterprise","title":"Enterprise","description":"For companies who need advanced integrations, compliance and support for access control at scale.","price_monthly":"Custom","price_description":"Purpose-built for business","cta":{"label":"Contact Sales","url":"/contact/sales"},"features":["users","devices","desktop_mobile_apps","peer_to_peer_connections","end_to_end_encryption","ipv4_ipv6","split_tunnelling","short_dns_host_names","subnet_routers","app_connectors","ha_failover","ip_space_collision_resolution","regional_routing","exit_nodes","network_level_access_policies","resource_level_access_policies","restrict_based_on_purpose","restrict_based_on_group","restrict_based_on_individual_user","acl_tests","gitops_for_acls","on_demand_access","separation_of_administrative_duties","service_accounts","service_provisioning","tailscale_kubernetes_operator","tailscale_ssh","tailscale_ssh_session_recording","tailscale_funnel","custom_authentication_periods","user_approval","standard_user_roles","advanced_user_roles","sso_with_standard_idp","sso_with_advanced_idp","user_group_provisioning_azure_ad","user_group_provisioning_okta","device_approval","tailnet_lock","posture_management","custom_postures","posture_integrations","customize_ui_visibility","configure_auto_updates_settings","runtime_configurations","configure_mdm_tools","webhooks","configuration_audit_logging","network_flow_logging","log_streaming","ui","cli","api","iac","customer_support","priority_support","additional_support_options","pay_by_credit_card","pay_by_invoice","annual_billing"],"quantities":{"users":"Unlimited","devices":"100 + 20/user"},"links":{},"cards":{"users_and_devices":["Unlimited Users","100 devices + 20 devices per user"],"features":["User & Group provisioning (SCIM)","Network flow logging with log streaming","Tailscale SSH session recording","Annual Billing","Pay By Invoice","Tailnet Lock","Advanced Device Posture Management","MDM Policies","Additional Support Options"]}}},"tW":[{"title":"Users & Devices","features":["users","devices","desktop_mobile_apps"]},{"title":"Virtual Private Networking","features":["peer_to_peer_connections","end_to_end_encryption","ipv4_ipv6","split_tunnelling","short_dns_host_names","exit_nodes","subnet_routers","app_connectors","ha_failover","ip_space_collision_resolution","regional_routing"]},{"title":"Access control","features":["network_level_access_policies","acl_tests","gitops_for_acls","on_demand_access","resource_level_access_policies","restrict_based_on_purpose","restrict_based_on_group","restrict_based_on_individual_user","separation_of_administrative_duties"]},{"title":"Application Networking","features":["service_accounts","service_provisioning","tailscale_kubernetes_operator","tailscale_ssh","tailscale_funnel"]},{"title":"User Management","features":["user_approval","standard_user_roles","advanced_user_roles","sso_with_standard_idp","sso_with_advanced_idp","custom_authentication_periods","user_group_provisioning_azure_ad","user_group_provisioning_okta"]},{"title":"Endpoint & Posture Management","features":["device_approval","tailnet_lock","posture_management","custom_postures","posture_integrations"]},{"title":"Mobile Device Management Policies","features":["customize_ui_visibility","configure_auto_updates_settings","runtime_configurations","configure_mdm_tools"]},{"title":"Monitoring & Compliance","features":["webhooks","configuration_audit_logging","network_flow_logging","tailscale_ssh_session_recording","log_streaming"]},{"title":"Interfaces","features":["ui","cli","api","iac"]},{"title":"Support","features":["customer_support","priority_support","additional_support_options"]},{"title":"Payment Options","features":["pay_by_credit_card","pay_by_invoice","annual_billing"]}],"R2":{"users":{"title":"Users","tooltip":"A user is any distinct email address in your account. You get 3 users for free in Starter and Premium.","quantity":"Users: %s"},"desktop_mobile_apps":{"title":"Desktop & mobile apps"},"devices":{"title":"Devices","tooltip":"A device is any computer, phone, or server with Tailscale installed that\'s connected to your network. Device limits are pooled across your network.","quantity":"Devices: %s"},"peer_to_peer_connections":{"title":"Peer-to-peer connections","tooltip":"Establish direct connections between nodes in your tailnet, to minimize latency."},"end_to_end_encryption":{"title":"End-to-end encryption","tooltip":"Encrypt all traffic end-to-e
4nd with WireGuard\xae."},"ipv4_ipv6":{"title":"IPv4 and IPv6","tooltip":"Route both IPv4 and IPv6 traffic."},"split_tunnelling":{"title":"Split tunnelling","tooltip":"Split DNS traffic so only traffic to your internal network goes over Tailscale, and everything else goes directly to the internet."},"short_dns_host_names":{"title":"Short DNS host names (MagicDNS)","tooltip":"Automatically register human readable DNS names with MagicDNS to make it even easier to access devices and services on your network."},"subnet_routers":{"title":"Subnet routers","tooltip":"Relay traffic from your tailnet through a gateway to a subnet of VPCs, corporate LANs, physical networks, and more."},"app_connectors":{"title":"App connectors","tooltip":"Control access to software as a service (SaaS) applications available over your tailnet."},"ha_failover":{"title":"HA failover","tooltip":"Expose the same subnet routers and app connectors on multiple routers to ensure availability even if one router goes offline."},"ip_space_collision_resolution":{"title":"IP space collision resolution (4via6 subnet routers)","tooltip":"Route traffic to overlapping IPv4 subnets without renumbering with 4via6 subnet routers, by assigning unique IPv6 addresses for each subnet."},"exit_nodes":{"title":"Exit nodes","tooltip":"Route Internet traffic through a designated egress point on your tailnet, like a traditional VPN."},"network_level_access_policies":{"title":"Network-level access policies (ACLs)","tooltip":"Precisely define access in your tailnet based on IP address, subnet, or port."},"resource_level_access_policies":{"title":"Resource-level access policies","tooltip":"Use ACL tags to assign identity to a device in order to enforce access based on roles and groups."},"restrict_based_on_purpose":{"title":"Restrict based on purpose (ACL tags)","tooltip":"Assign an identity to a device that is separate from human users, and use that identity as part of an ACL to restrict access."},"restrict_based_on_group":{"title":"Restrict based on group","tooltip":"Allow specific ACL-defined groups to access tagged nodes."},"restrict_based_on_individual_user":{"title":"Restrict based on individual user","tooltip":"Allow specific ACL-defined users to access tagged nodes."},"acl_tests":{"title":"ACL tests","tooltip":"Test ACLs to make sure they\'re properly scoped to avoid unnecessary exposure of critical systems on your network."},"gitops_for_acls":{"title":"GitOps for ACLs","tooltip":"Use a GitOps workflow to centralize management and version-control of your ACLs."},"on_demand_access":{"title":"On-demand access","tooltip":"Use partner integrations to grant elevated privileges (e.g. on-call), including temporary access, using an approval workflow."},"separation_of_administrative_duties":{"title":"Separation of administrative duties (User roles)","tooltip":"Assign admin roles to appropriately manage permissions, including IT admin, Network admin, Billing admin, and Auditor roles."},"service_accounts":{"title":"Service accounts","tooltip":"Pre-authenticate services or nodes (e.g., servers and ephemeral containers) added to your network."},"service_provisioning":{"title":"Service provisioning","tooltip":"Assign an identity to a service or node and restrict access on your tailnet, using ACL tags."},"tailscale_kubernetes_operator":{"title":"Tailscale Kubernetes operator","tooltip":"Provide full ingress and egress connectivity from Kubernetes clusters to non-Kubernetes resources, as well as cross-cluster peering, via Tailscale."},"tailscale_ssh":{"title":"Tailscale SSH","tooltip":"Authenticate and encrypt SSH connections between devices in your tailnet, using Tailscale instead of SSH basic auth, keys, certs, or a bastion."},"tailscale_funnel":{"title":"Tailscale Funnel","tooltip":"Route traffic from the Internet to a node in your tailnet to publicly share it with anyone, even if they arenât using Tailscale."},"custom_authentication_periods":{"title":"Custom authentication periods","tooltip":"Enforce that users re-authenticate with your identity provider at an interval you choose. By default, this is every 6 months"},"user_approval":{"title":"User approval","tooltip":"Prevent new users in your organization from joining a tailnet until theyâve been approved by an admin"},"standard_user_roles":{"title":"Standard user roles","tooltip":"Standard user roles include owner, admin, and member"},"advanced_user_roles":{"title":"Advanced user roles","tooltip":"Advanced user roles include billing admin, IT admin, network admin, and auditor"},"sso_with_standard_idp":{"title":"SSO with standard IdP (e.g., Google, Microsoft, GitHub, Keycloak, custom)","tooltip":"Log in to Tailscale and manage users with any free native and/or custom OIDC identity provider."},"sso_with_advanced_idp":{"title":"SSO with advanced IdP (e.g., Okta, OneLogin, JumpCloud, custom)","tooltip":"Log in to Tailscale and manage users with any paid and/or custom OIDC identity provider."},"user_group_provisioning_azure_ad":{"title":"User & group provisioning (Azure AD + SCIM)","tooltip":"Sync group membership and new or deactivated users from Azure AD."},"user_group_provisioning_okta":{"title":"User & group provisioning (Okta + SCIM)","tooltip":"Sync group membership and new or deactivated users from Okta."},"device_approval":{"title":"Device approval","tooltip":"Review and approve new devices and nodes before adding them to your tailnet."},"tailnet_lock":{"title":"Tailnet Lock","tooltip":"Prevent new, and potentially malicious, nodes from joining your tailnet without first being signed by an already trusted node."},"posture_management":{"title":"Device posture management","tooltip":"Use posture conditions to more granularly control access in your network policies."},"custom_postures":{"title":"Postures based on custom attributes","tooltip":"Attach custom posture attributes to your devices and use them as part of posture conditions."},"posture_integrations":{"title":"Device posture integrations","tooltip":"Automatically synchronize device trust information from third-party posture checking tools and use it as part of posture conditions."},"customize_ui_visibility":{"title":"Customize UI Visibility","tooltip":"Change the visibility of UI elements in Tailscale
4Client menu"},"configure_auto_updates_settings":{"title":"Configure auto-updates settings","tooltip":"Configure checking and installing Tailscale latest version automatically"},"runtime_configurations":{"title":"Runtime configurations","tooltip":"Configure Tailscale behavior in end user devices eg. Automatically start Tailscale when user logs in, force tailscale to be always on, route all traffic via a specific exit node, and more"},"configure_mdm_tools":{"title":"Configure MDM Tools","tooltip":"Configure and deploy Tailscale using MDM solutions like SimpleMDM, Iru, Microsoft Intune, Jamf"},"webhooks":{"title":"Webhooks","tooltip":"Subscribe to events on your tailnet, and forward those events to any integration or app â like Slack or Microsoft Teams."},"configuration_audit_logging":{"title":"Configuration audit logging","tooltip":"Record actions that modify a tailnet\'s configuration, including type of action, actor, target resource, and time."},"network_flow_logging":{"title":"Network flow logging","tooltip":"Record network traffic between nodes on your tailnet."},"log_streaming":{"title":"Log streaming","tooltip":"Send real-time network traffic information to any SIEM or observability tool for analysis, or to a bucket for long-term storage."},"tailscale_ssh_session_recording":{"title":"Tailscale SSH session recording","tooltip":"Capture and stream terminal sessions over Tailscale SSH for analysis or storage."},"ui":{"title":"UI","tooltip":"Log in to the tailscale.com admin console to manage users, nodes, and their permissions, on your tailnet."},"cli":{"title":"CLI","tooltip":"Quickly access information, manage devices or troubleshoot issues with a built-in command-line interface."},"api":{"title":"API","tooltip":"Use the API to manage your network\'s devices, ACLs, DNS settings, and more."},"iac":{"title":"IaC","tooltip":"Configure your tailnet using Terraform or Pulumi."},"customer_support":{"title":"Customer support","tooltip":"Use the documentation or email us to get help with using Tailscale."},"priority_support":{"title":"Priority support","tooltip":"Get support with a response SLA."},"additional_support_options":{"title":"Additional support options"},"pay_by_credit_card":{"title":"Pay by credit card"},"pay_by_invoice":{"title":"Pay by invoice"},"annual_billing":{"title":"Annual billing"},"regional_routing":{"title":"Regional routing","tooltip":"Route your traffic across distributed HA subnet routers or app connectors based on region."}}}'),ei=e=>{let{masthead:t,FAQs:a}=e;return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(el,{...t}),(0,s.jsx)(en,{}),(0,s.jsx)(eo,{}),(0,s.jsx)(em,{faqs:a})]})};let el=({textCard:e})=>(0,s.jsx)("section",{className:"bg-gray-0 py-20 md:pb-24 md:pt-44",children:(0,s.jsx)("div",{className:"container",children:(0,s.jsx)(g.Z,{...e})})}),en=()=>(0,s.jsx)("section",{className:"bg-gray-0 pb-10",children:(0,s.jsx)("div",{className:"container",children:(0,s.jsxs)("div",{className:"grid grid-cols-1 gap-1 lg:grid-cols-2 xl:grid-cols-4",children:[es.oP.map((e,t)=>(0,s.jsx)(er,{plan:es.RB[e],index:t},es.RB[e].title)),(0,s.jsxs)("div",{id:"addons",className:"col-span-full grid scroll-mt-20 gap-8 rounded-b-2xl bg-white p-10 md:grid-cols-2",children:[(0,s.jsxs)("div",{className:"col-span-2 flex flex-col items-center text-center",children:[(0,s.jsx)("p",{className:"flex items-center justify-between text-[32px] font-medium tracking-tight",children:"Add-ons"}),(0,s.jsxs)("p",{className:"mt-3 max-w-[51ch] text-sm tracking-tight text-heading-black text-opacity-80",children:["Get more out of Tailscale with optional add-ons. Available on all plans. Head to the"," ",(0,s.jsx)("a",{href:"https://console.tailscale.com/admin/settings/general",className:"underline hover:no-underline",children:"settings page"})," ","to configure your add-ons."]})]}),(0,s.jsxs)("div",{className:"grid gap-x-8 rounded-lg bg-gray-0 px-10 py-8 lg:grid-cols-2",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)(I(),{src:"/images/logos/mullvad.svg",alt:"Mullvad",width:1257,height:252,className:"w-[192px]"}),(0,s.jsxs)("p",{className:"mt-3 max-w-[51ch] text-sm tracking-tight text-heading-black text-opacity-80",children:["Securely and privately browse the web with Tailscale + Mullvad.",(0,s.jsx)("br",{}),(0,s.jsx)(u(),{href:"/mullvad",className:"underline hover:no-underline","data-track":"Link Clicked","data-track-properties":'{"label": "Learn more about Mullvad"}',children:"Learn more"})]})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("p",{className:"text-[28px] font-medium tracking-tight",children:"$5"}),(0,s.jsx)("p",{className:"mt-2.5 text-xs font-medium uppercase text-heading-black",children:"Per month for 5 devices"}),(0,s.jsx)("a",{href:"https://login.tailscale.com/start",children:(0,s.jsx)(m.ZP,{button:{buttonOptions:{color:"black",addArrow:!1}
4,link:{title:"Get started"}},className:"mt-3 xs:w-full"})})]})]})]}),(0,s.jsx)(ep,{})]})})}),er=({plan:e,index:t})=>(0,s.jsxs)("div",{className:(0,p.Z)("bg-white p-10",0===t&&"rounded-tl-2xl",t+1===es.oP.length&&"rounded-tr-2xl"),children:[(0,s.jsxs)("p",{className:"flex items-center justify-between text-[32px] font-medium tracking-tight",children:[e.title,(0,s.jsx)(h.Z,{type:`plan-${e.id}`,className:"h-[36px]"})]}),(0,s.jsx)("p",{className:"mt-6 text-sm tracking-tight text-heading-black text-opacity-80",children:e.description}),(0,s.jsx)("p",{className:"mt-16 text-5xl font-medium tracking-tight",children:e.price_monthly}),(0,s.jsx)("p",{className:"mt-2.5 text-xs font-medium uppercase text-heading-black",children:e.price_description}),(0,s.jsx)(u(),{href:e.cta.url,"data-track":"Link Clicked","data-track-properties":`{"label": "${e.cta.label}"}`,children:(0,s.jsx)(m.ZP,{button:{buttonOptions:{color:"Enterprise"===e.title?"grey":"black",addArrow:!1},link:{title:e.cta.label}},className:"mt-6 xs:w-full"})}),e.cards?.users_and_devices.length>0&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("h3",{className:"mb-3 mt-6 text-xs font-medium uppercase text-heading-black",children:"Users and devices"}),(0,s.jsx)("ul",{children:e.cards.users_and_devices.map(e=>(0,s.jsxs)("li",{className:"mb-2.5 flex items-start gap-1 text-sm tracking-tighter",children:[(0,s.jsx)(h.Z,{type:"check",className:"mt-[2px] w-[1.15rem] shrink-0"}),(0,s.jsx)("span",{dangerouslySetInnerHTML:{__html:e}})]},e))})]}),e.cards?.features.length>0&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("h3",{className:"mb-3 mt-6 text-xs font-medium uppercase text-heading-black",children:"Features"}),(0,s.jsx)("ul",{children:e.cards.features.map(e=>(0,s.jsxs)("li",{className:"mb-2.5 flex items-start gap-1 text-sm tracking-tighter",children:[(0,s.jsx)(h.Z,{type:"check",className:"mt-[2px] w-[1.15rem] shrink-0"}),e]},e))})]})]}),eo=()=>(0,s.jsx)("section",{className:"hidden py-20 md:block",children:(0,s.jsxs)("div",{className:"container",children:[(0,s.jsx)("h2",{className:"mb-20 text-center text-4xl font-medium tracking-tight text-heading-black",children:"Compare plans and features"}),(0,s.jsx)(ed,{})]})}),ed=()=>(0,s.jsxs)("table",{className:"w-full text-left",children:[(0,s.jsxs)("thead",{className:"sticky bg-white",children:[(0,s.jsxs)("tr",{children:[(0,s.jsx)("th",{scope:"col",className:"pb-4 pl-5 text-xl font-medium",children:"Compare plans"}),es.oP.map(e=>(0,s.jsx)("td",{className:"text-center font-medium text-gray-1000",width:"15%",children:(0,s.jsxs)("div",{className:"inline-flex items-center gap-1",children:[es.RB[e].title,(0,s.jsx)(h.Z,{type:`plan-${es.RB[e].id}`,className:"h-[18px]"})]})},es.RB[e].title))]}),(0,s.jsxs)("tr",{children:[(0,s.jsx)("th",{scope:"col",className:"pl-5 font-normal text-heading-black text-opacity-80",children:"Pricing per active user/month"}),es.oP.map(e=>(0,s.jsx)("td",{className:"text-center text-gray-900",children:es.RB[e].price_monthly},es.RB[e].price_monthly))]})]}),(0,s.jsx)("tbody",{children:es.tW.map(e=>(0,s.jsxs)(i.Fragment,{children:[(0,s.jsx)("tr",{children:(0,s.jsx)("th",{scope:"colgroup",colSpan:es.oP.length+1,className:"border-b-2 pb-4 pl-5 pt-12 text-xl font-medium",children:e.title})}),e.features.map((t,a)=>(0,s.jsxs)("tr",{className:`transition-colors hover:bg-gray-0 ${a+1!==e.features.length&&"border-b"}`,children:[(0,s.jsx)("th",{className:"px-5 py-3.5 font-normal text-heading-black text-opacity-80",children:es.R2[t].tooltip?(0,s.jsx)(eu,{label:es.R2[t].title,tip:es.R2[t].tooltip}):es.R2[t].title}),es.oP.map(e=>(0,s.jsx)("td",{className:"px-5 py-3.5 text-center text-gray-900",children:(0,s.jsx)(ec,{plan:e,feature:t})},es.RB[e].title+es.R2[t].title))]},es.R2[t].title))]},e.title))})]}),ec=({plan:e,feature:t})=>es.RB[e].quantities[t]?es.RB[e].quantities[t]:es.RB[e].links[t]?(0,s.jsx)(u(),{href:es.RB[e].links[t].url,className:"text-sm underline hover:no-underline","data-track":"Link Clicked","data-track-properties":`{"label": "${es.RB[e].links[t].text}"}`,children:es.RB[e].links[t].text}):es.RB[e].features.includes(t)?(0,s.jsx)(h.Z,{type:"check",className:"mx-auto w-5"}):(0,s.jsx)(h.Z,{type:"minus",className:"mx-auto w-5 opacity-[.15]"}),eu=({label:e,tip:t})=>(0,s.jsxs)("div",{className:"group relative inline-block",children:[(0,s.jsx)("span",{className:"border-b border-dotted border-current",children:e}),(0,s.jsx)("span",{className:"pointer-events-none absolute left-[calc(100%+1em)] top-0 z-10 w-max max-w-xs rounded bg-gray-1000 p-3 text-sm text-white opacity-0 group-hover:opacity-100",children:t})]}),ep=()=>(0,s.jsx)("div",{className:"col-span-full mt-12 rounded-2xl bg-gray-200 p-4 text-center text-gray-900",children:(0,s.jsxs)("p",{className:"[font-size:_clamp(0.85rem,2vw,1rem)]",children:["Have any questions? Check out our"," ",(0,s.jsx)(u(),{href:"/kb/1366/faq/",className:"underline hover:no-underline","data-track":"Link Clicked","data-track-properties":'{"label": "product FAQ"}',children:"product FAQ"}),","," ",(0,s.jsx)(u(),{href:"/kb/1251/pricing-faq/",className:"underline hover:no-underline","data-track":"Link Clicked","data-track-properties":'{"label": "licensing FAQ"}',children:"licensing FAQ"}),", or"," ",(0,s.jsx)(u(),{href:"/contact/sales",className:"underline hover:no-underline","data-track":"Link Clicked","data-track-properties":'{"label": "contact sales"}',children:"contact our sales team."})]})}),em=({faqs:e})=>(0,s.jsx)("div",{className:"scroll-mt-20 bg-gray-50",id:"faqs",children:(0,s.jsx)("div",{className:"container-new",children:e?.content&&(0,s.jsx)(l.Z,{title:e?.title||"Pricing FAQs",de
4scription:e?.description,links:e?.links,content:e?.content})})});var eg=e=>{let{masthead:t}=e;return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(eh,{...t}),";"]})};let eh=({textCard:e})=>(0,s.jsx)("section",{className:"bg-blue-50 py-20 md:py-44",children:(0,s.jsx)("div",{className:"container",children:(0,s.jsx)(g.Z,{...e})})});var ef=a(29985),ex=a(86447),eb=e=>{let{masthead:t,content:a}=e;return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(ey,{...t}),(0,s.jsx)("section",{className:"bg-gray-0 py-16 md:py-[160px]",children:(0,s.jsx)("div",{className:"container",children:(0,s.jsx)("div",{className:"mx-auto w-full max-w-[950px] rounded-2xl bg-white px-5 py-16 md:py-20",children:(0,s.jsx)("div",{className:"mx-auto w-full max-w-[730px]",children:a?.flexContent&&a?.flexContent?.length>0&&(0,s.jsx)(ex.Z,{className:"blog prism underline-link black-bold prose",content:a?.flexContent})})})})})]})};let ey=({heading:e,content:t,intro:a,asset:i})=>(0,s.jsx)("section",{className:"bg-white py-20 md:pb-[95px] md:pt-44",children:(0,s.jsxs)("div",{className:"container",children:[(0,s.jsxs)("div",{className:"mx-auto w-full max-w-[570px] text-center",children:[(0,s.jsx)("h1",{className:"t-72 font-medium",children:e}),(0,s.jsx)("div",{className:"t-b20 mt-[30px] text-heading-black opacity-80",children:(0,s.jsx)(ex.Z,{content:t})}),(0,s.jsx)("div",{className:"t-24 mt-10 text-center font-medium md:mt-[95px]",children:a})]}),(0,s.jsx)("div",{className:"mt-8 flex justify-center md:mt-[72px]",children:(0,s.jsx)(ef.Z,{...i})})]})});var ev=e=>{let{masthead:t,report:a}=e;return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(ew,{...t}),(0,s.jsx)(eT,{...a})]})};let ew=({heading:e,content:t,links:a})=>(0,s.jsx)("section",{className:"bg-blue-900 pb-16 pt-28 text-white md:pb-[120px] md:pt-[200px]",children:(0,s.jsx)("div",{className:"container",children:(0,s.jsxs)("div",{className:"mx-auto w-full max-w-[844px] text-center",children:[(0,s.jsx)("h1",{className:"t-72",children:e}),(0,s.jsx)("p",{className:"t-20 mt-4 opacity-70 md:mt-[30px]",children:t}),(0,s.jsx)("div",{className:"mt-12 space-y-4 md:mt-20 md:space-y-[15px]",children:a?.map(e=>s.jsxs(u(),{href:e?.link||"/#",className:" group flex w-full items-center justify-between gap-4 rounded-[12px] bg-blue-700 px-5 py-8 text-start transition-colors duration-300 hover:bg-white hover:text-heading-black md:p-[35px]","data-track":"Link Clicked","data-track-properties":`{"label": "${e?.heading}"}`,children:[s.jsxs("div",{className:"max-w-[510px]",children:[s.jsx("h2",{className:"t-28",children:e?.heading}),s.jsx("div",{className:"t-16 mt-3 opacity-70",children:e?.content})]}),s.jsx("div",{className:"-mb-3 -mr-3",children:s.jsxs("svg",{width:"36",height:"36",viewBox:"0 0 36 36",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[s.jsx("rect",{className:"transition-colors group-hover:fill-blue-700",width:"36",height:"36",rx:"18",fill:"white"}),s.jsx("g",{clipPath:"url(#clip0_272_63509)",children:s.jsx("path",{className:"transition-colors group-hover:fill-white",fillRule:"evenodd",clipRule:"evenodd",d:"M22.4297 20.8602V14.0649H15.6344L15.6351 15.3978L20.1535 15.3978L13.2776 22.2737L14.2209 23.2169L21.0968 16.341L21.0968 20.8595L22.4297 20.8602Z",fill:"#050505"})}),s.jsx("defs",{children:s.jsx("clipPath",{id:"clip0_272_63509",children:s.jsx("rect",{width:"16",height:"17",fill:"white",transform:"translate(6.32812 18.1484) rotate(-45)"})})})]})})]},e?._key))})]})})}),eT=({textCard:e,links:t})=>(0,s.jsx)("section",{className:"my-16 md:my-[150px]",children:(0,s.jsx)("div",{className:"container",children:(0,s.jsx)("div",{className:"mx-auto w-full max-w-[844px]",children:(0,s.jsxs)("div",{className:"w-full max-w-[624px]",children:[(0,s.jsx)(g.Z,{breakpoint:768,...e}),(0,s.jsx)("div",{className:"mt-8 flex w-full flex-wrap items-center justify-center gap-3 md:mt-[50px] md:justify-start md:gap-[30px]",children:t?.map((e,t)=>s.jsxs(i.Fragment,{children:[t>0&&s.jsx("span",{className:"t-20 hidden opacity-60 md:block",children:"or"}),s.jsx(u(),{href:e?.link||"/#",className:"block w-full md:w-auto","data-track":"Link Clicked","data-track-properties":`{"label": "${e?.heading}"}`,children:s.jsx(m.ZP,{className:"!w-full",button:{buttonOptions:{color:t%2==0?"darkBlack":"fadedGrey",addArrow:!0},link:{title:e?.heading}}})},`link-${t}`)]},`link-${t}`))})]})})})});var ek=a(39603),eC=a(5152),e_=a.n(eC),ej=a(26076);let eS=e_()(()=>Promise.all([a.e(18035),a.e(74237)]).then(a.bind(a,74237)),{loadableGenerated:{webpack:()=>
4[74237]},ssr:!1}),eA=e_()(()=>Promise.all([a.e(18035),a.e(18631)]).then(a.bind(a,18631)),{loadableGenerated:{webpack:()=>[18631]},ssr:!1}),eN=e_()(()=>Promise.all([a.e(18035),a.e(38834)]).then(a.bind(a,38834)),{loadableGenerated:{webpack:()=>[38834]},ssr:!1});var eD=e=>{let{masthead:t}=e,{textCard:a,linkBlocks:i,logoGrid:l,form:n,hubspotForm:r}=t,o=function(){if("function"!=typeof crypto.randomUUID)throw Error("crypto.randomUUID is not defined");try{return crypto.randomUUID()}catch(e){return console.error("Failed to generate UUID:",e),""}}();return(0,s.jsx)("section",{className:"py-16 md:pb-0 md:pt-24",children:(0,s.jsx)("div",{className:"is-wide container ",children:(0,s.jsxs)("div",{className:"w-full rounded-2xl bg-gray-50 px-5 pb-10 pt-16 md:pt-[100px]",children:[(0,s.jsxs)("div",{className:"mx-auto flex w-full max-w-[1200px] flex-col justify-between gap-6 md:flex-row",children:[(0,s.jsxs)("div",{className:"mx-auto flex max-w-[386px] flex-1 flex-col gap-6 md:mx-0 md:gap-12",children:[(0,s.jsx)(g.Z,{...a}),(0,s.jsx)(eV,{linkBlocks:i,className:"hidden md:block"})]}),(0,s.jsxs)("div",{className:"mx-auto w-full max-w-[508px] flex-1 md:mx-0",children:[(0,s.jsx)("div",{className:"aspect-[508/527] w-full",children:"partnerships"===n?(0,s.jsx)(eA,{formId:"165858",submissionUniqueId:o}):"hubspot"===n&&""!==r.formId?(0,s.jsx)(j.Z,{formId:r.formId,defaultId:r.defaultId,rudderstackEventName:r.rudderstackEventName}):"dealReg"===n?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(eN,{formId:"11491"}),(0,s.jsx)(ej.Z,{formId:"11491"})]}):(0,s.jsx)(eS,{formId:"689369",submissionUniqueId:o})}),(0,s.jsx)(eV,{linkBlocks:i,className:"mt-12 md:hidden"})]})]}),(0,s.jsx)("div",{className:"container mx-auto mt-12 md:mt-[105px]",children:(0,s.jsx)(ek.Z,{...l})})]})})})};let eV=({linkBlocks:e,className:t=""})=>(0,s.jsx)("div",{className:`space-y-5 text-center md:space-y-10 md:text-left ${t}`,children:e?.map(e=>s.jsxs("div",{className:"",children:[s.jsx("div",{className:"t-24 font-medium text-heading-black",children:e?.heading}),s.jsx("div",{className:"mt-3 flex flex-wrap justify-center gap-6 md:mt-6 md:justify-start",children:e?.links?.map(e=>s.jsx(u(),{href:e?.link||"/#",className:" block ","data-track":"Link Clicked","data-track-properties":`{"label": "${e?.title}"}`,children:s.jsx(m.IS,{className:"text-opacity-100",textLink:{link:{title:e?.title},textLinkOptions:{arrowColor:"black"}}})},e?._key))})]},e?._key))});var eG=a(79889),eP=a(10490);let eL=e_()(()=>a.e(98828).then(a.bind(a,98828)),{loadableGenerated:{webpack:()=>[98828]},ssr:!1});var eI=e=>{let{masthead:t,socials:a,form:i}=e;return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(eM,{...t}),(0,s.jsx)(eO,{...a}),(0,s.jsx)(eE,{...i})]})};let eM=({heading:e,supportLinks:t})=>(0,s.jsx)("section",{className:"overflow-hidden bg-green-900 pb-16 pt-24 text-white md:py-[200px]",children:(0,s.jsx)("div",{className:"container",children:(0,s.jsxs)("div",{className:"mx-auto w-full max-w-[840px]",children:[(0,s.jsx)("h1",{className:"t-72 max-w-[780px]",children:e}),(0,s.jsxs)("div",{className:"mt-12 space-y-4 md:mt-[95px] md:space-y-7",children:[(0,s.jsxs)("div",{className:"group flex w-full flex-col rounded-xl bg-green-600 px-5 py-8 text-gray-1000 md:p-[35px] [&_div]:max-w-full [&_input]:rounded-lg [&_input]:p-4 [&_svg]:h-6 [&_svg]:fill-none [&_svg]:stroke-2",children:[(0,s.jsx)("h2",{className:"t-28 mb-3 text-white",children:"Search the Documentation"}),(0,s.jsx)(i.Suspense,{children:(0,s.jsx)(eP.ol,{})})]}),t?.map(e=>s.jsxs(u(),{href:e?.link||"/#",className:" group flex w-full items-end justify-between rounded-[12px] bg-green-600 px-5 py-8 transition-colors duration-300 hover:bg-white hover:text-heading-black md:p-[35px]","data-track":"Link Clicked","data-track-properties":`{"label": "${e?.heading}"}`,children:[s.jsxs("div",{children:[s.jsx("h2",{className:"t-28",children:e?.heading}),s.jsx("div",{className:"t-16 mt-3 opacity-70",children:e?.content})]}),s.jsx("div",{className:"-mb-3 -mr-3",children:s.jsxs("svg",{width:"36",height:"36",viewBox:"0 0 36 36",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[s.jsx("rect",{className:"transition-colors group-hover:fill-green-600",width:"36",height:"36",rx:"18",fill:"white"}),s.jsx("g",{clipPath:"url(#clip0_272_63509)",children:s.jsx("path",{className:"transition-colors group-hover:fill-white",f
4illRule:"evenodd",clipRule:"evenodd",d:"M22.4297 20.8602V14.0649H15.6344L15.6351 15.3978L20.1535 15.3978L13.2776 22.2737L14.2209 23.2169L21.0968 16.341L21.0968 20.8595L22.4297 20.8602Z",fill:"#050505"})}),s.jsx("defs",{children:s.jsx("clipPath",{id:"clip0_272_63509",children:s.jsx("rect",{width:"16",height:"17",fill:"white",transform:"translate(6.32812 18.1484) rotate(-45)"})})})]})})]},e?._key))]})]})})}),eO=({heading:e,content:t,socialLinks:a})=>(0,s.jsx)("section",{id:"socials",className:"my-16 overflow-hidden md:my-[150px]",children:(0,s.jsxs)("div",{className:"container",children:[(0,s.jsx)("h2",{className:"t-36 font-medium",children:e}),(0,s.jsx)("div",{className:"t-b20 mt-3 text-body-black md:mt-6",children:t}),(0,s.jsx)("div",{className:"mt-6 grid gap-2 xs:grid-cols-2 md:mt-10 md:gap-5 lg:grid-cols-3 xl:gap-10",children:a?.map(e=>s.jsxs(u(),{href:e?.link||"/#",className:"flex gap-5 rounded-xl border border-gray-200 px-5 pb-[26px] pt-[30px] text-subheading-black transition-colors duration-300 hover:bg-gray-0 xs:flex-col xs:justify-between xs:px-5 lg:px-[30px]",children:[s.jsx(eG.Z,{image:e?.icon,className:"flex-none"}),s.jsx("div",{dangerouslySetInnerHTML:{__html:e?.content}})]},e?._key))})]})}),eE=({heading:e,content:t})=>(0,s.jsx)("section",{className:"container",children:(0,s.jsx)("div",{className:"w-full border-t border-stroke-gray pt-16 md:pt-[125px]",children:(0,s.jsxs)("div",{id:"support-form",className:"mx-auto w-full max-w-[520px] scroll-mt-20",children:[(0,s.jsxs)("div",{className:"text-center",children:[(0,s.jsx)("h2",{className:"t-36",children:e}),(0,s.jsx)("div",{className:"t-b20 mt-3 text-body-black",children:t})]}),(0,s.jsx)("div",{className:"mt-6 w-full md:mt-[60px]",children:(0,s.jsx)("div",{className:"aspect-[508/559] w-full",children:(0,s.jsx)(eL,{})})})]})})});var eU=e=>{let{masthead:t,postFlexibleContent:a,FAQs:i,contactSecurity:n}=e;return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(eR,{...t}),(0,s.jsx)(eZ,{content:a}),(0,s.jsx)(l.Z,{title:i?.title||"Security FAQs",content:i?.content}),(0,s.jsx)(eH,{...n})]})};let eR=({textCard:e,logoGrid:t,securityBlocks:a})=>(0,s.jsx)("section",{className:"bg-gray-50 pb-16 pt-24 md:pb-32 md:pt-[184px] ",children:(0,s.jsxs)("div",{className:"container",children:[(0,s.jsx)(g.Z,{...e}),(0,s.jsx)("div",{className:"mx-auto mt-8 max-w-[1100px] md:mt-[53px]",children:(0,s.jsx)(ek.Z,{...t})}),(0,s.jsx)("div",{className:"mt-12 grid gap-5 sm:grid-cols-2 md:mt-20 md:grid-cols-3 lg:gap-[30px]",children:a?.map(e=>s.jsxs("div",{className:"rounded-xl bg-white px-6 py-[35px] lg:p-[35px]",children:[s.jsx(eG.Z,{image:e?.icon,className:" h-14 w-14"}),s.jsxs("div",{className:"mt-8 sm:mt-12 sm:max-w-[290px]",children:[s.jsx("div",{className:"t-24 font-medium text-heading-black",children:e?.heading}),s.jsx("div",{className:"t-16 mt-[10px] text-heading-black/80",dangerouslySetInnerHTML:{__html:e?.content}})]})]},e?._key))})]})}),eZ=({content:e})=>(0,s.jsx)("div",{className:"container",children:(0,s.jsx)("div",{className:"mx-auto max-w-[730px] py-16 md:py-32",children:(0,s.jsx)(ex.Z,{className:"blog prism underline-link black-bold prose",content:e})})}),eH=({textCard:e,bullets:t,note:a})=>(0,s.jsx)("section",{className:"bg-gray-900 pt-16 md:pt-[175px]",children:(0,s.jsx)("div",{className:"container",children:(0,s.jsxs)("div",{className:"mx-auto w-full max-w-[840px]",children:[(0,s.jsx)(g.Z,{...e,options:{...e?.options,contentClasses:"prose is-light"}}),(0,s.jsx)("ul",{className:"t-18 mt-8 space-y-3 md:mt-[55px]",children:t?.map(e=>s.jsx("li",{className:"w-full rounded-[6px] bg-gray-500 px-5 py-3 text-center text-white",children:e?.content},e?._key))}),(0,s.jsx)("div",{className:"t-b20 mt-[55px] text-center text-body-white",children:a})]})})});var eB=a(16893),ez=a(25134),eq=({heading:e,content:t,slider:a,contact:i})=>(0,s.jsx)("section",{className:"overflow-hidden pb-16 pt-24 text-heading-black md:pb-[100px] md:pt-[207px]",children:(0,s.jsxs)("div",{className:"container",children:[(0,s.jsxs)("div",{className:"flex w-full flex-col items-center gap-6 gap-y-4 md:flex-row md:items-start md:justify-between",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("h1",{className:"t-72",children:e}),(0,s.jsxs)(u(),{href:`mailto:${i?.email}`,className:"group mt-6 flex max-w-max items-center gap-[14px] rounded-lg bg-blue-700 px-3 py-2 text-white transition-colors duration-300 hover:bg-blue-900","data-track":"Link Clicked","data-track-properties":`{"label": "${i?.email}"}`,children:[(0,s.jsx)("div",{children:(0,s.jsx)(eG.Z,{image:i?.icon,className:"h-6 w-6"})}),(0,s.jsx)("div",{className:"t-16 font-medium",children:i?.email})]})]}),(0,s.jsx)("div",{className:"t-24 mt-6 max-w-[630px] flex-1 text-center !font-normal md:mt-0 md:text-left",dangerouslySetInnerHTML:{__html:t}})]}),(0,s.jsx)(eW,{slider:a})]})});let eW=({slider:e})=>
4{let[t,a]=(0,i.useState)(0),l=(0,i.useRef)(null),n=(0,i.useRef)(null),r=(0,i.useRef)(null),o=(0,eB.Y)(n,{once:!1,amount:.4}),d=(0,eB.Y)(r,{once:!0,amount:.4}),c=(0,i.useCallback)(()=>{a(t=>(t+1)%e.length)},[e.length]);(0,i.useEffect)(()=>(o?l.current=setTimeout(c,8e3):clearTimeout(l.current),()=>clearTimeout(l.current)),[t,o,c]);let p=e=>{a(e),clearTimeout(l.current),l.current=setTimeout(c,8e3)};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(u(),{ref:n,href:`${e[t]?.link}`,target:"_blank",className:"relative mt-10 flex min-h-[340px] w-full overflow-hidden rounded-[15px] bg-blue-900 px-5 py-7 text-white sm:min-h-[400px] sm:px-6 sm:py-12 md:mt-[86px] lg:min-h-[584px] lg:p-[50px]",children:[(0,s.jsx)("div",{ref:r,className:"relative z-[10] flex w-full max-w-[575px] flex-1 flex-col justify-between",children:e?.map((e,a)=>s.jsx(ez.E.div,{initial:{opacity:0},animate:{opacity:t===a?1:0,transition:{duration:.3}},className:"absolute inset-0 flex w-full max-w-[575px] flex-col justify-center gap-y-5 md:items-end md:justify-end",children:s.jsxs("div",{className:"flex flex-col gap-6",children:[e?.logo&&s.jsx(eG.Z,{image:e?.logo,className:"max-h-7 max-w-[200px] object-contain object-left md:max-h-10"}),s.jsx("div",{className:"t-48 font-medium ",children:e?.heading}),s.jsx("div",{className:"t-b18 mt-4 text-white/70 md:mt-[67px]",children:"News"})]})},`slide${a}`))}),(0,s.jsx)("div",{className:"absolute bottom-0 right-0 hidden w-full max-w-[40.5%] lg:block",children:(0,s.jsxs)("svg",{width:"100%",height:"100%",preserveAspectRatio:"none",viewBox:"0 0 518 584",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,s.jsxs)("g",{clipPath:"url(#clip0_812_87814)",children:[(0,s.jsx)("path",{d:"M2.41357e-05 438.395C2.06111e-05 519.028 66.4857 584.395 148.5 584.395C230.514 584.395 297 519.028 297 438.395C297 357.761 230.514 292.395 148.5 292.395C66.4857 292.395 2.76603e-05 357.761 2.41357e-05 438.395Z",fill:"#324994"}),(0,s.jsx)("path",{d:"M297 292.395C214.998 292.395 148.5 227.016 148.5 146.395C148.5 65.7733 214.998 0.394528 297 0.394531L297 292.395Z",fill:"#CEDEFD"}),(0,s.jsx)("path",{d:"M148.5 292.395C66.4983 292.395 5.35286e-06 227.016 8.87693e-06 146.395C1.2401e-05 65.7733 66.4983 0.394528 148.5 0.394531L148.5 292.395Z",fill:"#CEDEFD"})]}),(0,s.jsx)("rect",{x:"297",width:"221",height:"441",fill:"#5A82DE"}),(0,s.jsx)("rect",{x:"297",y:"451",width:"221",height:"36",fill:"#5A82DE"}),(0,s.jsx)("rect",{x:"297",y:"497",width:"221",height:"24",fill:"#5A82DE"}),(0,s.jsx)("rect",{x:"297",y:"531",width:"221",height:"14",fill:"#5A82DE"}),(0,s.jsx)("rect",{x:"297",y:"555",width:"221",height:"14",fill:"#5A82DE"}),(0,s.jsx)("rect",{x:"297",y:"579",width:"221",height:"5",fill:"#5A82DE"}),(0,s.jsx)("defs",{children:(0,s.jsx)("clipPath",{id:"clip0_812_87814",children:(0,s.jsx)("rect",{width:"584",height:"297",fill:"white",transform:"translate(297) rotate(90)"})})})]})})]}),(0,s.jsx)("div",{className:"mt-7 flex md:mt-[45px]",children:(0,s.jsx)(ez.E.div,{layout:!0,className:"flex gap-2",children:e.length>0&&e?.map((a,i)=>s.jsx(ez.E.button,{type:"button","aria-label":`slide ${i} of ${e.length}`,onClick:()=>p(i),layout:!0,className:`relative block h-[5px] overflow-hidden rounded-[15px] bg-gray-200 will-change-transform 5 ${t===i?"flex-[1_0_67px]":"flex-[1_0_26px] "}`,children:t===i&&d&&s.jsx(ez.E.div,{initial:{x:"-100%"},animate:{x:"0%"},transition:{duration:8},className:"absolute inset-0 h-full w-full rounded-[15px] bg-gray-400"})},`dot${i}`))})})]})};var eF=({brand:e,contact:t})=>(0,s.jsx)("section",{className:"bg-gray-900 py-16 md:py-[100px]",children:(0,s.jsx)("div",{className:"container",children:(0,s.jsxs)("div",{className:"flex w-full flex-col justify-between gap-5 md:flex-row",children:[(0,s.jsx)("div",{className:"max-w-[843px] flex-1",children:(0,s.jsxs)(u(),{href:`${e?.file?.asset?.url}?dl=`,className:"group relative block w-full overflow-hidden rounded-xl !bg-gray-700 text-white will-change-transform","data-track":"Link Clicked","data-track-properties":`{"label": "${e?.heading}"}`,children:[(0,s.jsx)("div",{className:"p-[35px]",children:(0,s.jsxs)("div",{className:"max-w-[335px] md:pb-[143px]",children:[(0,s.jsx)("div",{className:"tb-18 text-white/90",children:e?.
5subheading}),(0,s.jsx)("h3",{className:"t-36 mt-3",children:e?.heading})]})}),(0,s.jsx)("div",{className:"bottom-0 right-0 md:absolute xl:h-full xl:w-full ",children:(0,s.jsx)(ef.Z,{...e?.asset,className:"xl:h-full xl:w-full xl:object-cover"})}),(0,s.jsx)("div",{className:"absolute bottom-[35px] right-[35px] rotate-90 transition-transform duration-300 group-hover:translate-y-1",children:(0,s.jsx)(e$,{})})]})}),(0,s.jsx)("div",{className:"flex-1 md:max-w-[407px]",children:(0,s.jsxs)(u(),{href:t?.link||"/#",className:"group relative block w-full rounded-xl bg-green-900 px-[35px] pt-[35px] text-white","data-track":"Link Clicked","data-track-properties":`{"label": "${t?.heading}"}`,children:[(0,s.jsx)("div",{className:"absolute bottom-[35px] right-[35px] transition-transform duration-300 group-hover:translate-x-1",children:(0,s.jsx)(e$,{})}),(0,s.jsxs)("div",{className:"max-w-[295px]",children:[(0,s.jsx)("div",{className:"tb-18 text-white/90",children:t?.subheading}),(0,s.jsx)("h3",{className:"t-36 mt-3",children:t?.heading})]}),(0,s.jsx)("div",{className:"mt-[34px]",children:(0,s.jsx)(ef.Z,{...t?.asset})})]})})]})})});let e$=()=>(0,s.jsxs)("svg",{width:"36",height:"36",viewBox:"0 0 36 36",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,s.jsx)("rect",{width:"36",height:"36",rx:"18",fill:"white"}),(0,s.jsx)("g",{clipPath:"url(#clip0_272_64537)",children:(0,s.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M19.5202 22.9791L25 17.4993L19.5202 12.0195L18.4459 13.095L22.0896 16.7387H11V18.26H22.0896L18.4459 21.9037L19.5202 22.9791Z",fill:"#212121"})}),(0,s.jsx)("rect",{x:"0.5",y:"0.5",width:"35",height:"35",rx:"17.5",stroke:"black",strokeOpacity:"0.08"}),(0,s.jsx)("defs",{children:(0,s.jsx)("clipPath",{id:"clip0_272_64537",children:(0,s.jsx)("rect",{width:"30",height:"29",fill:"white",transform:"translate(3 3)"})})})]});var eK=a(51394),eJ=({featuredPressItem:e,allPressItems:t})=>{let[a,l]=(0,i.useState)(7),n=a<t.length+1,r=t[0],o=t.slice(1,3),d=t.slice(3,a);return(0,s.jsx)("section",{className:"py-16 md:mt-[120px] md:py-0",children:(0,s.jsxs)("div",{className:"container",children:[(0,s.jsx)("h2",{className:"t-48",children:"All Press"}),r&&(0,s.jsx)("div",{className:"mt-10",children:(0,s.jsx)(eQ,{...r,fullWidth:!0})}),(0,s.jsx)("div",{className:"mt-12 grid gap-6 gap-y-12 sm:grid-cols-2 md:mt-[70px] lg:gap-x-10 lg:gap-y-[85px]",children:o.map((e,t)=>(0,s.jsx)(eQ,{...e},t))}),(0,s.jsx)("div",{className:"my-[85px]",children:(0,s.jsx)(eY,{featuredPressItem:e})}),(0,s.jsx)("div",{className:"grid gap-6 gap-y-12 sm:grid-cols-2 lg:gap-x-10 lg:gap-y-[85px]",children:d?.map((e,t)=>s.jsx(eQ,{...e},t))}),(0,s.jsx)("div",{className:"mt-12 flex justify-center md:mt-[125px]",children:n&&(0,s.jsx)(eK.Z,{onClick:()=>{l(e=>e+4)}})})]})})};let eQ=({heading:e,link:t,logo:a})=>(0,s.jsxs)(u(),{target:"_blank",href:`${t}`,className:"group block","data-track":"Link Clicked","data-track-properties":`{"label": "${e}"}`,children:[(0,s.jsx)("div",{className:" w-full transform-gpu overflow-hidden rounded-[10px] bg-blue-50",children:(0,s.jsx)(eG.Z,{image:a,className:"mx-auto transition-transform duration-300 group-hover:scale-[1.05]"})}),(0,s.jsxs)("div",{className:"mt-5 flex flex-col justify-between gap-3 md:mt-[50px] md:gap-5",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"t-16 font-medium",children:"News"}),(0,s.jsx)("h3",{className:"t-22 mt-2 md:mt-4",children:e})]}),(0,s.jsx)(m.IS,{className:"max-w-max",textLink:{link:{title:"Read article"},textLinkOptions:{arrowColor:"black",externalArrow:!0}}})]})]}),eY=({featuredPressItem:e})=>(0,s.jsxs)(u(),{href:`${e?.link||"/#"}`,target:"_blank",className:"relative block w-full overflow-hidden rounded-[15px] bg-blue-900 pb-[38px] pl-6 pr-[25px] pt-10 text-white will-change-transform md:pl-[45px] md:pt-[56px]","data-track":"Link Clicked","data-track-properties":`{"label": "${e?.heading}"}`,children:[(0,s.jsx)("div",{className:"absolute bottom-0 right-0 max-w-[50%]",children:(0,s.jsx)(ef.Z,{...e?.asset})}),(0,s.jsx)("div",{className:"absolute bottom-[25px] right-[25px]",children:(0,s.jsxs)("svg",{width:"36",height:"36",viewBox:"0 0 36 36",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,s.jsx)("rect",{width:"36",height:"36",rx:"18",fill:"#CEDEFD"}),(0,s.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M22.9058 20.6609V12.567H14.8119L14.8127 14.1546L20.1947 14.1546L12.0047 22.3446L13.1283 23.4681L21.3182 15.2782L21.3182 20.6601L22.9058 20.6609Z",fill:"#2E2D2D"})]})}),(0,s.jsxs)("div",{className:"md:max-w-[70%] xl:max-w-[840px]",children:[(0,s.jsx)(eG.Z,{image:e?.logo}),(0,s.jsx)("h3",{className:"t-48 relative mt-4 md:mt-[37px]",children:e?.heading}),(0,s.jsx)("div",{className:"t-b18 relative mt-24 text-white/70 md:mt-[132px]",children:"News"})]})]});var eX=e=>{let{masthead:t,brandContact:a,featuredPressItem:i,allPressItems:l}=e;return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(eq,{...t}),(0,s.jsx)(eF,{...a}),(0,s.jsx)(eJ,{featuredPressItem:i,allPressItems:l})]})},e0=a(21974),e1=a(20098),e2=a(97005),e3=a(55529),e4=e=>{let{masthead:t,intro:a,perks:i,global:l,interviewProcess:n}=e;return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(e6,{...t}),(0,s.jsx)(e5,{...a}),(0,s.jsx)(e7,{...i}),(0,s.jsx)(e8,{...l}),(0,s.jsx)(e9,{...n}),(0,s.jsx)(te,{})]})};let e6=({textCard:e,images:t})=>{let[a,l]=(0,e0.H)();(0,i.useEffect)(()=>
5{l("circle",{opacity:[0,1]},{duration:1,delay:(0,e1.E)(.05,{from:"center"})})},[l]);let n=(0,eB.Y)(a);return(0,s.jsxs)("section",{className:"bg-white pb-16 pt-24 text-heading-black md:py-44 ",children:[(0,s.jsx)("div",{className:"container",children:(0,s.jsx)("div",{className:"mx-auto w-full max-w-[730px] text-center",children:(0,s.jsx)(g.W,{...e})})}),(0,s.jsx)("div",{ref:a,className:"",children:(0,s.jsxs)("div",{className:"relative mx-auto mt-12 flex w-full items-center md:mt-[133px] xl:min-h-[680px]",children:[(0,s.jsxs)("svg",{className:"absolute inset-0 mx-auto w-full max-w-[1360px]",width:"100%",height:"100%",viewBox:"0 0 1360 680",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,s.jsx)("circle",{cx:"113.333",cy:"113.333",r:"113.333",fill:"#EEEBEA"}),(0,s.jsx)("circle",{cx:"566.667",cy:"113.333",r:"113.333",fill:"#EEEBEA"}),(0,s.jsx)("circle",{cx:"1020",cy:"113.333",r:"113.333",fill:"#EEEBEA"}),(0,s.jsx)("circle",{cx:"339.999",cy:"113.333",r:"113.333",fill:"#EEEBEA"}),(0,s.jsx)("circle",{cx:"793.333",cy:"113.333",r:"113.333",fill:"#EEEBEA"}),(0,s.jsx)("circle",{cx:"1246.67",cy:"113.333",r:"113.333",fill:"#EEEBEA"}),(0,s.jsx)("circle",{cx:"113.333",cy:"339.997",r:"113.333",fill:"#EEEBEA"}),(0,s.jsx)("circle",{cx:"566.667",cy:"339.997",r:"113.333",fill:"#EEEBEA"}),(0,s.jsx)("circle",{cx:"1020",cy:"339.997",r:"113.333",fill:"#EEEBEA"}),(0,s.jsx)("circle",{cx:"339.999",cy:"339.997",r:"113.333",fill:"#EEEBEA"}),(0,s.jsx)("circle",{cx:"793.333",cy:"339.997",r:"113.333",fill:"#EEEBEA"}),(0,s.jsx)("circle",{cx:"1246.67",cy:"339.997",r:"113.333",fill:"#EEEBEA"}),(0,s.jsx)("circle",{cx:"113.333",cy:"566.669",r:"113.333",fill:"#EEEBEA"}),(0,s.jsx)("circle",{cx:"566.667",cy:"566.669",r:"113.333",fill:"#EEEBEA"}),(0,s.jsx)("circle",{cx:"1020",cy:"566.669",r:"113.333",fill:"#EEEBEA"}),(0,s.jsx)("circle",{cx:"339.999",cy:"566.669",r:"113.333",fill:"#EEEBEA"}),(0,s.jsx)("circle",{cx:"793.333",cy:"566.669",r:"113.333",fill:"#EEEBEA"}),(0,s.jsx)("circle",{cx:"1246.67",cy:"566.669",r:"113.333",fill:"#EEEBEA"})]}),(0,s.jsxs)(e2.Z,{play:n,speed:40,className:"careers-marquee w-full",children:[t.map((e,t)=>(0,s.jsx)(eG.Z,{className:"flex max-h-[150px] w-full items-end rounded object-contain md:max-h-[485px] md:rounded-lg",image:e?.image},`image${t}`)),t.map((e,t)=>(0,s.jsx)(eG.Z,{className:"flex max-h-[150px] w-full items-end rounded object-contain md:max-h-[485px] md:rounded-lg",image:e?.image},`image2${t}`))]})]})})]})},e5=({heading:e,content:t})=>{let[a,l]=(0,i.useState)(!1),n=a?t:t.slice(0,2);return(0,s.jsx)("section",{className:"mb-16 text-heading-black md:mb-[143px] ",children:(0,s.jsx)("div",{className:"container",children:(0,s.jsxs)("div",{className:"flex w-full flex-col justify-between gap-6 gap-y-5 md:flex-row",children:[(0,s.jsx)("h2",{className:"t-48 w-full max-w-[418px]",children:e}),(0,s.jsxs)("div",{className:"w-full max-w-[624px]",children:[(0,s.jsx)(e3.Z,{richContent:n}),(0,s.jsx)("button",{onClick:()=>l(!a),type:"button","aria-label":"Show More",children:(0,s.jsx)(m.ZP,{className:"mt-4 md:mt-[33px]",button:{link:{title:a?"Show Less":"Show More"},buttonOptions:{color:"black",addArrow:!1}}})})]})]})})})},e7=({heading:e,perks:t})=>(0,s.jsx)("section",{className:"mb-8 mt-16 text-heading-black md:my-[179px] ",children:(0,s.jsxs)("div",{className:"container",children:[(0,s.jsx)("h2",{className:"t-48 max-w-[625px]",children:e}),(0,s.jsx)("div",{className:"mt-8 grid gap-5 sm:grid-cols-2 md:mt-16 md:grid-cols-3 lg:gap-[30px]",children:t?.map(e=>s.jsxs("div",{className:"rounded-xl bg-gray-50 px-5 pb-[35px] pt-[35px] text-heading-black lg:pl-[35px] lg:pr-[32px]",children:[s.jsx("h3",{className:"t-20",children:e?.heading}),s.jsx("div",{className:"t-16 mt-3 opacity-80",dangerouslySetInnerHTML:{__html:e?.content}})]},e?._key))})]})}),e8=({heading:e,content:t,asset:a})=>(0,s.jsx)("section",{children:(0,s.jsx)("div",{className:"container",children:(0,s.jsxs)("div",{className:"flex w-full flex-col gap-y-5 overflow-hidden rounded-xl bg-blue-900 pl-5 pt-10 md:aspect-[1280/610] md:flex-row md:pl-0 md:pt-0",children:[(0,s.jsxs)("div",{className:" w-full pr-5 md:mb-12 md:ml-[38px] md:max-w-[30%] md:self-end md:pr-0 lg:mb-[130px]",children:[(0,s.jsx)("h2",{className:"t-48 max-w-[400px] font-medium text-white",children:e}),(0,s.jsx)("div",{className:"t-16 mt-[10px] max-w-[340px] text-white",children:t})]}),(0,s.jsx)("div",{className:" overflow-visible pl-5 md:pl-0",children:(0,s.jsx)(ef.Z,{...a,className:"h-full w-full overflow-visible object-cover"})})]})})}),e9=({heading:e,interviewProcesses:t})=>(0,s.jsx)("section",{className:"my-16 overflow-hidden bg-red-900 pb-[115px] pt-[90px] text-white md:my-[102px]",children:(0,s.jsxs)("div",{className:"container",children:[(0,s.jsx)("h2",{className:"t-48 max-w-[338px]",children:e}),(0,s.jsx)("div",{className:"mt-10 grid gap-5 md-large:grid-cols-2 lg:gap-6",children:t?.map(e=>s.jsxs("div",{className:"rounded-[14px] bg-red-600 px-6 pb-8 pt-9 lg:px-[50px] lg:pb-[65px] lg:pt-[50px]",children:[s.jsx("div",{className:"t-24 font-medium",children:e?.heading}),s.jsx("div",{className:"t-16 mt-3",children:e?.content}),s.jsx("div",{className:"mt-10 flex flex-col gap-y-2 md:flex-row md:gap-y-0",children:e?.processSteps?.map((t,a)=>s.jsxs("div",{className:"md:w-[100px]",children:[s.jsxs("div",{className:"flex w-auto flex-col items-center md:w-full md:max-w-none md:flex-row md:items-center",children:[s.jsx("div",{className:"flex h-[22px] w-[22px] items-center justify-center rounded-full bg-white text-center text-[12px] font-semibold text-red-900",children:a+1}),s.jsx("div",{className:`h-[60px] w-[2px] bg-red-900 md:h-[2px] md:w-[unset] md:flex-1 ${a!==e?.processSteps?.length-1?"":"md:hidden"}`})]}),s.jsx("div",{className:"text-md mt-3 text-center md:w-[75px] md:text-start md:text-[12px]",children:t?.heading})]},t?._key))})]},e?._key))})]})}),te=()=>{var e;let[t,a]=(0,i.useState)(""),[l,n]=(0,i.useState)([]),o="string"==typeof(e=(0,r.useRouter)().query.department)?e:Array.isArray(e)&&e[0]||"all",[d,c]=(0,i.useMemo)(()=>{let e=l.find(e=>e.id===o);return e?[e.id,[e]]:["all",l]},[o,l]),m="list-of-positions",g=(0,i.useMemo)(()=>[{id:"all",name:"All Departments",jobs:[]},...l],[l]);return(0,i.useEffect)(()=>{let e=async()=>
5{try{let e=await fetch("https://boards-api.greenhouse.io/v1/boards/tailscale/jobs?content=true"),t=await e.json(),a={},s=[];t.jobs.forEach(e=>{e.departments.forEach(t=>{let s=a[t.name]||[];s.push(e),a[t.name]=s})}),Object.entries(a).forEach(([e,t])=>{s.push({id:v()(e,{lower:!0,trim:!0}),name:e,jobs:t})}),n(s)}catch(e){console.error("Error fetching jobs:",e)}};(async()=>{try{let e=await fetch("https://boards-api.greenhouse.io/v1/boards/tailscale"),t=await e.json();a(t.content)}catch(e){console.error("Error fetching board description:",e)}})(),e()},[]),(0,s.jsx)("section",{id:"open-job-positions",className:"mt-16 scroll-mt-20 overflow-hidden md:mt-[140px]",children:(0,s.jsx)("div",{className:"container",children:(0,s.jsxs)("div",{className:"mx-auto w-full max-w-[1000px]",children:[(0,s.jsxs)("div",{className:"relative md:px-[25px]",children:[(0,s.jsx)("div",{className:"blog prose mb-7",dangerouslySetInnerHTML:{__html:t}}),(0,s.jsx)("div",{className:"mb-12 text-[1.125rem] text-subheading-black",children:(0,s.jsxs)("i",{children:["With the rising number of employment-related scams recently, we encourage you to"," ",(0,s.jsx)(u(),{className:"underline underline-offset-2 transition-colors duration-300",href:"https://tailscale.com/job-scam-awareness",target:"__blank",children:"read this short guide"})," ","on how to spot job posting scams to protect yourself."]})}),(0,s.jsxs)("div",{className:"mb-6 flex items-baseline gap-2 md:gap-4",children:[(0,s.jsx)("h2",{id:m,className:"t-36",children:"Open positions"}),(0,s.jsx)(u(),{className:"meta-new underline underline-offset-2 transition-colors duration-300",href:"https://cdn.sanity.io/files/w77i7m8x/production/61c11ece8b0ed6ecb4f272bead87cc1fc8421df3.pdf",target:"__blank",children:"Privacy Policy"}),(0,s.jsx)(u(),{className:"meta-new underline underline-offset-2 transition-colors duration-300",href:"https://cdn.sanity.io/files/w77i7m8x/production/0de35a24de4d425390546ebd521107d5444985e9.pdf",target:"__blank",children:"AI policy"})]}),(0,s.jsxs)("nav",{className:"relative mb-9",children:[(0,s.jsx)("div",{className:"absolute bottom-0 left-0 top-0 w-[10%] bg-gradient-to-r from-white/100 to-white/0 md:hidden"}),(0,s.jsx)("div",{className:"absolute -right-px bottom-0 top-0 w-[10%] bg-gradient-to-l from-white/100 to-white/0 md:hidden"}),(0,s.jsx)("div",{className:"flex gap-3 overflow-x-scroll px-6",children:g.map(e=>(0,s.jsx)(u(),{href:"all"===e.id?`/careers#${m}`:`/careers?department=${e.id}#${m}`,shallow:!0,className:(0,p.Z)("t-16 whitespace-nowrap rounded-full px-[18px] py-2 font-medium transition-colors duration-300",d===e.id?"bg-gray-500 text-white":"bg-gray-0 text-heading-black hover:bg-gray-400 hover:text-white"),scroll:!1,children:e.name},e.id))})]})]}),(0,s.jsx)("div",{className:"space-y-10",children:c.map(e=>(0,s.jsxs)("div",{children:[(0,s.jsxs)("div",{className:"flex w-full items-center gap-[10px] border-b border-stroke-gray pb-3 md:px-[25px]",children:[(0,s.jsx)("h3",{className:"t-20 font-medium",children:e.name}),e.jobs.length&&(0,s.jsx)("div",{className:"flex h-[28px] w-[27px] items-center justify-center rounded-[10px] bg-blue-50 text-center",children:e.jobs.length})]}),e.jobs.length>0?(0,s.jsx)("ul",{children:e.jobs.map(e=>(0,s.jsx)("li",{className:"border-b border-stroke-gray md:px-[25px]",children:(0,s.jsxs)(u(),{target:"_blank",href:e.absolute_url||"/#",className:"group flex w-full flex-col gap-3 py-[14px] md:flex-row md:justify-between","data-track":"Link Clicked","data-track-properties":`{"label": "${e.title}"}`,children:[(0,s.jsx)("div",{className:"t-16 font-medium underline underline-offset-4 transition-colors duration-300 group-hover:text-blue-400 md:flex-[0_1_300px]",children:e.title}),(0,s.jsxs)("div",{className:"flex flex-1 items-center gap-1",children:[(0,s.jsx)(tt,{}),(0,s.jsx)("div",{className:"whitespace-nowrap font-medium text-gray-500",children:e.location?.name})]}),(0,s.jsx)("div",{className:"flex font-medium text-gray-500 md:justify-end",children:e.metadata?.map(e=>s.jsx("span",{children:e?.value},e?.id))})]})},e.id))}):(0,s.jsx)("div",{className:"t-16 font-medium",children:"No open positions"})]},e.id))}),(0,s.jsx)("p",{className:"mt-8 text-sm text-gray-500 md:ml-[25px] md:mt-12",children:"We recognize and celebrate the diverse interests, experiences and backgrounds of our team. Tailscale welcomes all employees (and candidates) regardless of race, sex, color, religion, age, national origin, marital status, disability, veteran status, genetic information, sexual orientation, gender identity or any other reason prohibited by law as it relates to employment opportunities and benefits."}),(0,s.jsx)("p",{className:"mt-4 text-sm text-gray-500 md:ml-[25px]",children:"Throughout our hiring process, we are committed to providing a comfortable and accessible candidate experience. If there are any accommodations we can provide throughout our interview process (no matter how big or small!), please let us know!"})]})})})},tt=()=>(0,s.jsxs)("svg",{width:"18",height:"19",viewBox:"0 0 18 19",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,s.jsx)("path",{d:"M9 17C13.1421 17 16.5 13.6421 16.5 9.5C16.5 5.35786 13.1421 2 9 2C4.85786 2 1.5 5.35786 1.5 9.5C1.5 13.6421 4.85786 17 9 17Z",stroke:"#AFACAB",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"}),(0,s.jsx)("path",{d:"M1.5 9.5H16.5",stroke:"#AFACAB",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"}),(0,s.jsx)("path",{d:"M9 2C10.876 4.05376 11.9421 6.71903 12 9.5C11.9421 12.281 10.876 14.9462 9 17C
57.12404 14.9462 6.05794 12.281 6 9.5C6.05794 6.71903 7.12404 4.05376 9 2V2Z",stroke:"#AFACAB",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})]});var ta=a(79645),ts=a(79825),ti=a(4002),tl=a(18693),tn=e=>{let{masthead:t,principles:a,commitments:i,team:l,investors:n,board:r,advisors:o,technicalAdvisors:d}=e;return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(tr,{...t}),(0,s.jsx)(to,{...a}),(0,s.jsx)(td,{...i}),(0,s.jsx)(tp,{...l}),(0,s.jsx)(tg,{...n}),(0,s.jsx)(th,{...r,sectionId:r.textCard.heading.toLowerCase().replace(/\s+/g,"-")}),(0,s.jsx)(th,{...o,sectionId:o.textCard.heading.toLowerCase().replace(/\s+/g,"-")}),(0,s.jsx)(th,{...d,sectionId:d.textCard.heading.toLowerCase().replace(/\s+/g,"-")})]})};let tr=({heading:e,subheading:t,content:a})=>(0,s.jsx)("section",{className:"overflow-hidden bg-white pb-16 pt-28 md:py-44",children:(0,s.jsx)("div",{className:"container",children:(0,s.jsxs)("div",{className:"flex w-full flex-col justify-between gap-6 md:flex-row",children:[(0,s.jsxs)("div",{className:"max-w-[647px] flex-1",children:[(0,s.jsx)("h1",{className:"t-72",children:e}),(0,s.jsx)("div",{className:"t-20 mt-[30px] opacity-80",children:t})]}),(0,s.jsx)("div",{className:"t-20 max-w-[584px] flex-1 opacity-80",children:(0,s.jsx)(ex.Z,{content:a})})]})})}),to=({heading:e,principles:t})=>(0,s.jsx)("section",{className:"overflow-hidden bg-blue-900 py-16 text-white md:pb-[128px] md:pt-[93px]",children:(0,s.jsxs)("div",{className:"container",children:[(0,s.jsx)("h2",{className:"t-48",children:e}),(0,s.jsx)("div",{className:"mt-6 flex w-full flex-wrap justify-between gap-6 gap-y-8 rounded-xl bg-blue-700 px-6 py-[50px] md:mt-[38px] lg:p-[50px]",children:t?.map(e=>s.jsxs("div",{className:"flex-auto md:max-w-[326px] md:flex-1",children:[s.jsx("div",{children:s.jsx(ef.Z,{...e?.asset,className:"!ml-0 !mr-auto max-w-[75px] md:max-w-[100px]"})}),s.jsxs("div",{className:"mt-5 md:mt-10",children:[s.jsx("h3",{className:"t-20 font-medium",children:e?.heading}),s.jsx("div",{className:"mt-3 opacity-70",children:s.jsx(ex.Z,{content:e?.content})})]})]},e._key))})]})}),td=({heading:e,commitments:t})=>(0,s.jsx)("section",{className:"bg-white py-16 md:py-[160px]",children:(0,s.jsxs)("div",{className:"container",children:[(0,s.jsxs)("div",{className:"mx-auto w-full max-w-[704px] justify-between gap-6 md:flex",children:[(0,s.jsx)("div",{className:"max-w-[100px] flex-1"}),(0,s.jsx)("div",{className:"max-w-[543px] flex-1",children:(0,s.jsx)("h1",{className:"t-48",children:e})})]}),(0,s.jsx)("div",{className:"mx-auto mt-10 w-full max-w-[704px] space-y-8 md:space-y-6",children:t?.map(e=>s.jsxs("div",{className:"flex w-full flex-col justify-between gap-6 md:flex-row",children:[s.jsx(tc,{className:"max-w-[100px] flex-1",children:s.jsx(ef.Z,{...e?.asset,className:"sticky top-20 !ml-0 !mr-auto mt-1 max-w-[65px] md:max-w-[98px]"})}),s.jsxs("div",{className:"max-w-[534px] flex-1",children:[s.jsx("div",{className:"t-24 mb-3",children:e?.heading}),s.jsx(ex.Z,{content:e?.content})]})]},e?._key))})]})}),tc=({className:e="",children:t})=>{let a=(0,i.useRef)(null),{scrollYProgress:l}=(0,ta.v)({target:a,offset:["start end","end center"]}),n=(0,ts.H)(l,[0,1],[20,0]),r=(0,ti.q)(n,{damping:30,stiffness:150});return(0,s.jsx)(ez.E.div,{ref:a,style:{y:r},className:e,children:t})},tu=[{className:"absolute left-0 top-0 w-full max-w-[22.06%]",startPos:0,endPos:.4},{className:"absolute left-[25%] top-0 w-full max-w-[17%]",startY:-30,endY:0,endPos:.4},{className:"absolute left-[45%] top-0 w-full max-w-[30.3%]",endPos:.4,startY:30},{className:"absolute right-[0%] top-0 w-full max-w-[22.06%]",startY:-30,endPos:.4},{className:"absolute left-[0%] bottom-0 w-full max-w-[17%]",endPos:.6},{className:"absolute left-[25%] top-[40%] w-full max-w-[25.33%]",endPos:.8},{className:"absolute left-[53%] top-[40%] w-full max-w-[22.06%]",startY:-10,startPos:20,endPos:.7},{className:"absolute right-[5%] bottom-0 w-full max-w-[17%]",endPos:.7}],tp=({heading:e,content:t,hiring:a,images:l})=>{let n=(0,i.useRef)(null),{scrollYProgress:r}=(0,ta.v)({target:n,offset:["start end","end start"]}),{width:o}=(0,tl.Z)();return(0,s.jsxs)("section",{ref:n,className:"bg-green-900 py-16 text-white md:pb-[93px] md:pt-[145px]",children:[(0,s.jsx)("div",{className:"container",children:(0,s.jsxs)("div",{className:"flex w-full flex-col justify-between gap-6 gap-y-4 md:flex-row md:items-end",children:[(0,s.jsxs)("div",{className:"flex-1",children:[a&&(0,s.jsx)("div",{className:"t-16 mb-[10px] max-w-max rounded-xl bg-green-100 px-[11px] py-[5px] text-green-600",children:"Weâre hiring"}),(0,s.jsx)("h1",{className:"t-48",children:e})]}),(0,s.jsx)("div",{className:"t-20 max-w-[624px] flex-1",children:(0,s.jsx)(ex.Z,{content:t})})]})}),(0,s.jsxs)("div",{className:"is-wide container",children:[(0,s.jsx)("div",{className:"relative mt-12 aspect-[1360/704] w-full md:mt-20 xl:min-h-[704px]",children:l?.map((e,t)=>s.jsx(tm,{scrollYProgress:r,...tu[t],windowWidth:o,children:s.jsx(eG.Z,{image:e,className:"h-full w-full rounded object-cover md:rounded-xl"})},e?._key))}),(0,s.jsx)("div",{className:"mt-12 flex justify-center md:mt-[94px]",children:(0,s.jsx)(u(),{href:"/careers/#open-job-positions","data-track":"Link Clicked","data-track-properties":'{"label": "View open positions"}',children:(0,s.jsxs)(m.ZP,{button:{buttonOptions:{color:"white"}},children:[(0,s.jsx)("span",{className:"hidden xs:block",children:"Interested in joining our team?"}),(0,s.jsx)("span",{className:"-ml-1 underline underline-offset-4",children:"View open positions"})]})})})]})]})},tm=({className:e="",children:t,windowWidth:a,scrollYProgress:i,startPos:l=0,endPos:n=1,startY:r=50,endY:o=0})=>{let d=(0,ts.H)(i,[a<768?0:l,a<768?0:n],[r,o]),c=(0,ti.q)(d,{damping:100,stiffness:100});return(0,s.jsx)(ez.E.div,{style:{y:c},className:e,children:t})},tg=({textCard:e,images:t})=>(0,s.jsx)("section",{className:"bg-green-600 py-16 md:py-[120px]",children:(0,s.jsxs)("div",{className:"container",children:[(0,s.jsx)("div",{className:"mx-auto w-full max-w-[882px] text-center",children:(0,s.jsx)(g.W,{...e})}),(0,s.jsx)(ez.E.div,{initial:"initial",whileInView:"inView",viewport:{once:!0},className:"mt-10 flex items-center justify-center gap-10 md:mt-[74px] lg:gap-[90px]",children:t?.map((e,t)=>s.jsx(ez.E.div,{variants:{initial:{opacity:0}
5,inView:{opacity:1,transition:{delay:t/15,duration:2}}},children:s.jsx(eG.Z,{image:e})},e?._key))})]})}),th=({textCard:e,images:t,sectionId:a})=>(0,s.jsx)("section",{className:"bg-white pt-20 md:pt-44",id:a,children:(0,s.jsxs)("div",{className:"container",children:[(0,s.jsx)(g.W,{...e}),(0,s.jsx)("div",{className:"mt-12 flex flex-wrap justify-center gap-6 md:mt-20 lg:gap-x-[70px] lg:gap-y-[50px]",children:t?.map(e=>s.jsxs("div",{className:"flex-[0_1_150px] text-center md:flex-[0_1_200px]",children:[s.jsxs("div",{className:"relative mx-auto aspect-1 w-full max-w-[100px] sm:max-w-[150px]",children:[s.jsx("div",{children:s.jsx(eG.Z,{image:e?.image,className:"mx-auto h-full w-full max-w-[150px] rounded-full object-cover"})}),s.jsx("div",{className:"absolute right-[-19%] top-[-2%]",children:s.jsx(eG.Z,{image:e?.icon,className:"h-14 w-14"})})]}),s.jsxs("div",{className:"mt-3",children:[s.jsx("div",{className:"t-18 font-medium",children:e?.name}),s.jsx("div",{className:"t-16 text-subheading-black",children:e?.role})]})]},e?._key))})]})});function tf(e){let{textCard:t,asset:a,label:i}=e;return(0,s.jsx)("div",{className:"p-top-115 bg-red-900",children:(0,s.jsxs)("div",{className:"container flex flex-wrap justify-between",children:[(0,s.jsxs)("div",{className:"flex-1 pt-12 lg:pt-[66px]",children:[(0,s.jsx)("div",{className:"mb-8 flex justify-center md:justify-start lg:mb-[51px]",children:(0,s.jsxs)("div",{className:"md:-y-3 inline-flex items-center justify-center gap-[17px] rounded-[10px] bg-red-600 p-3 md:px-5",children:[(0,s.jsx)(eG.Z,{image:i?.icon}),(0,s.jsx)("div",{className:"t-52 font-medium text-white",children:i?.text})]})}),(0,s.jsx)(g.W,{...t})]}),(0,s.jsx)("div",{className:"mt-6 w-full max-w-[730px] shrink-0 md:mt-0 laptop:w-[593px]",children:(0,s.jsx)(ef.x,{...a})})]})})}var tx=a(22926);function tb(e){let{title:t,description:a,links:l}=e,n=(0,tx.x)(),r=`/soc2-report-download?serverToken=${n?.token}&report=soc2Report`,o=`/soc2-report-download?serverToken=${n?.token}&report=tailscalePamSoc2Report`;return!function(e,t={}){let{eventList:a=["focus","online","offline"],interval:s=0}=t;(0,i.useEffect)(()=>{let t;return e(),a.forEach(t=>{window.addEventListener(t,e)}),s>0&&(t=setInterval(e,s)),()=>{a.forEach(t=>{window.removeEventListener(t,e)}),t&&clearInterval(t)}},[])}(()=>{n.refresh?.()},{interval:24e4}),(0,s.jsx)("div",{className:"bg-gray-100 pb-brand-24 pt-brand-96 md:py-32",children:(0,s.jsxs)("div",{className:"mx-brand-16 max-w-2xl md:mx-auto",children:[(0,s.jsx)("h1",{className:"title-lg mb-brand-12 text-center",children:t}),(0,s.jsx)("p",{className:"title-sm text-center text-subheading-black",children:a}),(0,s.jsxs)("div",{className:"mt-brand-36 flex flex-col items-center gap-4 roun
5ded-brand-lg bg-white p-brand-32 shadow-4",children:[l.map(e=>(0,s.jsx)(ty,{href:e.link,title:e.title,desc:e.description},e.title)),(0,s.jsxs)("div",{className:"mt-brand-48",children:[(0,s.jsx)("h2",{className:"title-md mb-brand-24",children:"SOC 2 Report"}),(0,s.jsxs)("p",{className:"mb-brand-24 text-base text-subheading-black",children:["Our SOC 2 report is considered Confidential Information as laid out in Tailscale's"," ",(0,s.jsx)(u(),{href:"/terms",className:"text-blue-500 hover:underline",children:"Terms of Service"}),"."]}),n.loggedIn?(0,s.jsxs)("div",{className:"flex flex-col gap-y-4",children:[(0,s.jsx)(ty,{href:r,title:"SOC 2 Report",desc:"Tailscale's SOC 2 Type II audit covering AICPA's trust services criteria for security, availability, and confidentiality.",isSoc:!0}),(0,s.jsx)(ty,{href:o,title:"Tailscale PAM SOC 2 Report",desc:"Tailscale's PAM SOC 2 Type II audit covering AICPA's trust services criteria for security, availability, and confidentiality.",isSoc:!0})]}):(0,s.jsxs)("div",{children:[(0,s.jsx)("p",{className:"text-base text-subheading-black",children:"Log in to Tailscale to access our SOC 2 report. If you do not have a Tailscale account, contact support to sign an NDA and obtain a copy of the report."}),(0,s.jsxs)("div",{className:"mt-6 flex items-center gap-5",children:[(0,s.jsx)(u(),{href:"https://login.tailscale.com/login?refresh=true&next_url=/close-window","data-track":"Link Clicked",target:"_blank",rel:"noopener noreferer","data-track-properties":JSON.stringify({label:"Log in to Tailscale"}),children:(0,s.jsx)(m.ZP,{button:{link:{title:"Log in to Tailscale"},buttonOptions:{color:"outline-black"}},addArrow:!1})}),(0,s.jsx)("span",{children:"or"}),(0,s.jsx)(u(),{href:"/contact/support/#support-form","data-track":"Link Clicked","data-track-properties":JSON.stringify({label:"Contact Support"}),children:(0,s.jsx)(m.ZP,{button:{link:{title:"Contact Support"},buttonOptions:{color:"outline-black"}},addArrow:!1})})]})]})]})]})]})})}let ty=({title:e,desc:t,href:a,isSoc:i=!1})=>(0,s.jsxs)(u(),{href:a,target:i?"_self":"_blank",className:"flex w-full items-center rounded-lg border p-4 transition-shadow hover:shadow-4",children:[(0,s.jsxs)("span",{className:"flex-1 text-left",children:[(0,s.jsx)("h3",{className:"title-sm mb-2",children:e}),(0,s.jsx)("p",{className:"text-sm text-subheading-black",children:t})]}),i?(0,s.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"#706E6D","aria-hidden":"true",children:(0,s.jsx)("path",{d:"M21,14a1,1,0,0,0-1,1v4a1,1,0,0,1-1,1H5a1,1,0,0,1-1-1V15a1,1,0,0,0-2,0v4a3,3,0,0,0,3,3H19a3,3,0,0,0,3-3V15A1,1,0,0,0,21,14Zm-9.71,1.71a1,1,0,0,0,.33.21.94.94,0,0,0,.76,0,1,1,0,0,0,.33-.21l4-4a1,1,0,0,0-1.42-1.42L13,12.59V3a1,1,0,0,0-2,0v9.59l-2.29-2.3a1,1,0,1,0-1.42,1.42Z"})}):(0,s.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:"24",height:"24",children:(0,s.jsx)("path",{d:"M7 17L17 7M7 7h10v10",fill:"none",stroke:"#706E6D",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})]});function tv({landingPageLayout:e,error:t,pricing:a,pricingv3:l,pricingv2:n,howItWorks:r,whyTailscale:o,careers:d,about:c,contact:u,support:p,security:m,press:g,compliance:h,legal:f}){return"error"===e?(0,s.jsx)(tf,{...t}):"legal"===e?(0,s.jsx)(tb,{...f}):"pricing"===e?"b"===a.layout?(0,s.jsx)(O,{...a}):(0,s.jsx)(P,{...a}):"pricingv3"===e?(0,s.jsx)(ei,{...l}):"pricingv2"===e?(0,s.jsx)($,{...n}):"howItWorks"===e?(0,s.jsx)(eg,{...r}):"whyTailscale"===e?(0,s.jsx)(eb,{...o}):"careers"===e?(0,s.jsx)(e4,{...d}):"about"===e?(0,s.jsx)(tn,{...c}):"contact"===e?(0,s.jsx)(eD,{...u}):"support"===e?(0,s.jsx)(eI,{...p}):"security"===e?(0,s.jsx)(eU,{...m}):"press"===e?(0,i.createElement)(eX,{...g,key:"press"}):"compliance"===e?(0,i.createElement)(ev,{...h,key:"compliance"}):null}var tw=a(18273),tT=a(39846);function tk(e=""){switch(e){case"none":default:return"";case"12":return"space-y-3";case"24":return"space-y-6";case"32":return"space-y-8";case"40":return"space-y-8 md:!space-y-10";case"48":return"space-y-10 md:!space-y-12";case"65":return"space-y-8 md:!space-y-[65px]";case"75":return"space-y-8 md:!space-y-[75px]";case"80":return"space-y-8 md:!space-y-20";case"96":return"space-y-12 md:!space-y-20 lg:!space-y-[90px]";case"100":return"space-y-14 md:!space-y-20 lg:!space-y-[100px]";case"120":return"space-y-14 md:!space-y-20 lg!space-y-[120px]";case"160":return"space-y-14 md:!space-y-20 lg:!space-y-40"}}
5var tC=function(e){let{components:t=[],id:a="",sectionKey:i="",classnames:l="",options:{background:n,hasContainer:r=!0,innerSpacing:o="",widerContainer:d=!1,paddingTop:c="medium",paddingBottom:u="medium",overflow:m=!1,addScrollSectionTop:g=!1,fadeSectionBottom:h=!1,reverseMobile:f=!1,sectionId:x=""}={},bgColor:b=""}=e,y={background:n?.color==="custom"&&h?`${n?.customColor?.value} linear-gradient(180deg, ${n?.customColor?.value} 53.39%, rgba(255, 255, 255, 1) 100%)`:n?.color==="custom"?n?.customColor?.value:void 0},v=(0,p.Z)(l,[m?"overflow-visible":"overflow-hidden",(0,tT.Z)(n?.color),`p-top-${c} p-bottom-${u}`,d?"is-wide":""]),w=(0,p.Z)([tk(o),r?"container":"",d?"is-wide":""]),T=(0,p.Z)([f?"flex flex-col-reverse gap-12 md:block md:gap-0 space-y-0 ":""]);return g?(0,s.jsx)("section",{id:a||x,className:`${v} bg-gradient-to-b from-gray-50 via-white to-white `,children:(0,s.jsx)(ez.E.div,{className:`mx-5 !rounded-t-xl pt-20 md:mx-10 md:pt-[120px] ${(0,tT.Z)(n?.background_color)} `,children:(0,s.jsx)("div",{className:`container ${tk(o)} ${T}`,children:(0,s.jsx)(tw.O,{components:t,bgColor:b,sectionKey:i})})})}):(0,s.jsxs)("section",{id:a||x,className:`${v} ${h?"relative":""}`,style:y,children:[h&&n?.color!=="custom"&&(0,s.jsx)("div",{className:"absolute bottom-0 left-0 right-0 h-[200px] w-full bg-gradient-to-b from-white to-gray-0"}),(0,s.jsx)("div",{className:`${w} ${T} ${h?"relative":""}`,children:(0,s.jsx)(tw.O,{components:t,bgColor:b,sectionKey:i})})]})},t_=a(560),tj=function({page:e,ID:t}){if(!e?.sections)return null;let a=(a,i)=>{switch(a._type){case"landingPage":return(0,s.jsx)(tv,{...a},`${a?._type}-${a?._key}-${i}`);case"tsSection":return(0,s.jsx)(t_.Z,{...a,pageTheme:e.themeColor});default:return(0,s.jsx)(tC,{sectionKey:a?._key,...a,firstSection:0===i,pageId:t})}};return e.sections.map((e,t)=>(0,s.jsx)(i.Fragment,{children:a(e,t)},`${e?._type}-${e?._key}-${t}`))},tS=a(5769);function tA(e){return(0,s.jsxs)(tS.Z,{data:e,children:[(0,s.jsx)(tj,{...e,ID:e?.page?.slug}),e.children]})}},12267:function(e,t,a){"use strict";a.d(t,{CF:function(){return s},c:function(){return i}});let s=[{id:"AdminConsole",category:"UI visibility",href:"#hide-the-admin-console-menu-item",possibleValues:"show, hide",os:["Windows"],minClient:"1.50"},{id:"CLIIntegration",category:"UI visibility",href:"#hide-the-cli-integration-installer",possibleValues:"show, hide",os:["macOS"],minClient:"1.68"},{id:"ExitNodesPicker",category:"UI visibility",href:"#hide-the-exit-node-picker",possibleValues:"show, hide",os:["Android","iOS","macOS","Windows"],minClient:"1.50, 1.66 (Android)"},{id:"HiddenNetworkDevices",category:"UI visibility",href:"#hide-network-devices",possibleValues:"String Array. Use one or more of: current-user, other-users, tagged-devices.",os:["Android","iOS","macOS"],minClient:"1.52, 1.66 (Android)"},{id:"ManageTailnetLock",category:"UI visibility",href:"#hide-the-tailnet-lock-settings",possibleValues:"show, hide",os:["Android","iOS","macOS"],minClient:"1.50, 1.66 (Android)"},{id:"NetworkDevices",category:"UI visibility",href:"#hide-the-network-devices-menu",possibleValues:"show, hide",os:["Windows"],minClient:"1.50"},{id:"PreferencesMenu",category:"UI visibility",href:"#hide-the-preferences-menu",possibleValues:"show, hide",os:["Windows"],minClient:"1.50"},{id:"ResetToDefaults",category:"UI visibility",href:"#hide-the-reset-to-defaults-menu-item",possibleValues:"show, hide",os:["macOS"],minClient:"1.50"},{id:"AppIntroShown",category:"UI visibility",href:"#suppress-the-app-window-intro-flow",possibleValues:"Boolean",os:["macOS"],minClient:"1.96"},{id:"RunExitNode",category:"UI visibility",href:"#hide-the-run-as-exit-node-menu-item",possibleValues:"show, hide",os:["Android","macOS","tvOS","Windows"],minClient:"1.50, 1.66 (Android)"},{id:"StartOnLoginMenuItem",category:"UI visibility",href:"#hide-the-start-on-login-menu-item",possibleValues:"show, hide",os:["macOS"],minClient:"1.50"},{id:"TestMenu",category:"UI visibility",href:"#hide-the-debug-menu",possibleValues:"show, hide",os:["macOS","Windows"],minClient:"1.50"},{id:"UpdateMenu",category:"UI visibility",href:"#hide-the-update-menu",possibleValues:"show, hide",os:["iOS","macOS (standalone variant only)","Windows"],minClient:"1.50 (Windows), 1.56 (macOS [Standalone variant only], iOS)"},{id:"VPNOnDemandSettings",category:"UI visibility",href:"#hide-the-vpn-on-demand-menu-item",possibleValues:"show, hide",os:["iOS","macOS"],minClient:"1.52"},{id:"HideDockIcon",category:"UI visibility",href:"#hide-the-macos-dock-icon-after-all-windows-close",possibleValues:"Boolean",os:["macOS"],minClient:"1.94"},{id:"ManagedByOrganizationName",category:"Organization",href:"#set-your-organization-name",possibleValues:"any String",os:["Android","iOS","macOS","Windows"],minClient:"1.52, 1.62 (Windows), 1.66 (Android)"},{id:"ManagedByCaption",category:"Organization",href:"#set-an-info-message",possibleValues:"any String",os:["Android","iOS","macOS","Windows"],minClient:"1.52, 1.62 (Windows), 1.66 (Android)"},{id:"ManagedByURL",category:"Organization",href:"#set-a-support-url",possibleValues:"a valid URL",os:["Android","iOS","macOS","Windows"],minClient:"1.52, 1.62 (Windows), 1.66 (Android)"},{id:"SUEnableAutomaticChecks",category:"Auto update",href:"#check-for-updates-automatically-macos",possibleValues:"Boolean",os:["macOS (standalone variant only)"],minClient:"1.46"},{id:"SUAutomaticallyUpdate",category:"Auto update",href:"#install-updates-automatically-macos",possibleValues:"Boolean",os:["macOS (standalone variant only)"],minClient:"1.52"},{id:"ApplyUpdates",category:"Auto update",href:"#hide-the-auto-update-settings-macos",possibleValues:"show, hide",os:["macOS (standalone variant only)"],minClient:"1.52"},{id:"CheckUpdates",category:"Auto update",href:"#check-for-updates-automatically-windows",possibleValues:"always, never, user-decides",os:["Windows"],minClient:"1.56"},{id:"InstallUpdates",category:"Auto update",href:"#install-updates-automatically-windows",possibleValues:"always, never, user-decides",os:["Windows"],minClient:"1.56"},{id:"UnstableUpdates",category:"Auto update",href:"#manage-unstable-versions-availability",possibleValues:"always, never, user-decides",os:["macOS (standalone variant only)"],minClient:"1.60"},{id:"ExitNodeID",category:"Exit nodes",href:"#force-an-exit-node-to-always-be-used",possibleValues:"String, either an exit node ID or auto:any",os:["Android","iOS","Linux","macOS","Windows"],minClient:"1.56, 1.66 (Android), 1.70.0 for auto:any, 1.102 (Linux)"}
5,{id:"AdvertiseExitNode",category:"Exit nodes",href:"#advertise-exit-node",possibleValues:"always, never, user-decides",os:["Android","Linux","macOS","tvOS","Windows"],minClient:"1.56, 1.102 (Linux)"},{id:"AllowedSuggestedExitNodes",category:"Exit nodes",href:"#suggest-allowed-forced-exit-nodes",possibleValues:"Not set, an empty set, or a list of strings of exit node device IDs",os:["iOS","Linux","macOS","Windows"],minClient:"1.70, 1.102 (Linux)"},{id:"ExitNodeAllowLANAccess",category:"Exit nodes",href:"#toggle-local-network-access-when-an-exit-node-is-in-use",possibleValues:"always, never, user-decides",os:["Android","iOS","Linux","macOS","Windows"],minClient:"1.56, 1.66 (Android), 1.102 (Linux)"},{id:"ExitNode.AllowOverride",category:"Exit nodes",href:"#set-a-different-exit-node-when-forced",possibleValues:"Boolean",os:["Linux","macOS","Windows"],minClient:"1.88, 1.102 (Linux)"},{id:"TailscaleStartOnLogin",category:"Runtime configuration",href:"#automatically-start-tailscale-when-the-user-logs-in",possibleValues:"Boolean",os:["macOS"],minClient:"1.46"},{id:"PostureChecking",category:"Runtime configuration",href:"#enable-gathering-device-posture-data",possibleValues:"always, never, user-decides",os:["iOS","Linux","macOS","tvOS","Windows"],minClient:"1.52, 1.102 (Linux)"},{id:"ForceEnabled",category:"Runtime configuration",href:"#force-tailscale-to-always-be-running",possibleValues:"Boolean",os:["Android","iOS","macOS"],minClient:"1.52"},{id:"LoginURL",category:"Runtime configuration",href:"#set-a-custom-control-server-url",possibleValues:"https://controlplane.tailscale.com or another Tailscale server instance",os:["Android","iOS","Linux","macOS","tvOS","Windows"],minClient:"1.4 (Windows), 1.38.1 (macOS, iOS), 1.66 (Android), 1.102 (Linux)"},{id:"MachineCertificateSubject",category:"Runtime configuration",href:"#set-a-machine-certificate-subject",possibleValues:"consult customer-specific documentation",os:["Windows"],minClient:"1.52"},{id:"ReconnectAfter",category:"Runtime configuration",href:"#set-a-reconnection-timer",possibleValues:"Refer to https://pkg.go.dev/time#ParseDuration for information about the supported duration strings.",os:["Android","Linux","macOS","Windows"],minClient:"1.84, 1.86 (macOS), 1.102 (Linux)"},{id:"Tailnet",category:"Runtime configuration",href:"#set-a-suggested-or-required-tailnet",possibleValues:"String (a comma-separated list of tailnet IDs or organization IDs)",os:["Android","iOS","Linux","macOS","tvOS","Windows"],minClient:"1.52, 1.66 (Android), 1.102 (Linux)"},{id:"KeyExpirationNotice",category:"Runtime configuration",href:"#set-the-key-expiration-notice-period",possibleValues:"Go-style Duration, for example, 24h or 5h25m30s",os:["iOS","macOS","Windows"],minClient:"1.50 (Windows), 1.58 (macOS, iOS)"},{id:"UnattendedMode",category:"Runtime configuration",href:"#set-unattended-mode",possibleValues:"always, never, user-decides",os:["Windows"],minClient:"1.52"},{id:"UseTailscaleSubnets",category:"Runtime configuration",href:"#set-whether-the-device-accepts-tailscale-subnets",possibleValues:"always, never, user-decides",os:["Android","iOS","Linux","macOS","tvOS","Windows"],minClient:"1.56, 1.66 (Android), 1.102 (Linux)"},{id:"UseTailscaleDNSSettings",category:"Runtime configuration",href:"#set-whether-the-device-uses-tailscale-dns-settings",possibleValues:"always, never, user-decides",os:["Android","iOS","Linux","macOS","tvOS","Windows"],minClient:"1.56, 1.66 (Android), 1.102 (Linux)"},{id:"AllowIncomingConnections",category:"Runtime configuration",href:"#set-whether-to-allow-incoming-connections",possibleValues:"always, never, user-decides",os:["Android","iOS","Linux","macOS","tvOS","Windows"],minClient:"1.56, 1.66 (Android), 1.102 (Linux)"},{id:"AlwaysOn.Enabled",category:"Runtime configuration",href:"#set-tailscale-to-always-be-connected",possibleValues:"Boolean",os:["iOS","macOS","Windows"],minClient:"1.84"},{id:"AlwaysOn.OverrideWithReason",category:"Runtime configuration",href:"#set-a-required-reason-for-disconnection",possibleValues:"Boolean",os:["iOS","macOS","Windows"],minClient:"1.84"},{id:"DeviceSerialNumber",category:"Runtime configuration",href:"#specify-the-device-serial-number",possibleValues:"a String containing the device seri
5al number",os:["iOS","tvOS"],minClient:"1.70"},{id:"EnableDNSRegistration",category:"Runtime configuration",href:"#force-tailscale-ip-registration-in-active-directory",possibleValues:"always, never, user-decides",os:["Windows"],minClient:"1.84"},{id:"IPAddressCopiedAlertSuppressed",category:"Runtime configuration",href:"#suppress-ip-address-copied-notifications",possibleValues:"Boolean",os:["macOS"],minClient:"1.50"},{id:"OnboardingFlow",category:"UI visibility",href:"#suppress-the-first-launch-onboarding-flow",possibleValues:"show, hide",os:["Android","macOS","Windows"],minClient:"1.86"},{id:"HideDHCP121Warnings",category:"Runtime configuration",href:"#suppress-dhcp-option-121-warnings",possibleValues:"Boolean",os:["macOS"],minClient:"1.68"},{id:"ExcludedPackageNames",category:"Runtime configuration",href:"#set-excluded-applications",possibleValues:"String (a comma-separated list of application package names, such as com.google.android.apps.maps,com.google.android.calendar)",os:["Android"],minClient:"1.70"},{id:"IncludedPackageNames",category:"Runtime configuration",href:"#set-included-applications",possibleValues:"String (a comma-separated list of application package names, such as com.google.android.apps.maps,com.google.android.calendar)",os:["Android"],minClient:"1.70"},{id:"AuthKey",category:"Runtime configuration",href:"#set-an-auth-key",possibleValues:"A Tailscale auth key. We recommend you use a one-off auth key.",os:["Android","iOS","Linux","macOS","tvOS","Windows"],minClient:"1.74, 1.102 (Linux)"},{id:"EncryptState",category:"Runtime configuration",href:"#encrypt-node-state-file",possibleValues:"Boolean",os:["Linux","macOS (standalone variant only)","Windows"],minClient:"1.86, 1.102 (Linux)"},{id:"Hostname",category:"Runtime configuration",href:"#set-whether-device-hostnames-can-be-modified",possibleValues:"A String value such as user-macbook-pro",os:["Android","iOS","Linux","macOS","tvOS","Windows"],minClient:"1.80, 1.102 (Linux)"},{id:"AuthBrowser.macos",category:"Runtime configuration",href:"#set-a-custom-browser-for-authentication",possibleValues:"A String value such as com.apple.Safari",os:["macOS"],minClient:"1.94"}],i=[{key:"category",label:"categories",options:["Auto update","Exit nodes","Organization","Runtime configuration","UI visibility"],matches:(e,t)=>e.includes(t.category)},{key:"platform",label:"platforms",options:["Android","iOS","Linux","macOS","macOS (standalone variant only)","tvOS","Windows"],matches:(e,t)=>{let a=Array.isArray(t.os)?t.os:[t.os];return 0===e.length||e.some(e=>a.join(" ").includes(e))}}];s.map(e=>[e.id,e])},32938:function(e,t,a){"use strict";a.d(t,{Z:function(){return i}});var s=a(67294);function i(){return(0,s.useCallback)(e=>{let t=e.currentTarget;if("A"!==t.tagName||!(t.pathname===window.location.pathname&&t.origin===window.location.origin)||!t.hash)return;let a=t.hash.slice(1),s=document.getElementById(a);s&&(e.preventDefault(),s.scrollIntoView({behavior:"smooth",block:"start"}),window.history.pushState(null,"",`#${a}`))},[])}},43894:function(e,t,a){"use strict";a.d(t,{ss:function(){return l},x7:function(){return i}});var s=a(8254);let i=e=>s.find(t=>t.slug===e),l=e=>""===e?"/docs":`/docs/${e}`},86769:function(e,t,a){"use strict";a.d(t,{p:function(){return s}});let s=e=>{let t=new Date(e);return`${t.toLocaleString("default",{month:"long"})} ${t.getDate().toString().padStart(2,"0")}, ${t.getFullYear()}`}},40006:function(e,t,a){var s={"./account/admin-console-session-timeout/index.mdx":[21237,10741,21237],"./account/billing/azure-marketplace-for-billing/index.mdx":[12607,10741,12607],"./account/billing/index.mdx":[2241,10741,2241],"./account/billing/manage-invoices/index.mdx":[67418,10741,67418],"./account/billing/modify-billing/index.mdx":[33893,10741,33893],"./account/bug-report/index.mdx":[22144,10741,22144],"./account/delete-tailnet/index.mdx":[75571,10741,75571],"./account/domain-aliases/domain-alias.png":[60073,60073],"./account/domain-aliases/index.mdx":[90084,10741,90084],"./account/domain-verification/index.mdx":[53958,10741,53958],"./account/index.mdx":[36697,10741,36697],"./account/manage-plans/downgrade-plan/index.mdx":[12076,10741,12076],"./account/manage-plans/free-plans-discounts/index.mdx":[35150,10741,35150],"./account/manage-plans/index.mdx":[80152,10741,80152],"./account/manage-plans/legacy-plans/index.mdx":[60293,10741,60293],"./account/manage-plans/modify-existing-plan/index.mdx":[5534,10741,5534],"./account/manage-plans/upgrade-plan/index.mdx":[43259,10741,43259],"./aperture/auto-auth/index.mdx":[83907,10741,83907],"./aperture/buy-tokens-through-aperture/index.mdx":[51823,10741,51823],"./aperture/ch
5at-sandbox/index.mdx":[56308,10741,56308],"./aperture/chat/index.mdx":[87772,10741,87772],"./aperture/chat/projects/index.mdx":[17131,10741,17131],"./aperture/cli/index.mdx":[60878,10741,60878],"./aperture/configuration/index.mdx":[57751,10741,57751],"./aperture/connect-outside-tailnet/index.mdx":[74142,10741,74142],"./aperture/connectors/add-verified-connector/index.mdx":[63936,10741,63936],"./aperture/connectors/built-in-connectors/index.mdx":[60291,10741,60291],"./aperture/connectors/get-started/index.mdx":[30819,10741,30819],"./aperture/connectors/how-connectors-work/index.mdx":[84134,10741,84134],"./aperture/connectors/index.mdx":[40940,10741,40940],"./aperture/connectors/kinds-of-connector/index.mdx":[18880,10741,18880],"./aperture/connectors/reference/index.mdx":[75971,10741,75971],"./aperture/connectors/set-up-authenticated-mcp-connector/index.mdx":[11298,10741,11298],"./aperture/connectors/use-a-connector/index.mdx":[52595,10741,52595],"./aperture/control-access/index.mdx":[72400,10741,72400],"./aperture/direct-access/index.mdx":[50214,10741,50214],"./aperture/get-started/index.mdx":[93082,10741,93082],"./aperture/guardrails/index.mdx":[50221,10741,50221],"./aperture/how-aperture-works/index.mdx":[46043,10741,46043],"./aperture/how-grants-work/index.mdx":[75859,10741,75859],"./aperture/how-to/build-custom-webhook/index.mdx":[55358,10741,55358],"./aperture/how-to/check-and-refill-budgets/index.mdx":[99604,10741,99604],"./aperture/how-to/configure-overdraft-quotas/index.mdx":[72592,10741,72592],"./aperture/how-to/configure-zero-retention/index.mdx":[18755,10741,18755],"./aperture/how-to/enable-sandbox/index.mdx":[3539,10741,3539],"./aperture/how-to/export-usage-data-to-s3/index.mdx":[30253,10741,30253],"./aperture/how-to/filter-logs-by-header/index.mdx":[98035,10741,98035],"./aperture/how-to/grant-connector-access-by-label/index.mdx":[80647,10741,80647],"./aperture/how-to/grant-mcp-tool-access/index.mdx":[83152,10741,83152],"./aperture/how-to/grant-model-access/index.mdx":[30422,10741,30422],"./aperture/how-to/index.mdx":[70543,10741,70543],"./aperture/how-to/manage-sandbox/index.mdx":[44301,10741,44301],"./aperture/how-to/set-per-user-spending-limits/index.mdx":[83184,10741,83184],"./aperture/how-to/set-team-budget/index.mdx":[66232,10741,66232],"./aperture/how-to/set-up-admin-access/index.mdx":[63260,10741,63260],"./aperture/how-to/set-up-chat-ui/index.mdx":[22978,10741,22978],"./aperture/how-to/set-up-guardrails/index.mdx":[72059,10741,72059],"./aperture/how-to/set-up-http-api-connector/index.mdx":[23922,10741,70991],"./aperture/how-to/set-up-per-user-oauth2-connector/index.mdx":[44615,10741,44615],"./aperture/how-to/use-amazon-bedrock/index.mdx":[98483,10741,98483],"./aperture/how-to/use-anthropic/index.mdx":[37542,10741,37542],"./aperture/how-to/use-claude-code-action/index.mdx":[32507,10741,32507],"./aperture/how-to/use-claude-code/index.mdx":[11923,10741,11923],"./aperture/how-to/use-claude-desktop/index.mdx":[11330,10741,11330],"./aperture/how-to/use-codex/index.mdx":[86247,10741,86247],"./aperture/how-to/use-gemini-enterprise-agent-platform/index.mdx":[19005,10741,19005],"./aperture/how-to/use-google-gemini/index.mdx":[88457,10741,54962],"./aperture/how-to/use-microsoft-foundry/index.mdx":[84198,10741,84198],"./aperture/how-to/use-openai-compatible-provider/index.mdx":[62293,10741,62293],"./aperture/how-to/use-openai-compatible-tools/index.mdx":[65248,10741,65248],"./aperture/how-to/use-openai/index.mdx":[85526,10741,85526],"./aperture/how-to/use-opencode/index.mdx":[53663,10741,53663],"./aperture/how-to/use-openrouter/index.mdx":[98771,10741,98771],"./aperture/how-to/use-passthrough-mode/claude-subscriptions/index.mdx":[81790,10741,81790],"./aperture/how-to/use-passthrough-mode/codex-subscriptions/index.mdx":[68800,10741,68800],"./aperture/how-to/use-passthrough-mode/index.mdx":[58400,10741,58400],"./aperture/how-to/use-self-hosted/index.mdx":[66872,10741,66872],"./aperture/how-to/use-vercel/index.mdx":[30575,10741,30575],"./aperture/index.mdx":[83893,10741,13389],"./aperture/integrate/cerbos/index.mdx":[74582,10741,74582],"./aperture/integrate/cribl/index.mdx":[8763,10741,72898],"./aperture/integrate/highflame/index.mdx":[19134,10741,19134],"./aperture/integrate/index.mdx":[84685,10741,84685],"./aperture/integrate/oso/index.mdx":[71427,10741,71427],"./aperture/manage-spending/index.mdx":[38393,10741,38393],"./aperture/mcp-server/index.mdx":[51748,10741,51748],"./aperture/observe-and-export/index.mdx":[25405,10741,25405],"./aperture/privacy-and-data-retention/index.mdx":[6881,10741,6881],"./aperture/provider-compatibility/index.mdx":[43903,10741,43903],"./aperture/reference/aperture-vs-tailnet-grants/index.mdx":[69339,10741,69339],"./aperture/reference/dashboard-admin/index.mdx":[56998,10741,56998],"./aperture/reference/dashboard/index.mdx":[93570,10741,93570],"./aperture/reference/index.mdx":[13552,10741,13552],"./aperture/reference/recipes/index.mdx":[84294,10741,84294],"./aperture/reference/sandbox/index.mdx":[84084,10741,84084],"./aperture/set-up-providers/index.mdx":[28041,10741,28041],"./aperture/troubleshooting/index.mdx":[60108,10741,60108],"./aperture/troubleshooting/sandbox/index.mdx":[18960,10741,18960],"./aperture/use-your-tools/index.mdx":[29471,10741,29471],"./aperture/visible-groups/index.mdx":[36476,10741,36476],"./aperture/what-is-aperture/index.mdx":[21200,10741,21200],"./border0/architecture-and-concepts/index.mdx":[84565,10741,84565],"./border0/connectors/high-availability/index.mdx":[65832,10741,65832],"./border0/connectors/index.mdx":[85132,10741,85132],"./border0/connectors/install/index.mdx":[85511,10741,85511],"./border0/connectors/overview/index.mdx":[90064,10741,90064],"./border0/connectors/reference/index.mdx":[99925,10741,99925],"./border0/connectors/reference/troubleshooting/index.mdx":[73801,10741,73801],"./border0/get-started/index.mdx":[79479,10741,79479],"./border0/index.mdx":[37073,10741,86750
5],"./border0/manage-secrets/index.mdx":[10385,10741,10385],"./border0/manage-secrets/secretValue.png":[5138,5138],"./border0/manage-secrets/upstreamConfiguration.png":[88497,88497],"./border0/manage-secrets/upstreamInformation.png":[8744,8744],"./border0/services/index.mdx":[61515,10741,61515],"./border0/services/sockets.png":[11841,11841],"./border0/what-is-border0/index.mdx":[63116,10741,63116],"./concepts/all-your-offices/index.mdx":[77659,10741,77659],"./concepts/av-flagging/index.mdx":[21521,10741,21521],"./concepts/can-tailscale-decrypt-traffic/index.mdx":[59555,10741,59555],"./concepts/control-data-planes/index.mdx":[42923,10741,42923],"./concepts/corporate-vpn/index.mdx":[39039,10741,39039],"./concepts/deprecated-physical-security/index.mdx":[13273,10741,13273],"./concepts/device-visibility/index.mdx":[17117,10741,17117],"./concepts/domain-ownership/index.mdx":[33258,10741,33258],"./concepts/index.mdx":[89881,10741,89881],"./concepts/interconnect-microservices/index.mdx":[81086,10741,81086],"./concepts/internal-apps-anywhere/index.mdx":[64105,10741,64105],"./concepts/ip-and-dns-addresses/android-deviceip.png":[3209,3209],"./concepts/ip-and-dns-addresses/index.mdx":[60629,10741,60629],"./concepts/ip-and-dns-addresses/ios-deviceip.png":[2330,2330],"./concepts/ip-and-dns-addresses/macos-deviceip.png":[52906,52906],"./concepts/ip-and-dns-addresses/windows-deviceip.png":[97085,97085],"./concepts/ip-blocklist-relays/index.mdx":[47217,10741,47217],"./concepts/ipv6/index.mdx":[63554,10741,63554],"./concepts/laptop-anywhere/index.mdx":[632,10741,632],"./concepts/local-team-server/index.mdx":[94011,10741,94011],"./concepts/machine-names/autogenerate-device-name-checkbox.png":[48468,48468],"./concepts/machine-names/device-name-details.png":[39543,39543],"./concepts/machine-names/device-name-modal.png":[7248,7248],"./concepts/machine-names/index.mdx":[13315,10741,37073],"./concepts/macos-sysext/index.mdx":[17849,10741,17849],"./concepts/macos-sysext/sysext-inapp-modal.png":[82894,82894],"./concepts/macos-sysext/sysext-inmenu-warning.png":[92631,92631],"./concepts/macos-sysext/sysext-privacy-security-scrolled.png":[49132,49132],"./concepts/macos-sysext/sysext-privacy-security-touch-id.png":[87001,87001],"./concepts/macos-sysext/sysext-privacy-security.png":[79253,79253],"./concepts/macos-sysext/sysext-vpn-config.png":[89292,89292],"./concepts/macos-sysext/system-extension-warning.png":[67416,67416],"./concepts/macos-variants/index.mdx":[82269,10741,82269],"./concepts/macos-webfilterproxyd/alert.png":[79908,79908],"./concepts/macos-webfilterproxyd/index.mdx":[4262,10741,4262],"./concepts/node-keys/index.mdx":[98391,10741,98391],"./concepts/post-quantum-cryptography/index.mdx":[89764,10741,89764],"./concepts/shared-responsibility/index.mdx":[52993,10741,52993],"./concepts/tailnet-lock-whitepaper/aum.png":[12606,12606],"./concepts/tailnet-lock-whitepaper/forked-updates.png":[77279,77279],"./concepts/tailnet-lock-whitepaper/incremental-aum.png":[40583,40583],"./concepts/tailnet-lock-whitepaper/index.mdx":[37266,10741,37266],"./concepts/tailnet-lock-whitepaper/new-lock-key.svg":[79972,79972],"./concepts/tailnet-lock-whitepaper/tka.png":[89042,89042],"./concepts/tailnet-lock-whitepaper/with-lock.svg":[41512,41512],"./concepts/tailnet-name/index.mdx":[82844,10741,82844],"./concepts/tailnet/index.mdx":[84033,10741,71319],"./concepts/tailscale-encryption/index.mdx":[9698,10741,9698],"./concepts/tailscale-identity/index.mdx":[28430,10741,28430],"./concepts/tailscale-ip-addresses/index.mdx":[44690,10741,44690],"./concepts/tailscale-osi/index.mdx":[76995,10741,76995],"./concepts/traffic-routing-through-tailscale/index.mdx":[5088,10741,5088],"./concepts/tunnel-vision/index.mdx":[8307,10741,8307],"./concepts/tunnel-vision/tunnelvision-notice.png":[69237,69237],"./concepts/userspace-networking/index.mdx":[93361,10741,21413],"./concepts/userspace-networking/userspace-networking.png":[8974,8974],"./concepts/what-is-tailscale/index.mdx":[56052,10741,56052],"./concepts/what-is-tailscale/tailscale.png":[84452,84452],"./concepts/what-is-tailscale/traditional-vpn.png":[52163,52163],"./concepts/windows-config-and-log-files/index.mdx":[610,10741,610],"./concepts/windows-config-and-log-files/windows-config-authorize.png":[94495,94495],"./concepts/windows-config-and-log-files/windows-config-files.png":[30581,30581],"./concepts/windows-config-and-log-files/windows-config-run.png":[27450,27450],"./concepts/windows-config-and-log-files/windows-config-shell.png":[96174,96174],"./concepts/wireguard/index.mdx":[76114,10741,76114],"./concepts/zero-trust/index.mdx":[95250,10741,95250],"./features/access-control/acls/index.mdx":[92079,10741,92079],"./features/access-control/auth-keys/how-to/index.mdx":[11402,10741,11402],"./features/access-control/auth-keys/how-to/secure-auth-keys/index.mdx":[42936,10
5741,42936],"./features/access-control/auth-keys/index.mdx":[86182,10741,86182],"./features/access-control/device-management/device-approval/approve-device-tag.png":[2688,2688],"./features/access-control/device-management/device-approval/approve-device-warning.png":[51118,51118],"./features/access-control/device-management/device-approval/approve-device.png":[81785,81785],"./features/access-control/device-management/device-approval/enable-approval.png":[4769,8574],"./features/access-control/device-management/device-approval/index.mdx":[29260,10741,29260],"./features/access-control/device-management/device-certificate-verification/index.mdx":[73831,10741,73831],"./features/access-control/device-management/how-to/export-list/index.mdx":[38130,10741,38130],"./features/access-control/device-management/how-to/filter/filter-machines.png":[2836,2836],"./features/access-control/device-management/how-to/filter/index.mdx":[1020,10741,1020],"./features/access-control/device-management/how-to/index.mdx":[90862,10741,90862],"./features/access-control/device-management/how-to/manage-identity/device-identity-collection-status.png":[1380,1380],"./features/access-control/device-management/how-to/manage-identity/device-identity-collection-toggle.png":[28486,28486],"./features/access-control/device-management/how-to/manage-identity/index.mdx":[92774,10741,92774],"./features/access-control/device-management/how-to/manage-identity/machine-identity.png":[27706,27706],"./features/access-control/device-management/how-to/remove/index.mdx":[57470,10741,57470],"./features/access-control/device-management/how-to/set-up-qr-code/index.mdx":[60530,10741,60530],"./features/access-control/device-management/how-to/set-up-qr-code/tailscale-login-qr-code.png":[83861,83861],"./features/access-control/device-management/how-to/set-up/add-device.png":[22684,22684],"./features/access-control/device-management/how-to/set-up/index.mdx":[38452,10741,38452],"./features/access-control/device-management/index.mdx":[29494,10741,29494],"./features/access-control/grants/grants-app-capabilities/index.mdx":[41835,10741,41835],"./features/access-control/grants/grants-via/index.mdx":[39782,10741,39782],"./features/access-control/grants/index.mdx":[23610,10741,23610],"./features/access-control/how-to/index.mdx":[35902,10741,35902],"./features/access-control/index.mdx":[16240,10741,16240],"./features/access-control/just-in-time-access/index.mdx":[43959,10741,43959],"./features/access-control/key-expiry/disable-key-expiry.png":[15262,15262],"./features/access-control/key-expiry/extend-key-expiry.png":[95168,95168],"./features/access-control/key-expiry/index.mdx":[15271,10741,15271],"./features/access-control/user-approval/index.mdx":[80494,10741,80494],"./features/app-connectors/how-to/index.mdx":[11009,10741,11009],"./features/app-connectors/how-to/setup/app-connector-custom.png":[36331,36331],"./features/app-connectors/how-to/setup/app-connector-preset.png":[5112,5112],"./features/app-connectors/how-to/setup/index.mdx":[29476,10741,29476],"./features/app-connectors/index.mdx":[2847,10741,2847],"./features/client/android-app-split-tunneling/index.mdx":[85295,10741,85295],"./features/client/device-web-interface/index.mdx":[7128,10741,7128],"./features/client/fast-user-switching/index.mdx":[47431,10741,47431],"./features/client/index.mdx":[66739,10741,66739],"./features/client/ios-vpn-on-demand/index.mdx":[83221,10741,83221],"./features/client/ios-vpn-on-demand/vpn-on-demand.png":[29401,29401],"./features/client/linux-systray/index.mdx":[71457,10741,71457],"./features/client/linux-systray/systray-gnome.png":[67768,67768],"./features/client/manage-preferences/allow-incoming-macos-legacy.png":[82419,82419],"./features/client/manage-preferences/allow-incoming-macos.png":[16114,16114],"./features/client/manage-preferences/allow-incoming-win.jpg":[22591,22591],"./features/client/manage-preferences/index.mdx":[55621,10741,55621],"./features/client/uninstall/index.mdx":[92663,10741,92663],"./features/client/update/auto-update-macos.png":[91782,91782],"./features/client/update/auto-update-on.png":[53197,63964],"./features/client/update/index.mdx":[51732,10741,51732],"./features/client/update/machines-update-only.png":[53343,53343],"./features/client/update/machines-versions-update.png":[33103,33103],"./features/client/update/machines-versions.png":[46089,46089],"./features/containers/docker/docker-components/index.mdx":[76077,10741,76077],"./features/containers/docker/docker-desktop/index.mdx":[34315,10741,34315],"./features/containers/docker/docker-params/index.mdx":[50608,10741,50608],"./features/containers/docker/how-to/connect-docker-alt-manager/index.mdx":[51634,10741,51634],"./features/containers/docker/how-to/connect-docker-container/index.mdx":[10123,10741,10123],"./features/containers/docker/how-to/connect-docker-standalone/index.mdx":[31918,10741,31918],"./features/containers/docker/how-to/index.mdx":[61782,10741,61
5782],"./features/containers/docker/index.mdx":[63571,10741,63571],"./features/containers/index.mdx":[31170,10741,31170],"./features/containers/lxc/index.mdx":[54639,10741,54639],"./features/containers/lxc/lxc-unprivileged/index.mdx":[26124,10741,26124],"./features/containers/lxc/lxc-unprivileged/proxmox-add-device.png":[8560,8560],"./features/containers/lxc/lxc-unprivileged/proxmox-device-passthrough.png":[82901,82901],"./features/declarative-node-sharing/index.mdx":[90081,10741,90081],"./features/device-posture/attributes-falcon.mdx":[41996,10741,41996],"./features/device-posture/attributes-fleet.mdx":[9470,10741,11015],"./features/device-posture/attributes-intune.mdx":[10055,10741,10055],"./features/device-posture/attributes-ip.mdx":[91772,10741,26674],"./features/device-posture/attributes-jamfpro.mdx":[44075,10741,44075],"./features/device-posture/attributes-kandji.mdx":[86981,10741,86981],"./features/device-posture/attributes-kolide.mdx":[91604,10741,91604],"./features/device-posture/attributes-sentinel-one.mdx":[27058,10741,27058],"./features/device-posture/attributes-tailscale.mdx":[40624,10741,40624],"./features/device-posture/auditlogs-integrations.mdx":[56466,10741,56466],"./features/device-posture/edr-mdm-integrations.mdx":[12506,10741,12506],"./features/device-posture/index.mdx":[6460,10741,6460],"./features/device-posture/machine-details-attrs.png":[66190,66190],"./features/device-posture/sync-schedule.mdx":[81477,10741,81477],"./features/ephemeral-nodes/ephemeral-keys.png":[40605,40605],"./features/ephemeral-nodes/index.mdx":[12578,10741,12578],"./features/exit-nodes/auto-exit-nodes/index.mdx":[4736,10741,4736],"./features/exit-nodes/exit-node-01.svg":[6185,6185],"./features/exit-nodes/exit-node-02.svg":[58414,58414],"./features/exit-nodes/exit-node-admin-list.png":[31499,31499],"./features/exit-nodes/exit-node-admin-toggle.png":[95493,95493],"./features/exit-nodes/exit-node-android-menu.png":[97385,97385],"./features/exit-nodes/exit-node-ios-menu.png":[626,626],"./features/exit-nodes/exit-node-ios-picker.png":[82568,82568],"./features/exit-nodes/exit-node-windows-menu.png":[24242,24242],"./features/exit-nodes/how-to/index.mdx":[24287,10741,24287],"./features/exit-nodes/how-to/setup/index.mdx":[61614,10741,61614],"./features/exit-nodes/index.mdx":[72701,10741,72701],"./features/exit-nodes/mandatory-exit-nodes/index.mdx":[68285,10741,68285],"./features/exit-nodes/mullvad-exit-nodes/index.mdx":[22553,10741,22553],"./features/firewall-mode/index.mdx":[83789,10741,83789],"./features/group-visibility-clients/index.mdx":[51660,10741,51660],"./features/index.mdx":[84262,10741,84262],"./features/logging/audit-logging/audit-log-filter.png":[99678,99678],"./features/logging/audit-logging/audit-logging-page.png":[49105,49105],"./features/logging/audit-logging/index.mdx":[35669,10741,35669],"./features/logging/audit-logging/log-acl-revert.png":[76296,76296],"./features/logging/index.mdx":[55057,10741,55057],"./features/logging/log-streaming/index.mdx":[9540,10741,9540],"./features/logging/log-streaming/private-endpoint-confirmation.png":[35637,35637],"./features/logging/log-streaming/private-endpoint-url.png":[7507,7507],"./features/logging/log-streaming/stream-configuration-logs.png":[52631,52631],"./features/logging/log-streaming/stream-network-logs.png":[26800,26800],"./features/logging/network-flow-logs/index.mdx":[59745,10741,59745],"./features/mac-ios-shortcuts/connect-tailnet-example.png":[8096,8096],"./features/mac-ios-shortcuts/index.mdx":[98188,10741,98188],"./features/mac-ios-shortcuts/switch-user-example.png":[40822,40822],"./features/magicdns/index.mdx":[99118,10741,99118],"./features/magicdns/magic-dns-name.png":[6101,6101],"./features/magicdns/magic-dns-naming.png":[11670,11670],"./features/magicdns/magic-dns-toggle.png":[65717,65717],"./features/magicdns/magic-dns.png":[10737,10737],"./features/multiple-tailnets/auth-screen.png":[16785,16785],"./features/multiple-tailnets/dropdown.png":[35752,62161],"./features/multiple-tailnets/index.mdx":[77029,10741,77029],"./features/multiple-tailnets/limitation-for-single-idp.mdx":[63857,10741,63857],"./features/multiple-tailnets/limitation-for-user-management.mdx":[21884,10741,21884],"./features/multiple-tailnets/multiple-tailnets.png":[78217,78217],"./features/oauth-apps/device-provisioning/index.mdx":[89892,10741,89892],"./features/oauth-apps/index.mdx":[24942,10741,24942],"./features/oauth-clients/generated-oauth-client.jpg":[43553,43553],"./features/oauth-clients/index.mdx":[74414,10741,74414],"./features/peer-relay/index.mdx":[42558,10741,42558],"./features/seamless-key-renewal/index.mdx":[95668,10741,95668],"./features/secure-node-state-storage/index.mdx":[47010,10741,47010],"./features/services/enable-services-collection-button.png":[59485,59485],"./features/services/index.mdx":[63285,10741,63285],"./features/services/machine-services.png":[93419,93419],"./features/services/services-acls.png":[86644,86644],"./features/services/services-view.png":[67988,67988],"./features/session-expiry/index.mdx":[1009,10741,1009],"./features/session-expiry/session-length.png":[20344,20344],"./features/session-expiry/user-session-expiry.png":[217,217],"./features/sharing/how-to/change-role/index.mdx":[2444,10741,2444],"./features/sharing/how-to/change-role/make-owner.png":[34488,34488],"./features/sharing/how-to/change-role/role-picker.png":[91244,91244],"./features/sharing/how-to/export-list/index.mdx":[93143,10741,93143],"./features/sharing/how-to/index.mdx":[18346,10741,18346],"./features/sharing/how-to/invite-any-user/index.mdx":[62342,10741,62342],"./features/sharing/how-to/invite-any-user/leave-tailnet.png":[7983,7983],"./features/sharing/how-to/invite-team-members/index.mdx":[22292,10741,22292],"./features/sharing/how-to/invite-team-members/invite-team-roles.png":[73613,73613],"./features/sharing/how-to/invite-team-members/invite-team.png":[68667,68667],"./features/sharing/how-to/invite-team-members/user-invite-options.png":[18099,18099],"./features/sharing/how-to/invite-users/index.mdx":[42356,10741,42356],"./features/sharing/how-to/offboard/index.mdx":[69129,10741,69129],"./features/sharing/how-to/remove-team-members/delete-user.png":[77406,77406],"./features/sharing/how-to/remove-team-members/index.mdx":[2667,10741,2667],"./features/sharing/index.mdx":[11524,10741,11524],"./features/sharing/sharing-access.png":[8755,8755],"./features/site-to-site/index.mdx":[48996,10741,48996],"./features/split-dns-policies/index.mdx":[57023,10741,57023],"./features/subnet-routers/4via6-subnets/4via6-subnets.png":[79165,79165],"./features/subnet-routers/4via6-subnets/index.mdx":[25380,10741,25380],"./features/subnet-routers/AdvertiseSubnets.mdx":[30907,10741,30907],"./features/subnet-routers/EnableIPForwarding.mdx":[22238,10741,22238],"./features/subnet-routers/WarningAcceptRoutesHA.mdx":[70728,10741,70728],"./features/subnet-routers/how-to/bgp/index.mdx":[43297,10741,43297],"./features/subnet-routers/how-to/index.mdx":[5528,10741,5528],"./features/subnet-routers/how-to/raspberry-pi/after-auth.png":[84334,84334],"./features/subnet-routers/how-to/raspberry-pi/enable-subnet-routes.png":[77300,77300],"./features/subnet-routers/how-to/raspberry-pi/index.mdx":[29501,10741,29501],"./features/subnet-routers/how-to/raspberry-pi/show-ip.png":[8308,8308],"./features/subnet-routers/how-to/raspberry-pi/subnets-enabled.png":[8209,8209],"./features/subnet-routers/how-to/setup/index.mdx":[40427,10741,40427],"./features/subnet-routers/index.mdx":[19054,10741,19054],"./features/subnet-routers/not-advertised-subnets.png":[82064,82064],"./features/subnet-routers/subnets-modal.png":[56001,56001],"./features/subnet-routers/subnets.png":[27693,27693],"./features/tags/auth-key-tag.png":[23153,23153],"./features/tags/index.mdx":[91758,10741,91758],"./features/tags/machines-list.png":[72717,72717],"./features/taildrive/access_android.mdx":[54052,10741,54
5052],"./features/taildrive/access_ios.mdx":[87232,10741,87232],"./features/taildrive/access_linux.mdx":[44331,10741,44331],"./features/taildrive/access_macos.mdx":[44928,10741,44928],"./features/taildrive/access_synology.mdx":[57486,10741,57486],"./features/taildrive/access_windows.mdx":[65184,10741,65184],"./features/taildrive/index.mdx":[63151,10741,63151],"./features/taildrive/share_cli.mdx":[34751,10741,34751],"./features/taildrive/share_macos_gui.mdx":[24927,10741,91311],"./features/taildrive/share_note.mdx":[10876,10741,10876],"./features/taildrive/share_synology.mdx":[48133,10741,48133],"./features/taildrive/share_windows.mdx":[53015,10741,53015],"./features/taildrop/android-send.jpg":[86497,86497],"./features/taildrop/google-photos-1.jpg":[69271,69271],"./features/taildrop/google-photos-2.jpg":[76407,76407],"./features/taildrop/google-photos-3.jpg":[24403,24403],"./features/taildrop/google-photos-4.jpg":[74387,74387],"./features/taildrop/how-to/index.mdx":[7213,10741,7213],"./features/taildrop/how-to/set-up-taildrop-with-nas/index.mdx":[79158,10741,79158],"./features/taildrop/how-to/set-up-taildrop-with-nas/qnap-taildrop-permission.png":[37900,37900],"./features/taildrop/how-to/set-up-taildrop-with-nas/synology-taildrop-permission.png":[89559,89559],"./features/taildrop/index.mdx":[33284,10741,33284],"./features/taildrop/ios-send.jpg":[94511,94511],"./features/taildrop/macos-extension.png":[6483,6483],"./features/taildrop/macos-send.png":[22312,22312],"./features/taildrop/taildrop.webm":[15712,15712],"./features/taildrop/windows-send.jpg":[77012,77012],"./features/tailnet-lock/enable-tailnet-lock.png":[72359,72359],"./features/tailnet-lock/index.mdx":[15811,10741,15811],"./features/tailnet-policy-file/extra-dns-records/index.mdx":[70260,10741,70260],"./features/tailnet-policy-file/index.mdx":[76935,10741,76935],"./features/tailnet-policy-file/ip-sets/index.mdx":[6937,10741,6937],"./features/tailnet-policy-file/manage-tailnet-policies/index.mdx":[85789,10741,85789],"./features/tailnet-policy-file/manage-tailnet-policies/preview-rules.png":[62382,62382],"./features/tailnets-api/index.mdx":[45464,10741,45464],"./features/tailscale-accessbot-jit/index.mdx":[69191,10741,69191],"./features/tailscale-accessbot-jit/tailscale-access-requesting-access.png":[36063,36063],"./features/tailscale-funnel/enable-funnel.png":[39954,39954],"./features/tailscale-funnel/funnel-diagram.png":[79625,79625],"./features/tailscale-funnel/how-to/host-websites/index.mdx":[28948,10741,28948],"./features/tailscale-funnel/how-to/index.mdx":[64892,10741,64892],"./features/tailscale-funnel/index.mdx":[92016,10741,92016],"./features/tailscale-serve/enable-serve.png":[52768,52768],"./features/tailscale-serve/index.mdx":[7531,10741,7531],"./features/tailscale-services/index.mdx":[95994,10741,95994],"./features/tailscale-skill/index.mdx":[17852,10741,17852],"./features/tailscale-ssh/check-mode-required.png":[81427,81427],"./features/tailscale-ssh/generate-auth-key.png":[64276,64276],"./features/tailscale-ssh/how-to/index.mdx":[47566,10741,47566],"./features/tailscale-ssh/how-to/session-recording-s3/index.mdx":[31033,10741,31033],"./features/tailscale-ssh/index.mdx":[2881,10741,2881],"./features/tailscale-ssh/tailscale-ssh-console/authenticate-dialog.jpg":[75492,75492],"./features/tailscale-ssh/tailscale-ssh-console/connect-to-device.jpg":[69896,69896],"./features/tailscale-ssh/tailscale-ssh-console/index.mdx":[92252,10741,92252],"./features/tailscale-ssh/tailscale-ssh-console/ssh-button.jpg":[65344,65344],"./features/tailscale-ssh/tailscale-ssh-session-recording/index.mdx":[66492,10741,66492],"./features/tailscale-ssh/tailscale-ssh-session-recording/ssh-recording-demo.gif":[66709,66709],"./features/tailscale-system-policies/forced-exit-node-macos.jpg":[51640,51640],"./features/tailscale-system-policies/index.mdx":[88214,10741,88214],"./features/tailscale-system-policies/mdm_data":[99776,99776],"./features/tailscale-system-policies/mdm_data.jsx":[99776,99776],"./features/tailscale-system-policies/unstable-updates-screenshot.png":[8033,8033],"./features/tsidp/index.mdx":[70621,10741,70621],"./features/tsnet/how-to/create-basic-tsnet-app/index.mdx":[50131,10741,50131],"./features/tsnet/how-to/index.mdx":[88847,10741,88847],"./features/tsnet/how-to/register-service/index.mdx":[46368,10741,46368],"./features/tsnet/index.mdx":[63658,10741,63658],"./features/tsrecorder/index.mdx":[11889,10741,11889],"./features/user-group-provisioning/index.mdx":[62021,10741,62021],"./features/visual-editor/index.mdx":[14053,10741,14053],"./features/webhooks/add-webhook-endpoint.png":[57508,57508],"./features/webhooks/how-to/index.mdx":[89324,10741,89324],"./features/webhooks/how-to/rotate-webhook-secret/index.mdx":[41820,10741,41820],"./features/webhooks/index.mdx":[48
5018,10741,48018],"./features/webhooks/tailscale-events-slack.png":[26869,26869],"./features/webhooks/webhook-events.png":[895,895],"./features/workload-identity-federation/index.mdx":[76803,10741,76803],"./features/workload-identity-federation/wif-process.png":[58995,58995],"./how-to/connect-ssh-linux-vm/index.mdx":[35391,10741,35391],"./how-to/connect-to-devices/index.mdx":[42947,10741,42947],"./how-to/connect-vpc/aws-cidr.png":[67009,67009],"./how-to/connect-vpc/azure-cidr.png":[73769,73769],"./how-to/connect-vpc/index.mdx":[32741,10741,32741],"./how-to/index.mdx":[17241,10741,17241],"./how-to/quickstart/index.mdx":[95808,10741,95808],"./how-to/run-unattended/index.mdx":[22264,10741,22264],"./how-to/secure-ubuntu-server-with-ufw/index.mdx":[14778,10741,14778],"./how-to/set-up-custom-control-server/index.mdx":[65785,10741,65785],"./how-to/set-up-high-availability/index.mdx":[53901,10741,53901],"./how-to/set-up-https-certificates/https-naming.png":[29843,29843],"./how-to/set-up-https-certificates/index.mdx":[48826,10741,48826],"./how-to/set-up-servers/generate-auth-key.png":[69081,69081],"./how-to/set-up-servers/index.mdx":[86352,10741,86352],"./how-to/set-up-small-tailscale/index.mdx":[78909,10741,78909],"./how-to/test-connections/index.mdx":[91906,10741,91906],"./how-to/use-third-party-dpi/dpi-third-party.png":[23222,23222],"./how-to/use-third-party-dpi/index.mdx":[2952,10741,2952],"./hubs/automations/index.mdx":[46370,10741,46370],"./hubs/chat-sandbox/index.mdx":[74947,10741,74947],"./hubs/cloud-server/index.mdx":[60141,10741,60141],"./hubs/containers-and-virtualization/index.mdx":[91298,10741,91298],"./hubs/database/index.mdx":[8213,10741,8213],"./hubs/develop-with-ai/index.mdx":[79804,10741,79804],"./hubs/firewall/index.mdx":[37261,10741,37261],"./hubs/gitops/index.mdx":[89677,10741,89677],"./hubs/index.mdx":[10989,10741,10989],"./hubs/integration-dev-tools/index.mdx":[54819,10741,54819],"./hubs/integration-infrastructure-as-code/index.mdx":[41753,10741,41753],"./hubs/integration-serverless-apps/index.mdx":[43574,10741,43574],"./hubs/kubernetes/ephemeral-keys.png":[21180,21180],"./hubs/kubernetes/index.mdx":[4528,10741,4528],"./hubs/manage-users/index.mdx":[62833,10741,62833],"./hubs/manage/index.mdx":[51426,10741,51426],"./hubs/mdm/index.mdx":[57876,10741,57876],"./hubs/multifactor-auth/index.mdx":[99333,10741,99333],"./hubs/oauth/index.mdx":[39046,10741,39046],"./hubs/quick-guides/index.mdx":[59392,10741,59392],"./hubs/remote-code/index.mdx":[6264,10741,6264],"./hubs/resources/index.mdx":[55464,10741,55464],"./hubs/route/index.mdx":[71954,10741,71954],"./hubs/secure-networks/index.mdx":[68186,10741,68186],"./hubs/servers/index.mdx":[84218,10741,84218],"./hubs/share-web-server/index.mdx":[58662,10741,36390],"./hubs/share/index.mdx":[65787,10741,65787],"./hubs/support/index.mdx":[41299,10741,41299],"./index.mdx":[63970,10741,63970],"./install/amazon-fire/index.mdx":[32169,10741,32169],"./install/android/android-quickstart/index.mdx":[92931,10741,92931],"./install/android/index.mdx":[46953,10741,46953],"./install/appletv/index.mdx":[24760,10741,24760],"./install/chromebook/index.mdx":[84590,10741,84590],"./install/cloud/aws/aws-app-runner/ephemeral-keys.png":[58241,58241],"./install/cloud/aws/aws-app-runner/index.mdx":[81958,10741,81958],"./install/cloud/aws/aws-install.drawio":[45869,45869],"./install/cloud/aws/aws-install.png":[84629,84629],"./install/cloud/aws/aws-lambda/ephemeral-keys.png":[16356,16356],"./install/cloud/aws/aws-lambda/index.mdx":[68638,10741,68638],"./install/cloud/aws/aws-lightsail/ephemeral-keys.png":[14226,14226],"./install/cloud/aws/aws-lightsail/index.mdx":[15431,10741,15431],"./install/cloud/aws/aws-rds/aws-disable-ssh.jpg":[3009,3009],"./install/cloud/aws/aws-rds/aws-split-dns.jpg":[3916,3916],"./install/cloud/aws/aws-rds/ec2-subnet.jpg":[55068,55068],"./install/cloud/aws/aws-rds/index.mdx":[43235,10741,43235],"./install/cloud/aws/aws-rds/rds-sg-add-ec2.jpg":[22472,22472],"./install/cloud/aws/aws-rds/sg-port-41641.jpg":[77155,77155],"./install/cloud/aws/index.mdx":[77314,10741,77314],"./install/cloud/aws/quickstart/index.mdx":[17865,10741,17865],"./install/cloud/azure/azure-app-service/azure-config-vars.png":[78523,78523],"./install/cloud/azure/azure-app-service/ephemeral-keys.png":[66673,66673],"./install/cloud/azure/azure-app-service/index.mdx":[27429,10741,27429],"./install/cloud/azure/index.mdx":[65714,10741,65714],"./install/cloud/azure/linux/azure-add-DNS.jpg":[50420,50420],"./install/cloud/azure/linux/azure-disable-ssh.jpg":[29746,29746],"./install/cloud/azure/linux/index.mdx":[90406,10741,90406],"./install/cloud/azure/linux/network-security-group.jpg":[70481,70481],"./install/cloud/azure/windows/azure-add-DNS.jpg":[50501,50501],"./install/cloud/azure/windows/azure-disable-ssh.jpg":[88586,88586],"./install/cloud/azure/windows/index.mdx":[95057,10741,95057],"./install/cloud/azure/windows/windows-nsg.jpg":[90170,90170],"./install/cloud/cloudrun/ephemeral-keys.png":[96267,96267],"./install/cloud/cloudrun/index.mdx":[19354,10741,19354],"./install/cloud/coder/index.mdx":[60398,10741,60398],"./install/cloud/flydotio/ephemeral-keys.png":[70239,70239],"./install/cloud/flydotio/index.mdx":[31872,10741,31872],"./install/cloud/gce/gce-add-nameserver.png":[81674,81674],"./install/cloud/gce/gce-firewall-rule.png":[24575,24575],"./install/cloud/gce/gce-ip-forwarding.png":[243
51,2431],"./install/cloud/gce/gce-nameserver.png":[44830,44830],"./install/cloud/gce/gce-remove-ssh.png":[31846,31846],"./install/cloud/gce/index.mdx":[4337,10741,4337],"./install/cloud/gitpod/gitpod.jpg":[46672,7371],"./install/cloud/gitpod/index.mdx":[47472,10741,47472],"./install/cloud/heroku/ephemeral-keys.png":[733,733],"./install/cloud/heroku/heroku-config-vars.png":[28498,28498],"./install/cloud/heroku/index.mdx":[47027,10741,47027],"./install/cloud/hetzner/hetzner-firewall.jpg":[40483,40483],"./install/cloud/hetzner/index.mdx":[71622,10741,71622],"./install/cloud/index.mdx":[1394,10741,1394],"./install/cloud/koyeb/ephemeral-keys.png":[9712,9712],"./install/cloud/koyeb/index.mdx":[48583,10741,48583],"./install/cloud/oracle-cloud/index.mdx":[52257,10741,52257],"./install/cloud/oracle-cloud/ocn-ingress-rule.jpg":[64842,64842],"./install/cloud/oracle-cloud/ocn-nameserver.jpg":[64072,64072],"./install/cloud/oracle-cloud/ocn-remove-ssh.png":[3878,3878],"./install/cloud/oracle-cloud/ocn-security-lists.jpg":[98509,98509],"./install/cloud/oracle-cloud/ocn-virtual-networks.jpg":[96758,96758],"./install/index.mdx":[13491,10741,13491],"./install/ios/index.mdx":[68034,10741,68034],"./install/ios/quickstart/index.mdx":[7666,10741,7666],"./install/linux/index.mdx":[91799,10741,91799],"./install/mac/index.mdx":[68809,10741,68809],"./install/mac/quickstart/index.mdx":[86914,10741,86914],"./install/opnsense/index.mdx":[39288,10741,39288],"./install/opnsense/opnsense.png":[76524,76524],"./install/opnsense/static-port-mapping.png":[29185,29185],"./install/opnsense/upnp-settings.jpg":[85945,85945],"./install/start/index.mdx":[90469,10741,90469],"./install/static/index.mdx":[45408,10741,45408],"./install/unstable/index.mdx":[41961,10741,41961],"./install/windows/index.mdx":[19542,10741,19542],"./install/windows/msi/index.mdx":[60435,10741,60435],"./install/windows/quickstart/index.mdx":[55504,10741,55504],"./install/windows/win-menu.png":[83090,83090],"./install/windows/wsl2/index.mdx":[17600,10741,17600],"./install/with-cloud-init/index.mdx":[40119,10741,40119],"./integrations/bitbucket/gitops/gitops-edit-warning.png":[73083,73083],"./integrations/bitbucket/gitops/index.mdx":[12583,10741,12583],"./integrations/bitbucket/index.mdx":[75339,10741,75339],"./integrations/captive-portals/captive-portal-notification.png":[97006,97006],"./integrations/captive-portals/index.mdx":[87210,10741,87210],"./integrations/codesandbox/index.mdx":[58309,10741,58309],"./integrations/codeserver/index.mdx":[2677,10741,2677],"./integrations/control-d/index.mdx":[69474,10741,69474],"./integrations/crowdstrike-zta/configure-crowdstrike-falcon-integration.png":[64200,64200],"./integrations/crowdstrike-zta/crowdstrike-scopes.png":[45220,45220],"./integrations/crowdstrike-zta/index.mdx":[91419,10741,91419],"./integrations/crowdstrike-zta/integration-status.png":[13559,13559],"./integrations/crowdstrike-zta/machine-attributes.png":[3204,3204],"./integrations/crunchy-bridge/index.mdx":[74185,10741,74185],"./integrations/firewalls/index.mdx":[30862,10741,30862],"./integrations/firewalls/opnsense-unbound/index.mdx":[94874,10741,94874],"./integrations/firewalls/opnsense-unbound/query-forwarding.png":[34029,34029],"./integrations/firewalls/opnsense-unbound/search-domain.png":[18416,18416],"./integrations/firewalls/palo-alto-firewall/index.mdx":[69836,10741,69836],"./integrations/firewalls/palo-alto-firewall/pan-os-PDIPP.png":[25867,25867],"./integrations/firewalls/palo-alto-firewall/pan-os-selective-PDIPP-original.png":[11862,11862],"./integrations/firewalls/palo-alto-firewall/pan-os-selective-PDIPP-service.png":[75412,75412],"./integrations/firewalls/palo-alto-firewall/pan-os-static-ip.png":[44042,44042],"./integrations/firewalls/pan-os-PDIPP.png":[79524,79524],"./integrations/firewalls/pfsense/index.mdx":[63178,10741,63178],"./integrations/firewalls/pfsense/static-port-mapping.png":[76058,76058],"./integrations/firewalls/pfsense/upnp-settings.jpg":[87619,87619],"./integrations/firewalls/sophos-nat.png":[26593,26593],"./integrations/firewalls/unifi-p2p.png":[29576,29576],"./integrations/fleet/configure-integration.png":[92984,92984],"./integrations/fleet/fleet-policy-example.png":[48267,48267],"./integrations/fleet/index.mdx":[73190,10741,73190],"./integrations/fleet/integration-status.png":[3799,3799],"./integrations/fleet/machine-attributes.png":[34584,34584],"./integrations/github/github-action/index.mdx":[70938,10741,70938],"./integrations/github/github-codespaces/codespace.jpg":[93956,93956],"./integrations/github/github-codespaces/index.mdx":[52261,10741,52261],"./integrations/github/gitops/actions-workflow.png":[16401,16401],"./integrations/github/gitops/gitops-edit-warning.png":[96055,96055],"./integrations/github/gitops/index.mdx":[23430,10741,23430],"./integrations/github/index.mdx":[63682,10741,63682],"./integrations/gitlab/gitlab-runner/index.mdx":[72396,10741,72396],"./integrations/gitlab/gitops/ci-workflow.png":[31472,31472],"./integrations/gitlab/gitops/gitops-edit-warning.png":[8581,8581],"./integrations/gitlab/gitops/index.mdx":[51381,10741,51381],"./integrations/gitlab/index.mdx":[53975,10741,53975],"./integrations/google-sync/index.mdx":[67852,10741,67852],"./integrations/grafana/index.mdx":[21314,10741,21314],"./integrations/huntress/index.mdx":[20819,10741,20819],"./integrations/huntress/integration-status.png":[70687,70687],"./integrations/huntress/machine-attributes.png":[56961,56961],"./integrations/identity/apple-sso/index.mdx":[8590,10741,8590],"./integrations/identity/apple-sso/sign-up-apple.png":[20761,20761],"./integrations/identity/custom-oidc/index.mdx":[66586,10741,66586],"./integrations/identity/custom-oidc/sign-up-oidc.png":[40237,40237],"./integrations/identity/custom-scim/copy-generated-api-key.png":[93767,93767],"./integrations/identity/custom-scim/generate-api-key.png":[6381,6381],"./integrations/identity/custom-scim/index.mdx":[6261,10741,6261],"./integrations/identity/entra/custom/application-properties.png":[42068,42068],"./integrations/identity/entra/custom/client-secret.png":[59388,59388],"./integrations/identity/entra/custom/create-app.png":[99630,99630],"./integrations/identity/entra/custom/index.mdx":[69689,10741,69689],"./integrations/identity/entra/custom/overview.png":[52626,52626],"./integrations/identity/entra/custom/provisioning.png":[76899,76899],"./integrations/identity/entra/custom/redirect-uri.png":[86661,86661],"./integrations/identity/entra/entra-id-scim/copy-generated-api-key.png":[35501,35501],"./integrations/identity/entra/entra-id-scim/entra-assignment-required.png":[8488,8488],"./integrations/identity/entra/entra-id-scim/entra-id-credentials.jpg":[36695,36695],"./integrations/identity/entra/entra-id-scim/entra-id-provisioning.jpg":[24093,24093],"./integrations/identity/entra/entra-id-scim/index.mdx":[64464,10741,64464],"./integrations/identity/entra/index.mdx":[78959,10741,78959],"./integrations/identity/entra/sign-up-microsoft.png":[37019,37019],"./integrations/identity/github/index.mdx":[26419,10741,26419],"./integrations/identity/google-sso/index.mdx":[67118,10741,67118],"./integrations/identity/google-sso/sign-up-google.png":[13046,13046],"./integrations/identity/index.mdx":[62046,10
5741,62046],"./integrations/identity/okta/index.mdx":[83419,10741,83419],"./integrations/identity/okta/okta-assignments.png":[4786,4786],"./integrations/identity/okta/okta-scim/configure-api-integration.png":[21562,21562],"./integrations/identity/okta/okta-scim/copy-generated-api-key.png":[23788,23788],"./integrations/identity/okta/okta-scim/email-username-format.png":[57207,57207],"./integrations/identity/okta/okta-scim/enable-api-integration.png":[25737,25737],"./integrations/identity/okta/okta-scim/enable-group-sync.png":[91013,91013],"./integrations/identity/okta/okta-scim/enable-user-sync.png":[93157,93157],"./integrations/identity/okta/okta-scim/generate-api-key.png":[9894,9894],"./integrations/identity/okta/okta-scim/group-not-syncing-message.png":[54667,54667],"./integrations/identity/okta/okta-scim/index.mdx":[98051,10741,98051],"./integrations/identity/okta/okta-scim/okta-assignments.png":[41745,41745],"./integrations/identity/okta/okta-scim/provision-users.png":[21676,21676],"./integrations/identity/okta/okta-scim/select-tailscale-instance.png":[36437,36437],"./integrations/identity/okta/okta-scim/sync-groups.png":[40441,40441],"./integrations/identity/onelogin/index.mdx":[54265,10741,54265],"./integrations/identity/passkeys/index.mdx":[89489,10741,89489],"./integrations/identity/passkeys/passkey-create-user.png":[39614,39614],"./integrations/identity/passkeys/passkey-join-user.png":[39161,39161],"./integrations/identity/passkeys/passkey-sign-up.png":[55378,55378],"./integrations/identity/passkeys/passkey-user-added.png":[80800,80800],"./integrations/identity/switch-identity-provider/index.mdx":[49790,10741,49790],"./integrations/index.mdx":[9757,10741,9757],"./integrations/iru/configure-integration.png":[22961,22961],"./integrations/iru/index.mdx":[95440,10741,95440],"./integrations/iru/integration-status.png":[483,483],"./integrations/iru/kandji-add-token.png":[26490,26490],"./integrations/iru/machine-attributes.png":[69320,69320],"./integrations/jamf-pro/configure-integration.png":[18150,18150],"./integrations/jamf-pro/index.mdx":[9037,10741,9037],"./integrations/jamf-pro/integration-status.png":[66040,66040],"./integrations/jamf-pro/jamfpro-add-token.png":[46273,88059],"./integrations/jamf-pro/machine-attributes.png":[89176,89176],"./integrations/jit-access/index.mdx":[74922,10741,74922],"./integrations/jit-conductorone/index.mdx":[3319,10741,3319],"./integrations/jit-opal/index.mdx":[94142,10741,94142],"./integrations/jit-sym/index.mdx":[4693,10741,4693],"./integrations/kolide/configure-integration.png":[52947,52947],"./integrations/kolide/index.mdx":[88724,10741,88724],"./integrations/kolide/integration-status.png":[12927,12927],"./integrations/kolide/machine-attributes.png":[10640,10640],"./integrations/mdm/android/index.mdx":[65544,10741,65544],"./integrations/mdm/android/tinymdm-android-config-ui.png":[54119,54119],"./integrations/mdm/google-workspace/google-workspace-add-managed-configuration.png":[66295,66295],"./integrations/mdm/google-workspace/google-workspace-chromeos-policy.png":[54539,54539],"./integrations/mdm/google-workspace/google-workspace-search-for-apps.png":[31461,31461],"./integrations/mdm/google-workspace/google-workspace-settings.png":[36522,36522],"./integrations/mdm/google-workspace/google-workspace-sidebar.png":[82621,82621],"./integrations/mdm/google-workspace/google-workspace-tailscale-added.png":[64446,64446],"./integrations/mdm/google-workspace/google-workspace-tailscale-search-results.png":[31725,31725],"./integrations/mdm/google-workspace/google-workspace-user-access.png":[25795,25795],"./integrations/mdm/google-workspace/index.mdx":[56997,10741,56997],"./integrations/mdm/index.mdx":[86357,10741,86357],"./integrations/mdm/intune/configure-integration.png":[22703,22703],"./integrations/mdm/intune/index.mdx":[68376,10741,68376],"./integrations/mdm/intune/integration-status.png":[57525,57525],"./integrations/mdm/intune/machine-attributes.png":[54446,54446],"./integrations/mdm/ios/index.mdx":[17790,10741,17790],"./integrations/mdm/iru/index.mdx":[71866,10741,71866],"./integrations/mdm/iru/kandji-1.png":[13476,13476],"./integrations/mdm/iru/kandji-2.png":[71018,71018],"./integrations/mdm/iru/kandji-3.png":[86134,86134],"./integrations/mdm/iru/kandji-4.png":[17361,17361],"./integrations/mdm/iru/kandji-5.png":[28654,28654],"./integrations/mdm/iru/kandji-6.png":[29498,29498],"./integrations/mdm/iru/kandji-7.png":[93502,93502],"./integrations/mdm/iru/kandji-8.png":[72609,72609],"./integrations/mdm/jamf/index.mdx":[62171,10741,62171],"./integrations/mdm/jamf/jamf-app-store-1.png":[36930,36930],"./integrations/mdm/jamf/jamf-app-store-2.png":[88631,88631],"./integrations/mdm/jamf/jamf-app-store-3.png":[99852,99852],"./integrations/mdm/jamf/jamf-app-store-4.png":[57093,57093],"./integrations/mdm/jamf/jamf-app-store-5.png":[14289,14289],"./integrations/mdm/jamf/jamf-app-store-6.png":[10878,10878],"./integrations/mdm/jamf/jamf-policies-1.png":[24548,24548],"./integrations/mdm/jamf/jamf-policies-2.png":[68438,68438],"./integrations/mdm/jamf/jamf-policies-3.png":[14196,14196],"./integrations/mdm/jamf/jamf-policies-4.png":[91207,91207],"./integrations/mdm/jamf/jamf-policies-6.png":[70203,70203],"./integrations/mdm/jamf/jamf-policies-7.png":[58085,58085],"./integrations/mdm/jamf/jamf-policies-8.png":[35047,35047],"./integrations/mdm/jumpcloud/index.mdx":[76531,10741,65867],"./integrations/mdm/jumpcloud/managed-software-tailscale-pkg.png":[63657,63657],"./integrations/mdm/jumpcloud/mobileconfig-title.png":[23650,23650],"./integrations/mdm/jumpcloud/policy-types.png":[8707,46672],"./integrations/mdm/linux/index.mdx":[80455,10741,80455],"./integrations/mdm/mac/imazing-profile-editor-tailscale.png":[26794,26794],"./integrations/mdm/mac/index.mdx":[75698,10741,75698],"./integrations/mdm/mac/system-extension-warning.png":[98584,98584],"./integrations/mdm/microsoft-intune/apple-intune-custom-profile-1.png":[12624,12624],"./integrations/mdm/microsoft-intune/apple-intune-custom-profile-2.png":[92557,92557],"./integrations/mdm/microsoft-intune/apple-intune-custom-profile-3.png":[88969,88969],"./integrations/mdm/microsoft-intune/index.mdx":[82255,10741,82255],"./integrations/mdm/microsoft-intune/windows-create-config-profile-template.png":[870,870],"./integrations/mdm/microsoft-intune/windows-create-profile-assignments.png":[98366,98366],"./integrations/mdm/microsoft-intune/windows-create-profile-basics.png":[68898,68898],"./integrations/mdm/microsoft-intune/windows-create-profile-review.png":[61955,61955],"./integrations/mdm/microsoft-intune/windows-create-profile-scope-tags.png":[19477,19477],"./integrations/mdm/microsoft-intune/windows-devices-configuration-profiles.png":[783
56,7836],"./integrations/mdm/microsoft-intune/windows-import-admx.png":[71601,71601],"./integrations/mdm/microsoft-intune/windows-tailscale-config-settings-allow-incoming-connections.png":[12446,12446],"./integrations/mdm/microsoft-intune/windows-tailscale-config-settings-policies.png":[22720,22720],"./integrations/mdm/microsoft-intune/windows-tailscale-config-settings.png":[65848,65848],"./integrations/mdm/simplemdm/index.mdx":[24232,10741,24232],"./integrations/mdm/tinymdm/index.mdx":[30174,10741,30174],"./integrations/mdm/tinymdm/tinymdm-android-approved-apps-list.png":[24853,24853],"./integrations/mdm/tinymdm/tinymdm-android-apps.png":[76095,76095],"./integrations/mdm/tinymdm/tinymdm-android-config-ui.png":[22989,22989],"./integrations/mdm/tinymdm/tinymdm-android-configuration-item.png":[76799,76799],"./integrations/mdm/tinymdm/tinymdm-android-edit-policy.png":[14617,14617],"./integrations/mdm/tinymdm/tinymdm-android-enterprise-approved-apps.png":[40975,40975],"./integrations/mdm/tinymdm/tinymdm-android-managed-play-store.png":[37268,37268],"./integrations/mdm/tinymdm/tinymdm-android-play-store-listing.png":[16661,16661],"./integrations/mdm/windows-mdm/index.mdx":[59813,10741,59813],"./integrations/mdm/windows-mdm/windows-config-registry.png":[69500,69500],"./integrations/nas/index.mdx":[90260,10741,90260],"./integrations/nextdns/index.mdx":[99638,10741,99638],"./integrations/nextdns/nextdns-global-list.png":[91561,91561],"./integrations/nextdns/nextdns-ipv6.png":[11755,11755],"./integrations/open-vscode/index.mdx":[35910,10741,35910],"./integrations/partners/index.mdx":[5852,10741,5852],"./integrations/partners/mdm/index.mdx":[48169,10741,48169],"./integrations/pikvm/index.mdx":[36782,10741,36782],"./integrations/pikvm/pikvm-web-terminal.png":[99957,99957],"./integrations/proxmox/index.mdx":[97601,10741,1],"./integrations/proxmox/proxmox.png":[82900,82900],"./integrations/pulumi-provider/index.mdx":[20081,10741,20081],"./integrations/qnap/index.mdx":[88508,10741,88508],"./integrations/qnap/qnap-app-center.png":[98920,98920],"./integrations/qnap/qnap-login.png":[35857,35857],"./integrations/secret-scanning/index.mdx":[50308,10741,50308],"./integrations/sentinelone/configure-sentinelone-integration.png":[5845,16439],"./integrations/sentinelone/index.mdx":[74637,10741,74637],"./integrations/sentinelone/integration-status.png":[83186,83186],"./integrations/sentinelone/machine-attributes.png":[13423,13423],"./integrations/sentinelone/sentinelone-serviceuser.png":[40639,40639],"./integrations/synology/index.mdx":[88449,10741,88449],"./integrations/synology/synology-login.png":[77393,77393],"./integrations/synology/synology-packagecenter.png":[24607,24607],"./integrations/terraform-provider/index.mdx":[7710,10741,7710],"./integrations/truenas/index.mdx":[25468,10741,25468],"./integrations/unraid/index.mdx":[86992,10741,86992],"./integrations/vscode-extension/full-window.png":[83085,83085],"./integrations/vscode-extension/funnel_palette_demo_web.mp4":[48211,48211],"./integrations/vscode-extension/funnel_panel_demo_web.mp4":[59643,59643],"./integrations/vscode-extension/funnel_port_disco_demo_web.mp4":[97556,97556],"./integrations/vscode-extension/index.mdx":[67775,10741,67775],"./integrations/vscode-extension/machine-explorer.png":[33621,33621],"./integrations/vscode-extension/panel-view.png":[70160,70160],"./integrations/vscode-extension/remote-explorer.svg":[96523,96523],"./integrations/vscode-extension/terminal.svg":[5652,5652],"./integrations/web-servers/caddy/caddy-certificates/index.mdx":[86315,10741,86315],"./integrations/web-servers/caddy/index.mdx":[22088,10741,22088],"./integrations/web-servers/index.mdx":[40853,10741,40853],"./integrations/web-servers/traefik/index.mdx":[3035,10741,3035],"./integrations/web-servers/traefik/traefik-certificates/index.mdx":[59408,10741,59408],"./kubernetes-operator/_d2-icons/_styles.d2":[19309,19309],"./kubernetes-operator/_d2-icons/api-server.svg":[96348,96348],"./kubernetes-operator/_d2-icons/pod.svg":[29723,29723],"./kubernetes-operator/_d2-icons/secret.svg":[36489,36489],"./kubernetes-operator/_d2-icons/sts.svg":[37065,37065],"./kubernetes-operator/_d2-icons/svc.svg":[528,528],"./kubernetes-operator/_d2-icons/tailscale-icon-blk.svg":[24381,24381],"./kubernetes-operator/_d2-icons/tailscale-squircle.svg":[62836,62836],"./kubernetes-operator/_diagrams/api-server-proxy-dedicated.d2":[597,597],"./kubernetes-operator/_diagrams/api-server-proxy-dedicated.svg":[85495,85495],"./kubernetes-operator/_diagrams/api-server-proxy.d2":[37398,37398],"./kubernetes-operator/_diagrams/api-server-proxy.svg":[52115,52115],"./kubernetes-operator/_diagrams/connector-architecture.d2":[23372,23372],"./kubernetes-operator/_diagrams/connector-architecture.svg":[70832,70832],"./kubernetes-operator/_diagrams/l3-egress-architecture.d2":[94552,94552],"./kubernetes-operator/_diagrams/l3-egress-architecture.svg":[1370,1370],"./kubernetes-operator/_diagrams/l3-standalone-ingress-architecture.d2":[94908,94908],"./kubernetes-operator/_diagrams/l3-standalone-ingress-architecture.svg":[43603,43603],"./kubernetes-operator/_diagrams/l7-standalone-ingress-architecture.d2":[93737,93737],"./kubernetes-operator/_diagrams/l7-standalone-ingress-architecture.svg":[83761,83761],"./kubernetes-operator/_diagrams/operator-overview.d2":[5798,6840],"./kubernetes-operator/_diagrams/operator-overview.svg":[89219,89219],"./kubernetes-operator/_diagrams/proxygroup-egress-architecture.d2":[10229,10229],"./kubernetes-operator/_diagrams/proxygroup-egress-architecture.svg":[23190,23190],"./kubernetes-operator/_diagrams/proxygroup-ingress-architecture.d2":[74715,74715],"./kubernetes-operator/_diagrams/proxygroup-ingress-architecture.svg":[68599,68599],"./kubernetes-operator/_diagrams/recorder-architecture.d2":[19221,19221],"./kubernetes-operator/_diagrams/recorder-architecture.svg":[1907,1907],"./kubernetes-operator/api-server-access/auth-and-rbac/index.mdx":[14117,10741,14117],"./kubernetes-operator/api-server-access/index.mdx":[5181,10741,5181],"./kubernetes-operator/api-server-access/noauth-mode/index.mdx":[94275,10741,94275],"./kubernetes-operator/api-server-access/setup-api-over-tailscale/index.mdx":[66300,10741,66300],"./kubernetes-operator/concepts/architecture/index.mdx":[78279,10741,78279],"./kubernetes-operator/concepts/dnsconfig/index.mdx":[17704,10741,17704],"./kubernetes-operator/concepts/index.mdx":[64406,10741,64406],"./kubernetes-operator/concepts/proxyclass/index.mdx":[35881,10741,3588
51],"./kubernetes-operator/concepts/proxygroup/index.mdx":[58357,10741,58357],"./kubernetes-operator/connector/deploy-app-connector/index.mdx":[76837,10741,69761],"./kubernetes-operator/connector/deploy-subnet-router/index.mdx":[45465,10741,45465],"./kubernetes-operator/connector/index.mdx":[12120,10741,12120],"./kubernetes-operator/egress/access-ip-behind-subnet-router/index.mdx":[18397,10741,18397],"./kubernetes-operator/egress/access-tailnet-service/index.mdx":[56887,10741,56887],"./kubernetes-operator/egress/enable-magicdns-resolution/index.mdx":[87068,10741,87068],"./kubernetes-operator/egress/expose-rds-to-tailnet/index.mdx":[13560,10741,13560],"./kubernetes-operator/egress/index.mdx":[28378,10741,28378],"./kubernetes-operator/images/image1.png":[84842,84842],"./kubernetes-operator/images/image2.png":[29348,29348],"./kubernetes-operator/images/image3.png":[34279,34279],"./kubernetes-operator/images/image4.png":[9855,9855],"./kubernetes-operator/images/image5.png":[39586,39586],"./kubernetes-operator/index.mdx":[87236,10741,87236],"./kubernetes-operator/ingress/expose-workload-to-internet/index.mdx":[75901,10741,75901],"./kubernetes-operator/ingress/expose-workload-to-tailnet-l3/index.mdx":[20435,10741,20435],"./kubernetes-operator/ingress/expose-workload-to-tailnet-l7/index.mdx":[19215,10741,19215],"./kubernetes-operator/ingress/index.mdx":[93379,10741,93379],"./kubernetes-operator/ingress/multi-cluster-service-mirroring/index.mdx":[69442,10741,69442],"./kubernetes-operator/ingress/multi-cluster/index.mdx":[37562,10741,37562],"./kubernetes-operator/install-operator/index.mdx":[76183,10741,76183],"./kubernetes-operator/manage-and-configure/configure-static-endpoints/index.mdx":[89414,10741,89414],"./kubernetes-operator/manage-and-configure/custom-machine-names/index.mdx":[96658,10741,96658],"./kubernetes-operator/manage-and-configure/enable-debug-endpoints/index.mdx":[17085,10741,17085],"./kubernetes-operator/manage-and-configure/expose-metrics/index.mdx":[72415,10741,72415],"./kubernetes-operator/manage-and-configure/high-availability/index.mdx":[73576,10741,73576],"./kubernetes-operator/manage-and-configure/index.mdx":[29430,10741,29430],"./kubernetes-operator/manage-and-configure/multi-tailnet/index.mdx":[26447,10741,26447],"./kubernetes-operator/manage-and-configure/proxy-group-policy/index.mdx":[93489,10741,93489],"./kubernetes-operator/manage-and-configure/workload-identity-federation/index.mdx":[51541,10741,51541],"./kubernetes-operator/peer-relay/index.mdx":[36855,10741,36855],"./kubernetes-operator/quickstart/index.mdx":[41099,10741,41099],"./kubernetes-operator/recorder/deploy-tsrecorder/index.mdx":[29330,10741,29330],"./kubernetes-operator/recorder/index.mdx":[67606,10741,67606],"./kubernetes-operator/recorder/kubectl-session-recording/index.mdx":[65892,10741,65892],"./kubernetes-operator/reference/compatibility/index.mdx":[19386,10741,19386],"./kubernetes-operator/reference/index.mdx":[59491,10741,59491],"./kubernetes-operator/reference/ipv6/index.mdx":[53394,10741,53394],"./kubernetes-operator/reference/limitations/index.mdx":[15454,10741,15454],"./kubernetes-operator/reference/rbac/index.mdx":[72586,10741,72586],"./kubernetes-operator/reference/tags/index.mdx":[19266,10741,19266],"./kubernetes-operator/reference/troubleshooting/index.mdx":[9626,10741,9626],"./privileged-access-management/architecture-and-concepts/index.mdx":[16956,10741,16956],"./privileged-access-management/connectors/high-availability/index.mdx":[41470,10741,76837],"./privileged-access-management/connectors/index.mdx":[3383,10741,3383],"./privileged-access-management/connectors/install-ansible/index.mdx":[47929,10741,47929],"./privileged-access-management/connectors/install/index.mdx":[50051,10741,50051],"./privileged-access-management/connectors/overview/index.mdx":[22223,10741,22223],"./privileged-access-management/get-started/index.mdx":[54157,10741,54157],"./privileged-access-management/how-to/access-database/amazon-rds/index.mdx":[60244,10741,60244],"./privileged-access-management/how-to/access-database/elasticsearch/index.mdx":[43405,10741,43405],"./privileged-access-management/how-to/access-database/google-cloud-sql/index.mdx":[57275,10
5741,95112],"./privileged-access-management/how-to/access-database/index.mdx":[45503,10741,45503],"./privileged-access-management/how-to/access-database/mongodb/index.mdx":[81742,10741,81742],"./privileged-access-management/how-to/access-database/mysql/index.mdx":[82867,10741,82867],"./privileged-access-management/how-to/access-database/postgresql/index.mdx":[61382,10741,61382],"./privileged-access-management/how-to/access-http-service/grafana/index.mdx":[20573,10741,20573],"./privileged-access-management/how-to/access-http-service/index.mdx":[45692,10741,45692],"./privileged-access-management/how-to/access-http-service/troubleshoot-sso-failure/index.mdx":[16251,10741,16251],"./privileged-access-management/how-to/access-kubernetes/index.mdx":[9127,10741,9127],"./privileged-access-management/how-to/access-s3/index.mdx":[96981,10741,96981],"./privileged-access-management/how-to/access-ssh/built-in-ssh/index.mdx":[60490,10741,60490],"./privileged-access-management/how-to/access-ssh/ec2-instance/index.mdx":[48611,10741,48611],"./privileged-access-management/how-to/access-ssh/ec2-ssm/index.mdx":[53595,10741,53595],"./privileged-access-management/how-to/access-ssh/ecs-ssm/index.mdx":[38687,10741,38687],"./privileged-access-management/how-to/access-ssh/index.mdx":[40293,10741,40293],"./privileged-access-management/how-to/access-ssh/remote-ssh/index.mdx":[22162,10741,22162],"./privileged-access-management/how-to/access-tcp-service/index.mdx":[8838,10741,8838],"./privileged-access-management/how-to/access-windows-server-rdp/index.mdx":[82114,10741,82114],"./privileged-access-management/how-to/control-access/index.mdx":[68650,10741,68650],"./privileged-access-management/how-to/custom-dns-domain/index.mdx":[37621,10741,37621],"./privileged-access-management/how-to/index.mdx":[24089,10741,24089],"./privileged-access-management/how-to/manage-resources-terraform/index.mdx":[41920,10741,41920],"./privileged-access-management/how-to/manage-secrets/index.mdx":[24580,10741,24580],"./privileged-access-management/how-to/manage-secrets/secretValue.png":[5200,5200],"./privileged-access-management/how-to/manage-secrets/upstreamConfiguration.png":[34623,34623],"./privileged-access-management/how-to/manage-secrets/upstreamInformation.png":[80398,80398],"./privileged-access-management/how-to/session-recordings-s3/index.mdx":[91162,10741,91162],"./privileged-access-management/index.mdx":[73212,10741,73212],"./privileged-access-management/reference/faq/index.mdx":[17451,10741,17451],"./privileged-access-management/reference/index.mdx":[62190,10741,62190],"./privileged-access-management/reference/sandbox-servers/index.mdx":[96996,10741,96996],"./privileged-access-management/reference/tailzero/index.mdx":[24532,10741,24532],"./privileged-access-management/reference/troubleshooting/index.mdx":[64419,10741,64419],"./privileged-access-management/service-accounts/index.mdx":[61711,10741,61711],"./privileged-access-management/services/index.mdx":[45065,10741,45065],"./privileged-access-management/services/services.png":[23215,23215],"./privileged-access-management/session-logs/index.mdx":[21022,10741,21022],"./privileged-access-management/what-is-tailscale-pam/index.mdx":[12760,10741,12760],"./reference/admin-console-session-expiry/index.mdx":[3682,10741,3682],"./reference/best-practices/app-connectors/deferred-route-approval.png":[74529,74529],"./reference/best-practices/app-connectors/index.mdx":[56762,10741,56762],"./reference/best-practices/app-connectors/preconfiguration.png":[90094,90094],"./reference/best-practices/cloud/coreweave/index.mdx":[34031,10741,34031],"./reference/best-practices/cloud/index.mdx":[399,10741,399],"./reference/best-practices/device-hardening/index.mdx":[18560,10741,18560],"./reference/best-practices/index.mdx":[72881,10741,72881],"./reference/best-practices/performance/index.mdx":[56080,10741,56080],"./reference/best-practices/production/index.mdx":[59093,10741,59093],"./reference/best-practices/security/index.mdx":[89338,10741,89338],"./reference/cgnat-interoperability/index.mdx":[57582,10741,57582],"./reference/connection-types/index.mdx":[22331,10
5741,22331],"./reference/contact-preferences/index.mdx":[68754,10741,68754],"./reference/coordination-server-down/index.mdx":[23667,10741,23667],"./reference/debug-menu/index.mdx":[64483,10741,64483],"./reference/deployment-checklist/index.mdx":[24313,10741,24313],"./reference/derp-servers/custom-derp-servers/index.mdx":[37180,10741,37180],"./reference/derp-servers/index.mdx":[27072,10741,27072],"./reference/device-connectivity/index.mdx":[78920,10741,78920],"./reference/devices-without-tailscale/index.mdx":[41279,10741,41279],"./reference/dns-in-tailscale/dns-settings.png":[59779,59779],"./reference/dns-in-tailscale/index.mdx":[62578,10741,62578],"./reference/dns-in-tailscale/nameserver-dropdown.png":[55112,55112],"./reference/dns-in-tailscale/search-domains.png":[59202,59202],"./reference/examples/acls/index.mdx":[79763,10741,79763],"./reference/examples/funnel/funnel-hello-world.png":[75662,74329],"./reference/examples/funnel/index.mdx":[4507,10741,4507],"./reference/examples/grants/index.mdx":[64529,10741,64529],"./reference/examples/index.mdx":[97274,10741,97274],"./reference/examples/serve/index.mdx":[54412,10741,15390],"./reference/examples/serve/serve-hello-world.png":[5394,5394],"./reference/examples/tsnet-hello-world/hello-ts-net-remove.jpg":[69634,69634],"./reference/examples/tsnet-hello-world/index.mdx":[84876,10741,84876],"./reference/faq/dns-rebinding/index.mdx":[42374,10741,42374],"./reference/faq/dns-resolv-conf/index.mdx":[31423,10741,31423],"./reference/faq/firewall-ports/index.mdx":[66666,10741,66666],"./reference/faq/index.mdx":[68201,10741,68201],"./reference/faq/ipv6/index.mdx":[81534,10741,81534],"./reference/faq/magicdns/index.mdx":[49634,10741,49634],"./reference/faq/other-vpns/index.mdx":[9328,10741,9328],"./reference/funnel-vs-sharing/index.mdx":[75802,10741,75802],"./reference/glossary/aws-client-vpn-tailscale/index.mdx":[45872,10741,45872],"./reference/glossary/cisco-tailscale/index.mdx":[84410,10741,84410],"./reference/glossary/fortinet-tailscale/index.mdx":[59688,10741,59688],"./reference/glossary/globalprotect-tailscale/index.mdx":[88029,10741,88029],"./reference/glossary/index.mdx":[87403,10741,87403],"./reference/grants-vs-acls/index.mdx":[80597,10741,80597],"./reference/index.mdx":[68783,10741,68783],"./reference/interoperability/index.mdx":[5837,10741,5837],"./reference/invite-only-feature/generate-invite-link.png":[89656,89656],"./reference/invite-only-feature/index.mdx":[74559,10741,74559],"./reference/invite-only-feature/invite-only-dialog.png":[93701,93701],"./reference/inviting-vs-sharing/index.mdx":[75581,10741,75581],"./reference/ip-pool/edit-machine-ip.png":[29042,29042],"./reference/ip-pool/index.mdx":[2297,10741,2297],"./reference/kernel-vs-userspace-routers/index.mdx":[54968,10741,54968],"./reference/key-prefixes/index.mdx":[21640,10741,21640],"./reference/key-secret-management/index.mdx":[6038,10741,6038],"./reference/kubernetes-operator-api-request-event-recording/index.mdx":[49622,10741,49622],"./reference/linux-dns/index.mdx":[32625,10741,32625],"./reference/logging-streaming-events/index.mdx":[74283,10741,74283],"./reference/messages/client/coordination-server-issue/index.mdx":[47879,10741,47879],"./reference/messages/client/could-not-apply-config/index.mdx":[22183,10741,22183],"./reference/messages/client/docker-stateful-filtering/index.mdx":[6470,10741,6470],"./reference/messages/client/index.mdx":[28944,10741,28944],"./reference/messages/client/invalid-packet-filter/index.mdx":[40187,10741,40187],"./reference/messages/client/local-log-config-error/index.mdx":[21386,10741,21386],"./reference/messages/client/magicsock-receive-func-error/index.mdx":[31204,10741,31204],"./reference/messages/client/network-map-response-timeout/index.mdx":[2432,10741,2432],"./reference/messages/client/network-status/index.mdx":[85160,10741,85160],"./reference/messages/client/no-derp-connection/index.mdx":[1931,10741,1931],"./reference/messages/client/no-derp-home/index.mdx":[85266,10741,85266],"./reference/messages/client/not-in-map-poll/index.mdx":[88666,10741,88666],"./reference/messages/client/resolv-conf-overwritten/index.mdx":[35665,10741,35665],"./reference/messages/client/screen-time-controlclient/index.mdx":[71041,10741,71041],"./reference/messages/client/security-update-available/index.mdx":[58431,10741,7504],"./reference/messages/client/set-network-category-failed/index.mdx":[54670,10741,54670],"./reference/messages/client/ssh-unavailable-selinux-enabled/index.mdx":[36616,10741,36616],"./reference/messages/client/tls-connection-failed/index.mdx":[3206,10741,3206],"./reference/messages/client/update-available/index.mdx":[22397,10741,22397],"./reference/messages/client/using-unstable-version/index.mdx":[51300,10741,51300],"./reference/messages/console/account-not-admin/index.mdx":[94677,10741,94677],"./reference/messages/console/auth-failed-sso/index.mdx":[21542,10741,21542],"./reference/messages/console/duplicate-accounts/duplicate-account-banner.png":[62968,62968],"./reference/messages/console/duplicate-accounts/index.mdx":[5547,10741,5547],"./reference/messages/console/index.mdx":[28377,10741,28377],"./reference/messages/console/login-name-change/index.mdx":[89225,10741,89225],"./reference/messages/console/multi-user-login/index.mdx":[54298,10741,54298],"./reference/messages/console/no-access/index.mdx":[47607,10741,47607],"./reference/messages/console/no-auth-service/index.mdx":[44480,10741,44480],"./reference/messages/console/org-has-restrictions/index.mdx":[79969,10741,79969],"./reference/messages/console/reached-use-limit/index.mdx":[25216,10741,25216],"./reference/messages/console/sharing-failure/index.mdx":[57315,10741,57315],"./reference/messages/index.mdx":[20468,10741,20468],"./reference/migrate-acls-grants/index.mdx":[47717,10741,4771
57],"./reference/multifactor-auth/index.mdx":[59961,10741,59961],"./reference/multiple-recorder-nodes/index.mdx":[6329,10741,6329],"./reference/netfilter-modes/index.mdx":[73242,10741,73242],"./reference/node-attributes-vs-app-capabilities/index.mdx":[148,10741,148],"./reference/ping-types/index.mdx":[12298,10741,12298],"./reference/procurement/index.mdx":[10439,10741,10439],"./reference/quad100/index.mdx":[65897,10741,65897],"./reference/reauth-under-tailnet-lock/index.mdx":[64074,10741,64074],"./reference/reference-architectures/aws/aws-reference-architecture.drawio":[2531,2531],"./reference/reference-architectures/aws/aws-reference-architecture.png":[10218,10218],"./reference/reference-architectures/aws/index.mdx":[53232,10741,53232],"./reference/reference-architectures/azure/azure-reference-architecture.drawio":[70962,70962],"./reference/reference-architectures/azure/azure-reference-architecture.png":[33196,33196],"./reference/reference-architectures/azure/index.mdx":[22707,10741,22707],"./reference/reference-architectures/gcp/gcp-reference-architecture.drawio":[53810,53810],"./reference/reference-architectures/gcp/gcp-reference-architecture.png":[59731,59731],"./reference/reference-architectures/gcp/index.mdx":[22020,10741,22020],"./reference/reference-architectures/index.mdx":[45274,10741,45274],"./reference/reserved-ip-addresses/index.mdx":[63386,10741,63386],"./reference/route-injection/index.mdx":[81046,10741,81046],"./reference/ssh-over-tailscale/index.mdx":[59861,10741,59861],"./reference/stun-protocol/index.mdx":[68899,10741,68899],"./reference/subnet-site-to-site/index.mdx":[61541,10741,61541],"./reference/support-options/index.mdx":[3554,10741,3554],"./reference/syntax/grants/index.mdx":[64966,10741,64966],"./reference/syntax/index.mdx":[20226,10741,20226],"./reference/syntax/policy-file/index.mdx":[7755,10741,27671],"./reference/tailnet-passkey-admin/index.mdx":[98298,10741,98298],"./reference/tailscale-api/index.mdx":[13857,10741,13857],"./reference/tailscale-cli/funnel/index.mdx":[60274,10741,60274],"./reference/tailscale-cli/index.mdx":[92029,10741,92029],"./reference/tailscale-cli/lock/index.mdx":[40367,10741,40367],"./reference/tailscale-cli/serve/index.mdx":[72376,10741,72376],"./reference/tailscale-cli/up/index.mdx":[97500,10741,97500],"./reference/tailscale-client-metrics/index.mdx":[51488,10741,51488],"./reference/tailscale-client-versions/index.mdx":[97792,10741,97792],"./reference/tailscale-community-projects/index.mdx":[65594,10741,65594],"./reference/tailscale-fedramp-fips140/index.mdx":[87811,10741,87811],"./reference/tailscale-release-stages/index.mdx":[22318,10741,22318],"./reference/tailscale-release-stages/release-stage-indicator-admin-console.png":[70944,70944],"./reference/tailscale-release-stages/release-stage-indicator-docs.png":[26288,26288],"./reference/tailscale-services-configuration-file/index.mdx":[88812,10741,88812],"./reference/tailscaled/index.mdx":[90275,10741,90275],"./reference/tailscaled/tailscaled-config-file/index.mdx":[73243,10741,73243],"./reference/targets-and-selectors/index.mdx":[11010,10741,11010],"./reference/targets-and-selectors/table_explanation.mdx":[57669,10741,57669],"./reference/troubleshooting/apple/cant-access-appletv/index.mdx":[18149,10741,18149],"./reference/troubleshooting/apple/cant-access-macos-from-iphone/index.mdx":[82681,10741,82681],"./reference/troubleshooting/apple/index.mdx":[86250,10741,86250],"./reference/troubleshooting/apple/macos-doesnt-display-tailscale-icon/index.mdx":[59602,10741,59602],"./reference/troubleshooting/apple/macos-ping-issues/index.mdx":[7070,10741,7070],"./reference/troubleshooting/apple/macos-stuck-loading-backend/index.mdx":[47509,10741,47509],"./reference/troubleshooting/apple/macos-system-extension-errors/index.mdx":[97694,10741,97694],"./reference/troubleshooting/basic-network-troubleshooting/index.mdx":[97409,10741,97409],"./reference/troubleshooting/cloud/aws-google-routes/index.mdx":[73604,10741,73604],"./reference/troubleshooting/cloud/index.mdx":[39969,10741,39969],"./reference/troubleshooting/cloud/oracle-cloud/index.mdx":[85922,10741,85922],"./reference/troubleshooting/cloud/subnet-connectivity/index.mdx":[5507,10741,5507],"./reference/troubleshooting/connectivity/antivirus-failure/index.mdx":[95339,10741,95339],"./reference/troubleshooting/connectivity/captive-portal-failure/index.mdx":[47869,10741,47869],"./reference/troubleshooting/connectivity/connect-device-failure/index.mdx":[5404,10741,54
504],"./reference/troubleshooting/connectivity/connect-internet-failure/index.mdx":[50046,10741,50046],"./reference/troubleshooting/connectivity/connect-lan-failure/index.mdx":[4858,10741,4858],"./reference/troubleshooting/connectivity/download-client-failure/index.mdx":[69763,10741,69763],"./reference/troubleshooting/connectivity/index.mdx":[7455,10741,7455],"./reference/troubleshooting/containers/index.mdx":[39652,10741,39652],"./reference/troubleshooting/containers/kubernetes-operator/byod-gateway-api/index.mdx":[39668,10741,39668],"./reference/troubleshooting/containers/kubernetes-operator/index.mdx":[43965,10741,43965],"./reference/troubleshooting/containers/proxmox/index.mdx":[80401,10741,80401],"./reference/troubleshooting/grants/index.mdx":[30965,10741,30965],"./reference/troubleshooting/index.mdx":[89192,10741,89192],"./reference/troubleshooting/linux/index.mdx":[43650,10741,35942],"./reference/troubleshooting/linux/linux-dns-issues/index.mdx":[58068,10741,58068],"./reference/troubleshooting/linux/linux-operator-permission/index.mdx":[48425,10741,48425],"./reference/troubleshooting/linux/linux-unseal-state-file/index.mdx":[12603,10741,12603],"./reference/troubleshooting/mobile/battery-drains/index.mdx":[39715,10741,39715],"./reference/troubleshooting/mobile/force-or-bypass-apps/index.mdx":[56396,10741,56396],"./reference/troubleshooting/mobile/index.mdx":[97167,10741,97167],"./reference/troubleshooting/network-configuration/cgnat-conflicts/index.mdx":[87538,10741,87538],"./reference/troubleshooting/network-configuration/derp-routing/index.mdx":[10453,10741,10453],"./reference/troubleshooting/network-configuration/disable-subnet-route-masquerading/index.mdx":[49236,10741,49236],"./reference/troubleshooting/network-configuration/dns-errors-internal-service/index.mdx":[76304,10741,76304],"./reference/troubleshooting/network-configuration/hard-nat-issues/index.mdx":[54219,10741,54219],"./reference/troubleshooting/network-configuration/index.mdx":[26205,10741,26205],"./reference/troubleshooting/network-configuration/inspect-unencrypted-packets/index.mdx":[40133,10741,40133],"./reference/troubleshooting/network-configuration/ip-forwarding-errors-advertise/index.mdx":[52875,10741,52875],"./reference/troubleshooting/network-configuration/lan-traffic-overlapping-subnets/index.mdx":[42828,10741,42828],"./reference/troubleshooting/network-configuration/multiple-devices-same-100-x-ip-address/index.mdx":[47463,10741,47463],"./reference/troubleshooting/network-configuration/overlapping-subnet-route-failover/index.mdx":[12482,10741,12482],"./reference/troubleshooting/network-configuration/route-traffic-default-node/index.mdx":[6737,10741,6737],"./reference/troubleshooting/network-configuration/soracom-issues/index.mdx":[37181,10741,37181],"./reference/troubleshooting/network-configuration/sunrise-communications-issues/index.mdx":[87998,10741,87998],"./reference/troubleshooting/network-configuration/tailscale-domains-sites-unreachable/index.mdx":[79634,10741,79634],"./reference/troubleshooting/network-configuration/tailscale-ip-routes/index.mdx":[71424,10741,71424],"./reference/troubleshooting/network-configuration/tally-erp-issues/index.mdx":[60704,10741,60704],"./reference/troubleshooting/network-configuration/tcp-connection-two-devices/index.mdx":[92273,10741,92273],"./reference/troubleshooting/override-local-dns-toggle.png":[11004,11004],"./reference/troubleshooting/poor-performance-internet/index.mdx":[25025,10741,25025],"./reference/troubleshooting/poor-performance-tailnet/index.mdx":[82683,10741,82683],"./reference/troubleshooting/resolve-domain-names-failure/index.mdx":[73119,10741,73119],"./reference/troubleshooting/windows/index.mdx":[4179,10741,70884],"./reference/troubleshooting/windows/supported-windows-versions/index.mdx":[58438,10741,58438],"./reference/troubleshooting/windows/windows-install-error/index.mdx":[9565,10741,9565],"./reference/troubleshooting/windows/windows-ping-issues/index.mdx":[81561,10741,81561],"./reference/troubleshooting/windows/windows-rdp-login-issue/index.mdx":[7360,10741,7360],"./reference/troubleshooting/windows/windows-rdp-user-account-restr
5iction/index.mdx":[15464,10741,15464],"./reference/troubleshooting/windows/windows-systray-no-internet-access/index.mdx":[46985,10741,46985],"./reference/troubleshooting/windows/windows-unseal-state-file-error/index.mdx":[68785,10741,68785],"./reference/troubleshooting/windows/windows-upgrade-error/index.mdx":[78225,10741,78225],"./reference/trust-credentials/index.mdx":[72810,10741,72810],"./reference/tsidp-configuration/index.mdx":[66839,10741,51522],"./reference/tsnet-server-api/index.mdx":[66401,10741,66401],"./reference/user-roles/index.mdx":[80618,10741,80618],"./reference/visual-editor/auto-approvers-exit-nodes-add.png":[44121,44121],"./reference/visual-editor/auto-approvers-route-add.png":[65547,65547],"./reference/visual-editor/auto-approvers.png":[14913,14913],"./reference/visual-editor/device-posture-add.png":[4165,4165],"./reference/visual-editor/device-posture-edit.png":[21437,21437],"./reference/visual-editor/device-posture.png":[58522,58522],"./reference/visual-editor/general-rules-add.png":[36445,36445],"./reference/visual-editor/general-rules.png":[52623,52623],"./reference/visual-editor/groups-add.png":[5967,5967],"./reference/visual-editor/groups.png":[79778,79778],"./reference/visual-editor/hosts-add.png":[74584,74584],"./reference/visual-editor/hosts-edit.png":[21102,21102],"./reference/visual-editor/hosts.png":[2095,2095],"./reference/visual-editor/index.mdx":[79837,10741,79837],"./reference/visual-editor/ip-sets-add.png":[78563,78563],"./reference/visual-editor/ip-sets.png":[50146,50146],"./reference/visual-editor/node-attribute-add.png":[25318,25318],"./reference/visual-editor/node-attributes-edit.png":[14148,14148],"./reference/visual-editor/node-attributes.png":[15090,15090],"./reference/visual-editor/tags-add.png":[61195,61195],"./reference/visual-editor/tags-edit.png":[22424,22424],"./reference/visual-editor/tags.png":[41235,41235],"./reference/visual-editor/tailscale-ssh-edit.png":[24738,24738],"./reference/visual-editor/tailscale-ssh.png":[97847,78934],"./reference/visual-editor/tests-general-add.png":[20011,20011],"./reference/visual-editor/tests-general-edit.png":[79340,79340],"./reference/visual-editor/tests-ssh-add.png":[29285,29285],"./reference/visual-editor/tests.png":[62761,62761],"./reference/wireguard-dynamic-ip/index.mdx":[11110,10741,11110],"./solutions/access-remote-desktops-using-windows-rdp/firewall-rules.png":[9322,9322],"./solutions/access-remote-desktops-using-windows-rdp/index.mdx":[31004,10741,31004],"./solutions/access-remote-desktops-using-windows-rdp/iprange.png":[57536,57536],"./solutions/access-remote-desktops-using-windows-rdp/machines-page.png":[13713,13713],"./solutions/access-remote-desktops-using-windows-rdp/tcp-scope-modded.png":[17946,17946],"./solutions/access-remote-desktops-using-windows-rdp/tcp-scope-unmodded.png":[27934,27934],"./solutions/access-remote-desktops-using-windows-rdp/welcome-page.png":[11616,11616],"./solutions/access-remote-desktops-using-windows-rdp/windef-adsec.png":[75943,75943],"./solutions/access-remote-desktops-with-rustdesk/index.mdx":[82134,10741,82134],"./solutions/access-remote-desktops-with-rustdesk/machines-page.png":[62690,62690],"./solutions/access-remote-desktops-with-rustdesk/welcome-page.png":[44260,44260],"./solutions/block-ads-all-devices-anywhere-using-raspberry-pi/configure-dns.gif":[63166,63166],"./solutions/block-ads-all-devices-anywhere-using-raspberry-pi/index.mdx":[42175,10741,42175],"./solutions/block-ads-all-devices-anywhere-using-raspberry-pi/machines-page.png":[83726,83726],"./solutions/block-ads-all-devices-anywhere-using-raspberry-pi/welcome-page.png":[87208,87208],"./solutions/code-on-ipad-vscode-caddy-code-server/code-server-runing.png":[15950,15950],"./solutions/code-on-ipad-vscode-caddy-code-server/index.mdx":[37906,10741,37906],"./solutions/connect-github-cicd-workflows-to-private-infrastructure-without-public-exposure/index.mdx":[34752,10741,34752],"./solutions/connect-kubernetes-pods-to-tailnet-using-sidecar/index.mdx":[46576,10741,46576],"./solutions/create-a-secure-connection-to-mongodb-atlas/index.mdx":[44070,10741,44070],"./solutions/index.mdx":[85074,10741,85074],"./solutions/kubernetes-operator-byod-gateway-api/gateway-api-custom-domain-architecture.png":[12916,12916],"./solutions/kubernetes-operator-byod-gateway-api/index.mdx":[69462,10741,69462],"./solutions/manage-multi-cluster-kubernetes-deployments-argocd/
5argocd-multi-cluster-architecture.png":[31409,31409],"./solutions/manage-multi-cluster-kubernetes-deployments-argocd/index.mdx":[28386,10741,28386],"./solutions/migrate-legacy-vpn-tailscale/add-first-device.png":[93261,93261],"./solutions/migrate-legacy-vpn-tailscale/add-second-device.png":[26276,26276],"./solutions/migrate-legacy-vpn-tailscale/edit-tags.png":[27158,27158],"./solutions/migrate-legacy-vpn-tailscale/index.mdx":[43379,10741,43379],"./solutions/migrate-legacy-vpn-tailscale/machines-page.png":[39486,39486],"./solutions/migrate-legacy-vpn-tailscale/users-page.png":[68799,68799],"./solutions/migrate-legacy-vpn-tailscale/welcome-page.png":[82709,82709],"./solutions/migrate-openvpn-tailscale/add-first-device.png":[9226,9226],"./solutions/migrate-openvpn-tailscale/add-second-device.png":[48469,48469],"./solutions/migrate-openvpn-tailscale/edit-tags.png":[35963,35963],"./solutions/migrate-openvpn-tailscale/index.mdx":[45602,10741,45602],"./solutions/migrate-openvpn-tailscale/machines-page.png":[98124,98124],"./solutions/migrate-openvpn-tailscale/users-page.png":[52330,52330],"./solutions/migrate-openvpn-tailscale/welcome-page.png":[47628,47628],"./solutions/protect-postgresql-unencrypted-macbooks/index.mdx":[7003,10741,7003],"./solutions/reduce-aperture-token-costs-with-tsheadroom/index.mdx":[33568,10741,33568],"./solutions/reduce-aperture-token-costs-with-tsheadroom/tsheadroom-flow.svg":[42560,42560],"./solutions/route-ai-code-reviews-through-aperture/index.mdx":[77748,10741,77748],"./solutions/secure-traffic-public-wifi-appletv/index.mdx":[1451,10741,1451],"./solutions/secure-traffic-public-wifi-appletv/machines-page.png":[76912,76912],"./solutions/secure-traffic-public-wifi-appletv/welcome-page.png":[91647,91647],"./solutions/set-up-dogcam/browser.jpg":[68524,68524],"./solutions/set-up-dogcam/index.mdx":[87151,10741,87151],"./solutions/set-up-dogcam/raspberry-pi.jpg":[6219,6219],"./solutions/set-up-minecraft/add-server.png":[30863,30863],"./solutions/set-up-minecraft/index.mdx":[50204,10741,50204],"./solutions/set-up-minecraft/server-details.png":[94885,931],"./solutions/set-up-nixos-minecraft/droplet-tier.png":[44452,44452],"./solutions/set-up-nixos-minecraft/host-info.png":[24203,24203],"./solutions/set-up-nixos-minecraft/index.mdx":[44687,10741,44687],"./solutions/set-up-nixos-minecraft/minecraft-world.jpg":[38353,38353],"./solutions/set-up-nixos-minecraft/server-connect.png":[22906,22906],"./solutions/set-up-nixos-minecraft/user-data.png":[91699,91699],"./solutions/sync-kubernetes-secrets-across-clusters-external-secrets/external-secrets-architecture.png":[59460,59460],"./solutions/sync-kubernetes-secrets-across-clusters-external-secrets/index.mdx":[28963,10741,28963],"./use-cases/ai-infrastructure-access/centralize-llm-access-and-spending/index.mdx":[92907,10741,92907],"./use-cases/ai-infrastructure-access/connect-inference-servers/index.mdx":[31373,10741,31373],"./use-cases/ai-infrastructure-access/index.mdx":[726,10741,726],"./use-cases/ai-infrastructure-access/secure-ai-training-cluster/index.mdx":[65837,10741,65837],"./use-cases/application-testing/geo-specific-testing/index.mdx":[97603,10741,97603],"./use-cases/application-testing/index.mdx":[74973,10741,74973],"./use-cases/application-testing/share-local-dev-server-with-internet/index.mdx":[86843,10741,86843],"./use-cases/application-testing/share-local-dev-server-with-team/index.mdx":[20838,10741,20838],"./use-cases/index.mdx":[38831,10741,38831],"./use-cases/infrastructure-access/access-multi-cloud-or-multi-region-cloud-envs/index.mdx":[98598,10741,98598],"./use-cases/infrastructure-access/index.mdx":[61162,10741,61162],"./use-cases/infrastructure-access/manage-least-privileged-and-jit-access/index.mdx":[7280,10741,7280],"./use-cases/infrastructure-access/record-ssh-sessions-compliance/index.mdx":[99933,10741,99933],"./use-cases/personal-or-at-home-use/access-devices-without-tailscale/index.mdx":[42342,10741,42342],"./use-cases/personal-or-at-home-use/access-nas-media-file-servers/index.mdx":[92838,10741,92838],"./use-cases/personal-or-at-home-use/index.mdx":[17133,10741,17133],"./use-cases/personal-or-at-home-use/share-private-game-server/index.mdx":[59003,10741,59003],"./use-cases/regulated-environment/enforce-device-compliance/index.mdx":[73683,10741,73683],"./use-cases/regulated-environment/index.mdx":[17084,10741,17084],"./use-cases/regulated-environment/static-egress-ip-allowlist/index.mdx":[3135,10741,3135],"./use-cases/vpn-replacement/employee-onboarding-offboarding/index.mdx":[63717,10741,63717],"./use-cases/vpn-replacement/index.mdx":[40640,10741,40640],"./use-cases/vpn-replacement/remote-workers/index.mdx":[59326,10741,59326],"./use-cases/vpn-replacement/secure-access/index.mdx":[44926,10741,97847]};function i(e){if(!a.o(s,e))return Promise.resolve().then(function(){var t=Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t});var t=s[e],i=t[0];return Promise.all(t.slice(1).map(a.e)).then(function(){return a(i)})}i.keys=function(){return Object.keys(s)},i.id=40006,e.exports=i},58755:function(e){"use strict";e.exports=JSON.parse('{"m$":["personal","personal_plus"],"Vx":["starter","premium","enterprise"],"oP":["personal","personal_plus","starter","premium","enterprise"],"RB":{"personal":{"id":"personal","title":"Personal","description":"For individuals who want to securely connect personal devices, for free.","price_monthly":"$0","price_description":"Free forever","cta":{"label":"Get started for free","url":"https://login.tailscale.com/start?next_url=%2Fadmin%2Fmachines"},"credit_card_description":"","features":["users","devices","desktop_mobile_apps","peer_to_peer_connections","end_to_end_encryption","ipv4_ipv6","split_tunnelling","short_dns_host_names","subnet_routers","ha_failover","ip_space_collision_resolution","exit_nodes","network_level_access_policies","resource_level_access_policies","restrict_based_on_purpose","restrict_based_on_group","restrict_based_on_individual_user","acl_tests","app_connectors","gitops_for_acls","service_accounts","service_provisioning","tailscale_kubernetes_operator","tailscale_ssh","tailscale_funnel","user_approval","standard_user_roles","sso_with_any_idp","custom_authentication_periods","device_approval","tailnet_lock","posture_management","custom_postures","webhooks","configuration_audit_logging","ui","cli","api","iac","customer_support"],"quantities":{"users":"3","devices":"100","custom_postures":"up to 2"},"links":{"log_streaming":{"text":"configuration logs only","url":"/kb/1255/log-streaming#configure-audit-log-streaming"}},"cards":{"users_and_devices":["Up to 3 users w/ public domain","Up to 100 devices."],"features":["Peer-To-Peer Connections","MagicDNS","Network, Resource-level, and Attribute-based Access Policies (ACLs)","User Approval","SSO with any IdP"],"highlights":["Limited to 3 users","100 devices","Access nearly all of Tailscaleâs features","Use Tailscale for free, indefinitely"]}},"personal_plus":{"id":"personal-plus","title":"Personal Plus","de
5scription":"For individuals who want to securely connect personal devices with friends and family.","price_monthly":"$5","price_description":"Per month","cta":{"label":"Get started","url":"https://login.tailscale.com/start?next_url=%2Fadmin%2Fwelcome%2Fcheckout%2Fpersonal_plus"},"credit_card_description":"","features":["users","devices","desktop_mobile_apps","peer_to_peer_connections","end_to_end_encryption","ipv4_ipv6","split_tunnelling","short_dns_host_names","subnet_routers","ha_failover","ip_space_collision_resolution","exit_nodes","network_level_access_policies","resource_level_access_policies","restrict_based_on_purpose","restrict_based_on_group","restrict_based_on_individual_user","acl_tests","app_connectors","gitops_for_acls","service_accounts","service_provisioning","tailscale_kubernetes_operator","tailscale_ssh","tailscale_funnel","user_approval","standard_user_roles","sso_with_any_idp","custom_authentication_periods","device_approval","tailnet_lock","posture_management","custom_postures","webhooks","configuration_audit_logging","ui","cli","api","iac","customer_support","pay_by_credit_card"],"quantities":{"users":"6","devices":"100","custom_postures":"up to 2"},"links":{"log_streaming":{"text":"configuration logs only","url":"/kb/1255/log-streaming#configure-audit-log-streaming"}},"cards":{"users_and_devices":["Up to 3 users w/ public domain","Up to 100 devices."],"features":["Peer-To-Peer Connections","MagicDNS","Network, Resource-level, and Attribute-based Access Policies (ACLs)","User Approval","SSO with any IdP"],"highlights":["Limited to 6 users","100 devices","Access nearly all of Tailscaleâs features","Share Tailscale with family and friends "]}},"starter":{"id":"starter","title":"Starter","description":"For small teams seeking an easy-to-use and quick-to-deploy secure network access solution.","price_monthly":"$6","price_description":"Per active user, per month","cta":{"label":"Get started","url":"https://login.tailscale.com/start?next_url=%2Fadmin%2Fwelcome%2Fcheckout%2Fstarter"},"credit_card_description":"First two weeks free","features":["users","devices","desktop_mobile_apps","peer_to_peer_connections","end_to_end_encryption","ipv4_ipv6","split_tunnelling","short_dns_host_names","subnet_routers","app_connectors","ha_failover","exit_nodes","custom_authentication_periods","network_level_access_policies","resource_level_access_policies","restrict_based_on_purpose","restrict_based_on_group","acl_tests","gitops_for_acls","on_demand_access","service_accounts","service_provisioning","tailscale_kubernetes_operator","user_approval","standard_user_roles","sso_with_any_idp","posture_management","webhooks","configuration_audit_logging","ui","cli","api","iac","customer_support","pay_by_credit_card","device_approval"],"quantities":{"users":"Unlimited","devices":"100 + 10/user"},"links":{"restrict_based_on_group":{"text":"autogroups only","url":"/kb/1337/acl-syntax#autogroups"}},"cards":{"users_and_devices":["Unlimited Users","100 devices + 10 devices per user"],"features":["<a href=\'#access-control\' class=\'underline hover:no-underline underline-offset-2 whitespace-nowrap\'>Limited ACLs</a>","Standard user roles","ACL tags","Auth Keys","SSO with any IdP","Configuration Audit Logging","Webhooks"],"highlights_subheading":"Plan highlights","highlights":["100 devices + 10 per user","Multiple OS/platform/cloud compatibility","Split tunnelling","Human readable DNS names for devices/services with MagicDNS","Network-level access policies (ACLs - limited functionality)","Kubernetes networking through Tailscale Kubernetes Operator"]}},"premium":{"id":"premium","title":"Premium","description":"For growing teams seeking advanced service/resource-level networking and identity-aware access controls.","price_monthly":"$18","price_description":"Per active user, per month","cta":{"label":"Get started","url":"https://login.tailscale.com/start?next_url=%2Fadmin%2Fwelcome%2Fcheckout%2Fpremium"},"credit_card_description":"First two weeks free","features":["users","devices","desktop_mobile_apps","peer_to_peer_connections","end_to_end_encryption","ipv4_ipv6","split_tunnelling","short_dns_host_names","subnet_routers","app_connectors","ha_failover","ip_space_collision_resolution","regional_routing","exit_nodes","network_level_access_policies","resource_level_access_policies","restrict_based_on_purpose","restrict_based_on_group","restrict_based_on_individual_user","acl_tests","gitops_for_acls","on_demand_access","
5service_accounts","service_provisioning","tailscale_kubernetes_operator","tailscale_ssh","tailscale_funnel","custom_authentication_periods","user_approval","standard_user_roles","advanced_user_roles","sso_with_any_idp","device_approval","posture_management","customize_ui_visibility","configure_auto_updates_settings","runtime_configurations","configure_mdm_tools","webhooks","configuration_audit_logging","network_flow_logging","ui","cli","api","iac","customer_support","priority_support","pay_by_credit_card"],"quantities":{"users":"Unlimited","devices":"100 + 20/user"},"links":{},"cards":{"users_and_devices":["Unlimited Users","100 devices + 20 devices per user"],"features":["ACLs","SSO with any IdP","Network flow logging","Tailscale SSH","Tailscale Funnel","Advanced user roles","MDM Policies","Priority support"],"highlights_subheading":"Everything in Starter, plus:","highlights":["100 devices + 20 per user","Automatic key management through Tailscale SSH","Advanced service-level networking through Tailscale Funnel","Identity-aware access policies (ACLs - full functionality)","MDM policies","Configuration audit and network flow logging","Priority support"]}},"enterprise":{"id":"enterprise","title":"Enterprise","description":"For organizations seeking advanced user and posture management, robust compliance, and dedicated support.","price_monthly":"Custom","price_description":"","cta":{"label":"Contact Sales","url":"/contact/sales"},"features":["users","devices","desktop_mobile_apps","peer_to_peer_connections","end_to_end_encryption","ipv4_ipv6","split_tunnelling","short_dns_host_names","subnet_routers","app_connectors","ha_failover","ip_space_collision_resolution","regional_routing","exit_nodes","network_level_access_policies","resource_level_access_policies","restrict_based_on_purpose","restrict_based_on_group","restrict_based_on_individual_user","acl_tests","gitops_for_acls","on_demand_access","service_accounts","service_provisioning","tailscale_kubernetes_operator","tailscale_ssh","tailscale_ssh_session_recording","tailscale_k8s_operator_recording","tailscale_funnel","custom_authentication_periods","user_approval","standard_user_roles","advanced_user_roles","sso_with_any_idp","user_group_provisioning_entra_id","user_group_provisioning_okta","device_approval","tailnet_lock","posture_management","custom_postures","posture_integrations","customize_ui_visibility","configure_auto_updates_settings","runtime_configurations","configure_mdm_tools","webhooks","configuration_audit_logging","network_flow_logging","log_streaming","ui","cli","api","iac","customer_support","priority_support","additional_support_options","pay_by_credit_card","pay_by_invoice","annual_billing","jit"],"quantities":{"users":"Unlimited","devices":"Custom based on use case"},"links":{},"cards":{"users_and_devices":["Unlimited Users","100 devices + 20 devices per user"],"features":["User & Group provisioning (SCIM)","Network flow logging with log streaming","Tailscale SSH session recording","Annual Billing","Invoicing and/or annual billing also available","Tailnet Lock","Advanced Device Posture Management","MDM Policies","Priority support","Additional Support Options"],"highlights_subheading":"Everything in Premium, plus:","highlights":["Custom device limits","Integrations for user/group provisioning","Endpoint management through Tailnet Lock","Advanced posture management","Auditing support through Tailscale SSH and Tailscale Kubernetes Operator recording and log streaming","Dedicated support","Options to pay by invoice and/or annual billing"]}}},"tW":[{"id":"Basics","title":"Users & Devices","features":["users","devices","desktop_mobile_apps"]},{"id":"Networking","title":"Virtual Private Networking","features":["peer_to_peer_connections","end_to_end_encryption","ipv4_ipv6","split_tunnelling","short_dns_host_names","exit_nodes","subnet_routers","app_connectors","ha_failover","ip_space_collision_resolution","regional_routing"]},{"id":"Access","title":"Access control","features":["network_level_access_policies","acl_tests","gitops_for_acls","on_demand_access","resource_level_access_policies","restrict_based_on_purpose","restrict_based_on_group","restrict_based_on_individual_user","jit"]},{"id":"Applications","title":"Application Networking","features":["service_accounts","service_provisioning","tailscale_kubernetes_operator","tailscale_ssh","tailscale_funnel"]},{"id":"Users","title":"User Management","features":["user_approval","standard_user_roles","advanced_user_roles","sso_with_any_idp","custom_authentication_periods","user_group_provisioning_entra_id","user_group_provisioning_okta"]},{"id":"Endpoints","title":"Endpoint & Posture Management","features":["device_approval","tailnet_lock","posture_management","custom_postures","posture_integrations"]}
5,{"id":"MDM","title":"Mobile Device Management Policies","features":["customize_ui_visibility","runtime_configurations","configure_mdm_tools"]},{"id":"Monitoring","title":"Monitoring & Compliance","features":["webhooks","configuration_audit_logging","network_flow_logging","tailscale_ssh_session_recording","tailscale_k8s_operator_recording","log_streaming"]},{"id":"Interfaces","title":"Interfaces","features":["ui","cli","api","iac"]},{"id":"Support","title":"Support","features":["customer_support","priority_support","additional_support_options"]},{"id":"Payment","title":"Payment Options","features":["pay_by_credit_card","pay_by_invoice","annual_billing"]}],"R2":{"users":{"title":"Users","tooltip":"A user is any distinct email address in your account. Personal includes 3 free users. Starter and Premium offer unlimited users; you pay for the number of active users at the end of your billing cycle.","quantity":"Users: %s"},"desktop_mobile_apps":{"title":"Desktop & mobile apps"},"devices":{"title":"Devices","tooltip":"A device is any computer, phone, or server with Tailscale installed that\'s connected to your network. Device limits are pooled across your network.","quantity":"Devices: %s"},"peer_to_peer_connections":{"title":"Peer-to-peer connections","tooltip":"Establish direct connections between nodes in your tailnet, to minimize latency."},"end_to_end_encryption":{"title":"End-to-end encryption","tooltip":"Encrypt all traffic end-to-end with WireGuard\xae."},"ipv4_ipv6":{"title":"IPv4 and IPv6","tooltip":"Route both IPv4 and IPv6 traffic."},"split_tunnelling":{"title":"Split tunnelling","tooltip":"Split DNS traffic so only traffic to your internal network goes over Tailscale, and everything else goes directly to the internet."},"short_dns_host_names":{"title":"Short DNS host names (MagicDNS)","tooltip":"Automatically register human readable DNS names with MagicDNS to make it even easier to access devices and services on your network."},"subnet_routers":{"title":"Subnet routers","tooltip":"Relay traffic from your tailnet through a gateway to a subnet of VPCs, corporate LANs, physical networks, and more."},"app_connectors":{"title":"App connectors","tooltip":"Control access to software as a service (SaaS) applications available over your tailnet."},"ha_failover":{"title":"HA failover","tooltip":"Expose the same subnet routers and app connectors on multiple routers to ensure availability even if one router goes offline."},"ip_space_collision_resolution":{"title":"IP space collision resolution (4via6 subnet routers)","tooltip":"Route traffic to overlapping IPv4 subnets without renumbering with 4via6 subnet routers, by assigning unique IPv6 addresses for each subnet."},"exit_nodes":{"title":"Exit nodes","tooltip":"Route Internet traffic through a designated egress point on your tailnet, like a traditional VPN."},"network_level_access_policies":{"title":"Network-level access policies (ACLs)","tooltip":"Precisely define access in your tailnet based on IP address, subnet, or port."},"resource_level_access_policies":{"title":"Resource-level access policies","tooltip":"Use ACL tags to assign identity to a device in order to enforce access based on roles and groups."},"restrict_based_on_purpose":{"title":"Restrict based on purpose (ACL tags)","tooltip":"Assign an identity to a device that is separate from human users, and use that identity as part of an ACL to restrict access."},"restrict_based_on_group":{"title":"Restrict based on group","tooltip":"Allow specific ACL-defined groups to access tagged nodes."},"restrict_based_on_individual_user":{"title":"Restrict based on individual user","tooltip":"Allow specific ACL-defined users to access tagged nodes."},"jit":{"title":"Just-in-time Access API","tooltip":"Provide temporary, time-bound, and audited elevated access to resources using the API or integrations with Slack and GitHub Actions."},"acl_tests":{"title":"ACL tests","tooltip":"Test ACLs to make sure they\'re properly scoped to avoid unnecessary exposure of critical systems on your network."},"gitops_for_acls":{"title":"GitOps for ACLs","tooltip":"Use a GitOps workflow to centralize management and version-control of your ACLs."},"on_demand_access":{"title":"On-demand access","tooltip":"Use partner integrations to grant elevated privileges (e.g. on-call), including temporary access, using an approval workflow."},"separation_of_administrative_duties":{"title":"Separation of administrative duties (User roles)","tooltip":"Assign admin roles to appropriately manage permissions, including IT admin, Network admin, Billing admin, and Auditor roles."},"service_accounts":{"title":"Service accounts","tooltip":"Pre-authenticate services or nodes (e.g., servers and ephemeral containers
5) added to your network."},"service_provisioning":{"title":"Service provisioning","tooltip":"Assign an identity to a service or node and restrict access on your tailnet, using ACL tags."},"tailscale_kubernetes_operator":{"title":"Tailscale Kubernetes operator","tooltip":"Provide full ingress and egress connectivity from Kubernetes clusters to non-Kubernetes resources, as well as cross-cluster peering, via Tailscale."},"tailscale_ssh":{"title":"Tailscale SSH","tooltip":"Authenticate and encrypt SSH connections between devices in your tailnet, using Tailscale instead of SSH basic auth, keys, certs, or a bastion."},"tailscale_funnel":{"title":"Tailscale Funnel","tooltip":"Route traffic from the Internet to a node in your tailnet to publicly share it with anyone, even if they arenât using Tailscale."},"custom_authentication_periods":{"title":"Custom authentication periods","tooltip":"Enforce that users re-authenticate with your identity provider at an interval you choose. By default, this is every 6 months"},"user_approval":{"title":"User approval","tooltip":"Prevent new users in your organization from joining a tailnet until theyâve been approved by an admin"},"standard_user_roles":{"title":"Standard user roles","tooltip":"Standard user roles include owner, admin, and member"},"advanced_user_roles":{"title":"Advanced user roles","tooltip":"Advanced user roles include billing admin, IT admin, network admin, and auditor"},"sso_with_any_idp":{"title":"SSO with any IdP","tooltip":"Log in to Tailscale and manage users with any OIDC identity provider."},"user_group_provisioning_entra_id":{"title":"User & group provisioning (Entra ID + SCIM)","tooltip":"Sync group membership and new or deactivated users from Entra ID."},"user_group_provisioning_okta":{"title":"User & group provisioning (Okta + SCIM)","tooltip":"Sync group membership and new or deactivated users from Okta."},"device_approval":{"title":"Device approval","tooltip":"Review and approve new devices and nodes before adding them to your tailnet."},"tailnet_lock":{"title":"Tailnet Lock","tooltip":"Prevent new, and potentially malicious, nodes from joining your tailnet without first being signed by an already trusted node."},"posture_management":{"title":"Device posture management","tooltip":"Use posture conditions to more granularly control access in your network policies."},"custom_postures":{"title":"Postures based on custom attributes","tooltip":"Attach custom posture attributes to your devices and use them as part of posture conditions."},"posture_integrations":{"title":"Device posture integrations","tooltip":"Automatically synchronize device trust information from third-party posture checking tools and use it as part of posture conditions."},"customize_ui_visibility":{"title":"Customize UI Visibility","tooltip":"Change the visibility of UI elements in Tailscale
5Client menu"},"configure_auto_updates_settings":{"title":"Configure auto-updates settings","tooltip":"Configure checking and installing Tailscale latest version automatically"},"runtime_configurations":{"title":"Runtime configurations","tooltip":"Configure Tailscale behavior in end user devices eg. Automatically start Tailscale when user logs in, force tailscale to be always on, route all traffic via a specific exit node, and more"},"configure_mdm_tools":{"title":"Configure MDM Tools","tooltip":"Configure and deploy Tailscale using MDM solutions like SimpleMDM, Iru, Microsoft Intune, Jamf"},"webhooks":{"title":"Webhooks","tooltip":"Subscribe to events on your tailnet, and forward those events to any integration or app â like Slack or Microsoft Teams."},"configuration_audit_logging":{"title":"Configuration audit logging","tooltip":"Record actions that modify a tailnet\'s configuration, including type of action, actor, target resource, and time."},"network_flow_logging":{"title":"Network flow logging","tooltip":"Record network traffic between nodes on your tailnet."},"log_streaming":{"title":"Log streaming","tooltip":"Send real-time network traffic information to any SIEM or observability tool for analysis, or to a bucket for long-term storage."},"tailscale_ssh_session_recording":{"title":"Tailscale SSH session recording","tooltip":"Capture and stream terminal sessions over Tailscale SSH for analysis or storage."},"tailscale_k8s_operator_recording":{"title":"Tailscale Kubernetes Operator recording","tooltip":"Capture and stream kubectl sessions through the Tailscale Kubernetes Operator for analysis or storage."},"ui":{"title":"UI","tooltip":"Log in to the tailscale.com admin console to manage users, nodes, and their permissions, on your tailnet."},"cli":{"title":"CLI","tooltip":"Quickly access information, manage devices or troubleshoot issues with a built-in command-line interface."},"api":{"title":"API","tooltip":"Use the API to manage your network\'s devices, ACLs, DNS settings, and more."},"iac":{"title":"IaC","tooltip":"Configure your tailnet using Terraform or Pulumi."},"customer_support":{"title":"Customer support","tooltip":"Use the documentation or email us to get help with using Tailscale."},"priority_support":{"title":"Priority support","tooltip":"Issue is prioritized based on severity."},"additional_support_options":{"title":"Additional support options","tooltip":"Contact our sales team for information."},"pay_by_credit_card":{"title":"Pay by credit card"},"pay_by_invoice":{"title":"Pay by invoice"},"annual_billing":{"title":"Annual billing"},"regional_routing":{"title":"Regional routing","tooltip":"Route your traffic across distributed HA subnet routers or app connectors based on region."}}}')},8254:function(e){"use strict";e.exports=JSON.parse('[{"visibility":"visible","tocDepth":3,"tags":["security-features","admin-console","security"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Admin console session timeout","summary":"Explore idle session timeout in the Tailscale admin console.","lastValidated":"2026-01-05","slug":"account/admin-console-session-timeout","pathToContent":"account/admin-console-session-timeout/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale on Azure Marketplace","summary":"Manage Tailscale billing in the Microsoft Azure Marketplace.","lastValidated":"2024-12-20","slug":"account/billing/azure-marketplace-for-billing","pathToContent":"account/billing/azure-marketplace-for-billing/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Manage billing","summary":"Change billing information related to your Tailscale account.","lastValidated":"2026-04-08","slug":"account/billing","pathToContent":"account/billing/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Manage your invoices","summary":"Acce
5ss and download your Tailscale invoices, understand invoice availability, and get help with billing questions.","lastValidated":"2026-04-08","slug":"account/billing/manage-invoices","pathToContent":"account/billing/manage-invoices/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Modify your billing information","summary":"Manage and update your billing details to keep your payment information, invoices, and tax settings accurate.","lastValidated":"2026-04-08","slug":"account/billing/modify-billing","pathToContent":"account/billing/modify-billing/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Generate a bug report","summary":"Generate a bug report to help troubleshoot issues with your tailnet.","lastValidated":"2026-01-05","slug":"account/bug-report","pathToContent":"account/bug-report/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Delete your tailnet","summary":"Delete your Tailscale network using the Admin console.","lastValidated":"2025-10-28","slug":"account/delete-tailnet","pathToContent":"account/delete-tailnet/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["domain-aliases","account-management"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"explanation","availability":["all"],"title":"Domain aliases","summary":"Understand how domain aliases work for tailnets and where they affect Tailscale behavior.","lastValidated":"2026-05-11","slug":"account/domain-aliases","pathToContent":"account/domain-aliases/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["domain-verification","account-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Manage domains","summary":"Manage the domains associated with your tailnet.","lastValidated":"2026-05-11","slug":"account/domain-verification","pathToContent":"account/domain-verification/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Manage your organization","summary":"Manage your contact information, your account, the plans we offer, and how to manage your tailnet DNS name and domain.","lastValidated":"2026-04-08","slug":"account","pathToContent":"account/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Downgrade your plan","summary":"Downgrade your Tailscale plan to a different plan or the free Personal plan.","lastValidated":"2026-04-08","slug":"account/manage-plans/downgrade-plan","pathToContent":"account/manage-plans/downgrade-plan/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Free pricing plans and discounts","summary":"Explore the free plans and discount pricing offered by Tailscale.","lastValidated":"2026-04-08","slug":"account/manage-plans/free-plans-discounts","pathToContent":"account/manage-plans/free-plans-discounts/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Manage your plan","summary":"Change your Tailscale plan by upgrading or downgrading to a different plan to suit your needs.","lastValidated":"2026-04-08","slug":"account/manage-plans","pathToContent":"account/manage-plans/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Change your legacy plan","summary":"Migrate or upgrade your legacy Tailscale plan to a newer plan.","lastValidated":"2026-04-08","slug":"account/manage-plans/legacy-plans","pathToContent":"account/manage-plans/legacy-plans/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Modify an existing plan","summary":"You can modify your existing plan to add seats, remove seats, and purchase features such as Mullvad exit nodes.","lastValidated":"2026-04-08","slug":"account/manage-plans/modify-existing-plan","pathToContent":"account/manage-plans/modify-existing-plan/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Upgrade your plan","summary":"Upgrade your Tailscale plan, whether you are moving from the Personal plan to a paid plan or switching between paid plans.","lastValidated":"2026-04-08","slug":"account/manage-plans/upgrade-plan","pathToContent":"account/manage-plans/upgrade-plan/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","oauth","auth-keys","device-provisioning"],"releaseStatus":"private alpha","related":[],"index":true,"hidden":true,"featured":false,"deprecated":false,"contentType":"feature-guide","availability":["all"],"title":"Auto-auth for provisioned devices","summary":"Build internal tools that provision user devices within your tailnet using a standard OAuth authorization code flow with full user identity attribution.","lastValidated":"2026-04-17","slug":"aperture/auto-auth","pathToContent":"aperture/auto-auth/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai","billing","tokens"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"feature-guide","availability":["all"],"title":"Buy tokens through Aperture","summary":"Buy tokens through Aperture for model usage, or continue using your own supported providers.","lastValidated":"2026-08-20","slug":"aperture/buy-tokens-through-aperture","pathToContent":"aperture/buy-tokens-through-aperture/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Chat","summary":"Find documentation for the Aperture chat UI, including projects, sandbox, and setup.","lastValidated":"2026-08-22","hubType":"feature","slug":"aperture/ch
5at","pathToContent":"aperture/chat/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"feature-guide","availability":["all"],"title":"Chat projects","summary":"Group conversations, set reusable instructions, and control tool access with chat projects.","lastValidated":"2026-08-22","slug":"aperture/chat/projects","pathToContent":"aperture/chat/projects/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"public alpha","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"feature-guide","availability":["all"],"title":"Chat sandbox","summary":"Run code, analyze data, and create downloadable files in an isolated Linux environment during a chat conversation.","lastValidated":"2026-08-13","slug":"aperture/chat-sandbox","pathToContent":"aperture/chat-sandbox/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","cli"],"releaseStatus":"public alpha","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"feature-guide","availability":["all"],"title":"Aperture CLI","summary":"Use the Aperture CLI to discover, configure, and run coding agents that connect through your Aperture proxy.","lastValidated":"2026-07-24","slug":"aperture/cli","pathToContent":"aperture/cli/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["reference","ai","aperture"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"reference","availability":["all"],"title":"Aperture configuration reference","summary":"Complete reference for Aperture by Tailscale configuration fields, providers, grants, quotas, hooks, exporters, connectors, and database settings.","lastValidated":"2026-08-14","slug":"aperture/configuration","pathToContent":"aperture/configuration/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"feature-guide","availability":["all"],"title":"Connect devices outside your tailnet","summary":"Connect devices that are not in your tailnet to your Aperture gateway using an Aperture CLI bridge or ts-unplug.","lastValidated":"2026-07-28","slug":"aperture/connect-outside-tailnet","pathToContent":"aperture/connect-outside-tailnet/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","mcp","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Add a verified connector","summary":"Configure a verified connector such as Salesforce or Slack from the Aperture connector picker, supplying OAuth client credentials when required.","lastValidated":"2026-08-13","slug":"aperture/connectors/add-verified-connector","pathToContent":"aperture/connectors/add-verified-connector/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","mcp","ai"],"releaseStatus":"public alpha","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"feature-guide","availability":["all"],"title":"Built-in connectors","summary":"Set up the built-in Aperture connectors that provision tailnet nodes and run shell commands over Tailscale SSH.","lastValidated":"2026-09-18","slug":"aperture/connectors/built-in-connectors","pathToContent":"aperture/connectors/built-in-connectors/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","mcp","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Get started with connectors","summary":"Add a connector, grant access, and verify the connection in Aperture.","lastValidated":"2026-08-13","slug":"aperture/connectors/get-started","pathToContent":"aperture/connectors/get-started/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","mcp","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"explanation","availability":["all"],"title":"How connectors work","summary":"Understand how Aperture connectors reach external MCP servers and HTTP APIs, how they relate to providers, and how authentication and access control apply.","lastValidated":"2026-09-18","slug":"aperture/connectors/how-connectors-work","pathToContent":"aperture/connectors/how-connectors-work
5/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","mcp","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Connectors","summary":"Find documentation for Aperture connectors, including setup guides, conceptual explanations, and configuration reference.","lastValidated":"2026-08-21","hubType":"feature","slug":"aperture/connectors","pathToContent":"aperture/connectors/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","mcp","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"explanation","availability":["all"],"title":"Kinds of connector","summary":"Aperture has five kinds of tool integration. They differ by who runs the tool and who can reach it, which determines their configuration, grants, and failure behavior.","lastValidated":"2026-08-21","slug":"aperture/connectors/kinds-of-connector","pathToContent":"aperture/connectors/kinds-of-connector/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["reference","ai","aperture"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"reference","availability":["all"],"title":"Aperture connectors reference","summary":"Complete reference for Aperture connectors, including field definitions, authentication types, MCP and HTTP protocol behavior, grants, dynamic registration through the legacy MCP section, and migration from the deprecated MCP servers syntax.","lastValidated":"2026-08-23","slug":"aperture/connectors/reference","pathToContent":"aperture/connectors/reference/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","mcp","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Set up an authenticated MCP connector","summary":"Connect Aperture to an MCP server that requires authentication using a shared bearer token or OAuth 2.0 client credentials.","lastValidated":"2026-06-29","slug":"aperture/connectors/set-up-authenticated-mcp-connector","pathToContent":"aperture/connectors/set-up-authenticated-mcp-connector/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","mcp","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Use a connector","summary":"Authorize a connector, discover and call its tools, and reconnect when access expires.","lastValidated":"2026-06-15","slug":"aperture/connectors/use-a-connector","pathToContent":"aperture/connectors/use-a-connector/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Control AI access","summary":"Manage who can access Aperture and which models they can use.","lastValidated":"2026-07-30","slug":"aperture/control-access","pathToContent":"aperture/control-access/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"private alpha","related":[],"index":true,"hidden":true,"featured":false,"deprecated":false,"contentType":"feature-guide","availability":["all"],"title":"Direct provider access","summary":"Reach embedding, image, and other non-chat models through Aperture using the /direct endpoint, with Tailscale identity for access control and Aperture-managed provider credentials.","lastValidated":"2026-07-31","slug":"aperture/direct-access","pathToContent":"aperture/direct-access/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Get started with Aperture","summary":"Sign up for Aperture, configure a provider, and send your first request.","lastValidated":"2026-06-27","slug":"aperture/get-started","pathToContent":"aperture/get-started/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"explanation","availability":["all"],"title":"Guardrails","summary":"Inspect, modify, or block LLM requests before they reach the provider.","lastValidated":"2026-07-23","slug":"aperture/guardrails","pathToContent":"aperture/guardrails/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"explanation","availability":["all"],"title":"How Aperture works","
5summary":"Understand how Aperture uses Tailscale identity, model-based routing, and telemetry to secure and monitor LLM requests.","lastValidated":"2026-07-24","slug":"aperture/how-aperture-works","pathToContent":"aperture/how-aperture-works/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"explanation","availability":["all"],"title":"How Aperture grants work","summary":"Understand the Aperture grants model, including deny-by-default access, additive allow-only rules, capability matching, and how Aperture resolves precedence when multiple grants apply.","lastValidated":"2026-08-13","slug":"aperture/how-grants-work","pathToContent":"aperture/how-grants-work/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Build a custom webhook","summary":"Create a custom webhook integration to send Aperture event data to your own services.","lastValidated":"2026-09-29","slug":"aperture/how-to/build-custom-webhook","pathToContent":"aperture/how-to/build-custom-webhook/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Check and refill budgets","summary":"Check the status of Aperture quota buckets and manually refill balances using the Aperture dashboard.","lastValidated":"2026-06-24","slug":"aperture/how-to/check-and-refill-budgets","pathToContent":"aperture/how-to/check-and-refill-budgets/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Configure overdraft quotas","summary":"Chain Aperture quota buckets so requests borrow from additional buckets when a primary bucket is exhausted.","lastValidated":"2026-07-27","slug":"aperture/how-to/configure-overdraft-quotas","pathToContent":"aperture/how-to/configure-overdraft-quotas/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Configure zero-retention mode","summary":"Configure Aperture so it never stores prompt and response content on disk, to minimize data at rest and meet strict internal or contractual data-handling requirements.","lastValidated":"2026-08-18","slug":"aperture/how-to/configure-zero-retention","pathToContent":"aperture/how-to/configure-zero-retention/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"public alpha","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Enable the chat sandbox","summary":"Enable the sandbox feature so the Aperture assistant can run code, edit files, and produce downloadable artifacts in conversations.","lastValidated":"2026-08-13","slug":"aperture/how-to/enable-sandbox","pathToContent":"aperture/how-to/enable-sandbox/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Export usage data to S3","summary":"Configure Aperture to export LLM usage data to an Amazon S3 bucket for analysis, archiving, and long-term retention.","lastValidated":"2026-07-02","slug":"aperture/how-to/export-usage-data-to-s3","pathToContent":"aperture/how-to/export-usage-data-to-s3/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Filter logs by header","summary":"Index request and response headers in Aperture so you can filter by header presence or value on any dashboard page that supports filtering.","lastValidated":"2026-07-24","slug":"aperture/how-to/filter-logs-by-header","pathToContent":"aperture/how-to/filter-logs-by-header/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Grant connector access by label","summary":"Label Aperture connectors and grant access by label so a single grant covers every connector in a group instead of naming each connector ID.","lastValidated":"2026-08-14","slug":"aperture/how-to/grant-connector-access-by-label","pathToContent":"aperture/how-to/grant-connector-access-by-label/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Grant access to MCP tools","summary":"Configure Aperture grants to control which connector capabilities users can access, including MCP tools, resources, templates, and HTTP proxy access.","lastValidated":"2026-08-13","slug":"aperture/how-to/grant-mcp-tool-access","pathToContent":"aperture/how-to/grant-mcp-tool-access/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Grant access to models","summary":"Configure Aperture grants to control which models each user or group can access.","lastValidated":"2026-08-13","slug":"aperture/how-to/grant-model-access","pathToContent":"aperture/how-to/grant-model-access/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Aperture how-to guides","summary":"Step-by-step guides for configuring Aperture providers, access controls, spending limits, observability, and integrations.","lastValidated":"2026-04-09","slug":"aperture/how-to","pathToContent":"aperture/how-to/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"public alpha","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Manage sandbox operations","summary":"Monitor sandbox health and understand the security properties of the Aperture chat sandbox.","lastValidated":"2026-08-13","slug":"aperture/how-to/manage-sandbox","pathToContent":"aperture/how-to/manage-sandbox/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Set per-user spending limits","summary":"Configure quota buckets in Aperture to set spending limits for individual users.","lastValidated":"2026-06-16","slug":"aperture/how-to/set-per-user-spending-limits","pathToContent":"aperture/how-to/set-per-user-spending-limits/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Set a team-wide budget","summary":"Configure a shared quota bucket in Aperture to cap total AI spending across your organization.","lastValidated":"2026-06-16","slug":"aperture/how-to/set-team-budget","pathToContent":"aperture/how-to/set-team-budget/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Set up admin access","
5summary":"Configure administrator roles for managing Aperture settings and accessing all user data.","lastValidated":"2026-06-16","slug":"aperture/how-to/set-up-admin-access","pathToContent":"aperture/how-to/set-up-admin-access/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Set up the chat UI","summary":"Enable Aperture\'s chat UI so your users can talk to LLMs directly through their browser.","lastValidated":"2026-06-27","slug":"aperture/how-to/set-up-chat-ui","pathToContent":"aperture/how-to/set-up-chat-ui/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Set up a guardrail","summary":"Configure a pre-request hook to inspect, modify, or block LLM requests before they reach the provider.","lastValidated":"2026-06-26","slug":"aperture/how-to/set-up-guardrails","pathToContent":"aperture/how-to/set-up-guardrails/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Set up an HTTP API connector","summary":"Configure Aperture to proxy requests to an upstream REST API with automatic credential injection.","lastValidated":"2026-08-13","slug":"aperture/how-to/set-up-http-api-connector","pathToContent":"aperture/how-to/set-up-http-api-connector/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Set up a per-user OAuth 2.0 connector","summary":"Connect Aperture to an external service that requires individual user consent using the OAuth 2.0 authorization code flow.","lastValidated":"2026-06-30","slug":"aperture/how-to/set-up-per-user-oauth2-connector","pathToContent":"aperture/how-to/set-up-per-user-oauth2-connector/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","providers"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Set up Amazon Bedrock","summary":"Configure an Amazon Bedrock provider in Aperture so your team can access foundation models through AWS.","lastValidated":"2026-08-13","slug":"aperture/how-to/use-amazon-bedrock","pathToContent":"aperture/how-to/use-amazon-bedrock/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","providers"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Set up Anthropic","summary":"Configure an Anthropic provider in Aperture so your team can access Claude models.","lastValidated":"2026-06-27","slug":"aperture/how-to/use-anthropic","pathToContent":"aperture/how-to/use-anthropic/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Use Claude Code with Aperture","summary":"Configure Claude Code to route requests through your Aperture proxy.","lastValidated":"2026-07-24","slug":"aperture/how-to/use-claude-code","pathToContent":"aperture/how-to/use-claude-code/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai","ci-cd","github-actions"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Use Claude Code Action with Aperture","summary":"Configure the Claude Code GitHub Action to route requests through Aperture so CI runners authenticate with Tailscale identity instead of individual API keys.","lastValidated":"2026-06-16","slug":"aperture/how-to/use-claude-code-action","pathToContent":"aperture/how-to/use-claude-code-action/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Use Claude Desktop with Aperture","summary":"Configure the Claude Desktop app to route model inference through your Aperture proxy.","lastValidated":"2026-07-20","slug":"aperture/how-to/use-claude-desktop","pathToContent":"aperture/how-to/use-claude-desktop/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Use Codex with Aperture","summary":"Configure OpenAI Codex to route requests through your Aperture proxy.","lastValidated":"2026-07-24","slug":"aperture/how-to/use-codex","pathToContent":"aperture/how-to/use-codex/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","providers","vertex"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Set up Gemini Enterprise Agent Platform","summary":"Configure a Gemini Enterprise Agent Platform provider in Aperture with a GCP service account and key file so your team can access Gemini and Claude models through Aperture.","lastValidated":"2026-08-18","slug":"aperture/how-to/use-gemini-enterprise-agent-platform","pathToContent":"aperture/how-to/use-gemini-enterprise-agent-platform/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","providers"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Set up Google Gemini","summary":"Configure a Google Gemini provider in Aperture so your team can access Gemini models using the direct Gemini API.","lastValidated":"2026-07-20","slug":"aperture/how-to/use-google-gemini","pathToContent":"aperture/how-to/use-google-gemini/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","providers"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Set up Microsoft Foundry","summary":"Configure Microsoft Foundry providers in Aperture so your team can access OpenAI GPT and Anthropic Claude models deployed in Foundry.","lastValidated":"2026-06-08","slug":"aperture/how-to/use-microsoft-foundry","pathToContent":"aperture/how-to/use-microsoft-foundry/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","providers"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Set up OpenAI","summary":"Configure an OpenAI provider in Aperture so your team can access GPT models.","lastValidated":"2026-06-27","slug":"aperture/how-to/use-openai","pathToContent":"aperture/how-to/use-openai/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","providers"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Set up an OpenAI-compatible provider","summary":"Configure any provider that exposes an OpenAI-compatible API as a provider in Aperture.","lastValidated":"2026-08-21","slug":"aperture/how-to/use-openai-compatible-provider","pathToContent":"aperture/how-to/use-openai-compatible-provider/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Use OpenAI-compatible tools with Aperture","summary":"Configure Gemini CLI, Roo Code, Cline, and other OpenAI-compatible tools to route requests through Aperture.","lastValidated":"2026-07-24","slug":"aperture/how-to/use-openai-compatible-tools","pathToContent":"aperture/how-to/use-openai-compatible-tools/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Use OpenCode with Aperture","summary":"Configure OpenCode to route requests through your Aperture proxy.","lastValidated":"2026-07-24","slug":"aperture/how-to/use-opencode","pathToContent":"aperture/how-to/use-opencode/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","providers"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Set up OpenRouter","summary":"Configure an OpenRouter provider in Aperture so your team can access models from multiple providers through a single aggregator.","lastValidated":"2026-06-08","slug":"aperture/how-to/use-openrouter","pathToContent":"aperture/how-to/use-openrouter/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","providers","auth"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Route a Claude subscription through Aperture","summary":"Configure Aperture passthrough mode so Claude Code forwards a Claude Pro or Max subscription\'s OAuth token to Anthropic, without a shared API key.","lastValidated":"2026-08-13","slug":"aperture/how-to/use-passthrough-mode/claude-subscriptions","pathToContent":"aperture/how-to/use-passthrough-mode/claude-subscriptions/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","providers","auth"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Route a ChatGPT subscription through Aperture","summary":"Configure Aperture passthrough mode so the C
5odex CLI forwards a ChatGPT subscription\'s OAuth token to the ChatGPT backend, without a shared API key.","lastValidated":"2026-08-13","slug":"aperture/how-to/use-passthrough-mode/codex-subscriptions","pathToContent":"aperture/how-to/use-passthrough-mode/codex-subscriptions/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","providers","auth"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Set up passthrough mode","summary":"Configure an Aperture provider to forward each client\'s own credential, including subscription OAuth tokens, to the upstream provider instead of injecting a shared API key.","lastValidated":"2026-06-27","slug":"aperture/how-to/use-passthrough-mode","pathToContent":"aperture/how-to/use-passthrough-mode/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","providers"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Set up a self-hosted provider","summary":"Configure a self-hosted or locally running LLM server as a provider in Aperture so your team can access private models through your tailnet.","lastValidated":"2026-04-15","slug":"aperture/how-to/use-self-hosted","pathToContent":"aperture/how-to/use-self-hosted/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","providers"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Set up Vercel AI Gateway","summary":"Configure a Vercel AI Gateway provider in Aperture so your team can access models from multiple LLM providers.","lastValidated":"2026-04-15","slug":"aperture/how-to/use-vercel","pathToContent":"aperture/how-to/use-vercel/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["ai","aperture"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Aperture","summary":"Monitor and secure LLM usage with Aperture by Tailscale.","lastValidated":"2026-07-24","slug":"aperture","pathToContent":"aperture/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Integrate Cerbos with Aperture","summary":"Send AI request data from Aperture to Cerbos for fine-grained authorization decisions on LLM access.","lastValidated":"2026-06-26","slug":"aperture/integrate/cerbos","pathToContent":"aperture/integrate/cerbos/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Integrate Cribl with Aperture","summary":"Route AI usage data from Aperture to Cribl for processing and forwarding to your observability destinations.","lastValidated":"2026-06-26","slug":"aperture/integrate/cribl","pathToContent":"aperture/integrate/cribl/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Integrate Highflame with Aperture","summary":"Connect Aperture to Highflame for synchronous pre-request enforcement and asynchronous post-response observability of LLM requests.","lastValidated":"2026-07-02","slug":"aperture/integrate/highflame","pathToContent":"aperture/integrate/highflame/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Integrate with external tools","summary":"Connect Aperture with authorization engines, log aggregators, and external services.","lastValidated":"2026-09-29","slug":"aperture/integrate","pathToContent":"aperture/integrate/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Integrate Oso with Aperture","summary":"Send AI tool use data from Aperture to Oso for authorization decisions and observability.","lastValidated":"2026-06-26","slug":"aperture/integrate/oso","pathToContent":"aperture/integrate/oso/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Manage AI spending","summary":"Set budgets, buy tokens, control per-user spending limits, and monitor quota balances in Aperture.","lastValidated":"2026-04-09","slug":"aperture/manage-spending","pathToContent":"aperture/manage-spending/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","mcp","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"feature-guide","availability":["all"],"title":"MCP server proxying","summary":"Aggregate tools and resources from remote MCP servers through Aperture with identity-based access control.","lastValidated":"2026-08-14","slug":"aperture/mcp-server","pathToContent":"aperture/mcp-server/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Observe and export AI usage","summary":"Acce
5ss dashboards, review session logs, and export usage data from Aperture.","lastValidated":"2026-07-02","slug":"aperture/observe-and-export","pathToContent":"aperture/observe-and-export/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Privacy and data retention","summary":"Control how long Aperture retains captured data, where it exports, and where request content leaves Aperture.","lastValidated":"2026-07-02","slug":"aperture/privacy-and-data-retention","pathToContent":"aperture/privacy-and-data-retention/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["reference","aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"reference","availability":["all"],"title":"Provider compatibility reference","summary":"Complete reference for Aperture provider compatibility flags, authorization types, cost basis values, and model cost mapping.","lastValidated":"2026-08-14","slug":"aperture/provider-compatibility","pathToContent":"aperture/provider-compatibility/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["reference","aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"reference","availability":["all"],"title":"Aperture grants vs. tailnet policy file grants","summary":"How Aperture configuration grants differ from tailnet policy file grants, why the `dst` field is required in the policy file, and how to convert grants between the two.","lastValidated":"2026-06-08","slug":"aperture/reference/aperture-vs-tailnet-grants","pathToContent":"aperture/reference/aperture-vs-tailnet-grants/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["reference","aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"reference","availability":["all"],"title":"Aperture dashboard reference","summary":"Reference for the pages every Aperture user can access in the dashboard, organized by sidebar group, including My Dashboard, Agent Config, Models, Connectors, Chat, and Usage Overview.","lastValidated":"2026-09-18","slug":"aperture/reference/dashboard","pathToContent":"aperture/reference/dashboard/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["reference","aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"reference","availability":["all"],"title":"Aperture admin dashboard reference","summary":"Reference for admin-only Aperture dashboard pages, grouped by sidebar section, including Security, Administration, Usage & Adoption, Integrations, and API Docs.","lastValidated":"2026-09-18","slug":"aperture/reference/dashboard-admin","pathToContent":"aperture/reference/dashboard-admin/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Aperture reference","summary":"Configuration, provider compatibility, CLI, and integration recipe reference documentation for Aperture.","lastValidated":"2026-09-29","slug":"aperture/reference","pathToContent":"aperture/reference/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["reference","aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"reference","availability":["all"],"title":"Aperture recipes","summary":"Find, use, and contribute integration guides and examples in the open source aperture-recipes repository.","lastValidated":"2026-09-29","slug":"aperture/reference/recipes","pathToContent":"aperture/reference/recipes/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai","reference"],"releaseStatus":"public alpha","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"reference","availability":["all"],"title":"Sandbox reference","summary":"Reference for Aperture chat sandbox tools, parameters, size limits, timeouts, file system layout, and error messages.","lastValidated":"2026-06-16","slug":"aperture/reference/sandbox","pathToContent":"aperture/reference/sandbox/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Set up LLM providers","summary":"Configure upstream LLM providers so Aperture can route requests and inject authentication on behalf of your users.","lastValidated":"2026-07-20","slug":"aperture/set-up-providers","pathToContent":"aperture/set-up-providers/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["reference","troubleshooting","aperture"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"reference","availability":["all"],"title":"Troubleshooting Aperture","summary":"Common Aperture by Tailscale error conditions, their causes, and resolution steps.","lastValidated":"2026-07-28","slug":"aperture/troubleshooting","pathToContent":"aperture/troubleshooting/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"public alpha","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"reference","availability":["all"],"title":"Troubleshoot sandbox issues","summary":"Diagnose and resolve common issues with the Aperture chat sandbox.","lastValidated":"2026-06-16","slug":"aperture/troubleshooting/sandbox","pathToContent":"aperture/troubleshooting/sandbox/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Set up LLM clients","summary":"Configure LLM clients to route requests through Aperture.","lastValidated":"2026-06-15","slug":"aperture/use-your-tools","pathToContent":"aperture/use-your-tools/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai","node-attributes"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"feature-guide","availability":["all"],"title":"Visible groups for Aperture","summary":"Use Tailscale groups and
5SCIM groups to control access to Aperture models and admin roles.","lastValidated":"2026-06-16","slug":"aperture/visible-groups","pathToContent":"aperture/visible-groups/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"explanation","availability":["all"],"title":"What is Aperture?","summary":"Aperture by Tailscale is an AI agent that works with the machines in your tailnet, backed by a gateway that routes LLM requests through your Tailscale identity.","lastValidated":"2026-09-18","slug":"aperture/what-is-aperture","pathToContent":"aperture/what-is-aperture/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"beta","related":[],"index":false,"hidden":true,"featured":false,"deprecated":false,"contentType":"feature-guide","availability":["all"],"title":"Border0 architecture and core concepts","summary":"Get an overview of the Border0 + Tailscale architecture and core concepts.","lastValidated":"2026-07-15","slug":"border0/architecture-and-concepts","pathToContent":"border0/architecture-and-concepts/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"beta","related":[],"index":false,"hidden":true,"featured":false,"deprecated":false,"contentType":"explanation","availability":["all"],"title":"Border0 connector high availability","summary":"Understand when to deploy highly available connectors to account for a single connector failure when connecting your users to your sockets.","lastValidated":"2026-07-06","
5slug":"border0/connectors/high-availability","pathToContent":"border0/connectors/high-availability/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"beta","related":[],"index":false,"hidden":true,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Border0 connectors","summary":"Find documentation for Border connectors, including setup guides, conceptual explanations, and configuration reference.","lastValidated":"2026-07-06","hubType":"feature","slug":"border0/connectors","pathToContent":"border0/connectors/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"beta","related":[],"index":false,"hidden":true,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Install a Border0 connector","summary":"Set up a Border0 connector to provide users with privileged access to resources in your Tailscale network.","lastValidated":"2026-07-06","slug":"border0/connectors/install","pathToContent":"border0/connectors/install/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"beta","related":[],"index":false,"hidden":true,"featured":false,"deprecated":false,"contentType":"explanation","availability":["all"],"title":"Border0 connectors overview","summary":"Understand how Border0 connectors enable privileged access to resources in your Tailscale network.","lastValidated":"2026-07-06","
5slug":"border0/connectors/overview","pathToContent":"border0/connectors/overview/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"beta","related":[],"index":false,"hidden":true,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Border0 connectors reference","summary":"Explore reference guides for Border0 connectors.","lastValidated":"2026-07-06","slug":"border0/connectors/reference","pathToContent":"border0/connectors/reference/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"beta","related":[],"index":false,"hidden":true,"featured":false,"deprecated":false,"contentType":"reference","availability":["all"],"title":"Troubleshooting Border0 connectors","summary":"Common Border0 connector error conditions, their causes, and resolution steps.","lastValidated":"2026-07-06","slug":"border0/connectors/reference/troubleshooting","pathToContent":"border0/connectors/reference/troubleshooting/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"beta","related":[],"index":false,"hidden":true,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Get started with Border0","summary":"Sign up for Border0 and use it to provide privileged access to resources in your Tailscale network.","lastValidated":"2026-06-02","slug":"border0/get-started","pathToContent":"border0/get-started/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"beta","related":[],"index":false,"hidden":true,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Border0 + Tailscale","summary":"Govern and secure privileged access with Border0 + Tailscale.","lastValidated":"2026-06-02","slug":"border0","pathToContent":"border0/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"beta","related":[],"index":false,"hidden":true,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Manage secrets and credentials","summary":"Secure your secrets and credentials for the resources in your Tailscale network.","lastValidated":"2026-08-04","slug":"border0/manage-secrets","pathToContent":"border0/manage-secrets/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"beta","related":[],"index":false,"hidden":true,"featured":false,"deprecated":false,"contentType":"feature-guide","availability":["all"],"title":"Border0 sockets","summary":"Use Border0 sockets to manage privileged access to services on your Tailscale network.","lastValidated":"2026-07-14","slug":"border0/services","pathToContent":"border0/services/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"beta","related":[],"index":false,"hidden":true,"featured":false,"deprecated":false,"contentType":"feature-guide","availability":["all"],"title":"What is Border0?","summary":"Border0 + Tailscale provides privileged and auditable access to resources like Linux servers, databases, and Kubernetes clusters in your Tailscale network.","lastValidated":"2026-06-02","slug":"border0/what-is-border0","pathToContent":"border0/what-is-border0/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"VPN from the couch to the office and HQ","summary":"Tailscale\'s encryption, low latency, easy configuration, and robust access controls like SSO and MFA make it an ideal modern office VPN solution for remote and distributed workforces.","lastValidated":"2026-01-05","slug":"concepts/all-your-offices","pathToContent":"concepts/all-your-offices/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Antivirus flagging of the Tailscale client","summary":"What to do when Tailscale is being flagged by antivirus software and how to report legitimate concerns.","lastValidated":"2025-04-01","slug":"concepts/av-flagging","pathToContent":"concepts/av-flagging/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Can Tailscale decrypt my traffic?","summary":"Understand why Tailscale cannot decrypt your traffic.","lastValidated":"2024-06-18","slug":"concepts/can-tailscale-decrypt-traffic","pathToContent":"concepts/can-tailscale-decrypt-traffic/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["technical-overview","control-plane","data-plane","coordination-server"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Control and data planes","summary":"Understand the control plane and data planes in Tailscale.","lastValidated":"2026-01-05","slug":"concepts/control-data-planes","pathToContent":"concepts/control-data-planes
5/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Corporate VPN, explained","summary":"Secure your corporate VPN with direct device-to-device encryption, seamless identity provider integration, and flexible access controls.","lastValidated":"2026-01-05","slug":"concepts/corporate-vpn","pathToContent":"concepts/corporate-vpn/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Deprecate complex physical network (wired and Wi-Fi) security schemes","summary":"Use Tailscale to move off of complex physical networks.","lastValidated":"2026-01-05","slug":"concepts/deprecated-physical-security","pathToContent":"concepts/deprecated-physical-security/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"What devices can connect to or know mine?","summary":"Understand how Tailscale determines which devices can connect to or know about your devices.","lastValidated":"2026-01-05","slug":"concepts/device-visibility","pathToContent":"concepts/device-visibility/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Domain ownership","summary":"Explore how your tailnet is tied to your domain.","lastValidated":"2026-05-11","slug":"concepts/domain-ownership","pathToContent":"concepts/domain-ownership/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Technical overviews","summary":"Get in-depth technical details about Tailscale.","lastValidated":"2025-02-13","slug":"concepts","pathToContent":"concepts/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Transparently interconnect microservices between data centers and pods","summary":"Use Tailscale to transparently interconnect microservices between data centers and pods.","lastValidated":"2026-01-05","slug":"concepts/interconnect-microservices","pathToContent":"concepts/interconnect-microservices/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Deploy internal apps anywhere, without changing firewall settings","summary":"Deploying servers without modifying firewall settings using Tailscale.","lastValidated":"2025-08-22","slug":"concepts/internal-apps-anywhere","pathToContent":"concepts/internal-apps-anywhere/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["ip-addresses","dns","tailscale-ip-addresses"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"How Tailscale assigns IP addresses","summary":"Understand how Tailscale assigns stable IP addresses based on the device and authorization credentials.","lastValidated":"2026-01-12","slug":"concepts/ip-and-dns-addresses","pathToContent":"concepts/ip-and-dns-addresses/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["serverless","integrations","subnets","routing","app-connectors"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Connect to external services with IP block lists","summary":"Control access to SaaS applications hosted on servers that aren\'t running Tailscale.","lastValidated":"2026-01-05","slug":"concepts/ip-blocklist-relays","pathToContent":"concepts/ip-blocklist-relays/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["ipv6","routing"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale IPv6 support","summary":"Understand how Tailscale works with IPv6.","lastValidated":"2026-01-12","slug":"concepts/ipv6","pathToContent":"concepts/ipv6/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Connect to your corporate laptop no matter where you left it","summary":"Connect to your corporate laptop no matter where it is.","lastValidated":"2026-01-05","slug":"concepts/laptop-anywhere","pathToContent":"concepts/laptop-anywhere/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Connect to colleagues\' local servers from anywhere","summary":"Discover how Tailscale helps you to securely connect to colleagues and servers.","lastValidated":"2026-01-05","slug":"concepts/local-team-server","pathToContent":"concepts/local-team-server/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["magicdns","tailnet-name"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Machine names","summary":"Understand how Tailscale determines machine names, and how you can rename a machine.","lastValidated":"2026-01-05","slug":"concepts/machine-names","pathToContent":"concepts/machine-names/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["macos","macsys","standalone"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Authorizing the Tailscale system extension on macOS","summary":"Authorize Tailscale system extensions on macOS.","lastValidated":"2026-01-05","slug":"concepts/macos-sysext","pathToContent":"concepts/macos-sysext/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["macos"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Three ways to run Tailscale on macOS","summary":"Explore three ways to run Tailscale on macOS so you can choose the right approach for your situation.","lastValidated":"2026-01-05","slug":"concepts/macos-variants","pathToContent":"concepts/macos-variants/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["macos","conflict","screen-time","filter","webfilterproxyd"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"macOS Screen Time and Tailscale","summary":"Identify conflicts between the macOS web content filter and Tailscale.","lastValidated":"2026-01-05","slug":"concepts/macos-webfilterproxyd","pathToContent":"concepts/macos-webfilterproxyd/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Node keys","
5summary":"How Tailscale uses node keys as the mechanism for which machines can join a tailnet.","lastValidated":"2026-01-05","slug":"concepts/node-keys","pathToContent":"concepts/node-keys/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Post-quantum cryptography","summary":"Explore post-quantum cryptography in relation to Tailscale.","lastValidated":"2025-05-02","slug":"concepts/post-quantum-cryptography","pathToContent":"concepts/post-quantum-cryptography/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Shared responsibility model","summary":"Understand the responsibilities for protecting your network.","lastValidated":"2026-01-05","slug":"concepts/shared-responsibility","pathToContent":"concepts/shared-responsibility/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["tailnet-name","tailnet"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"What is a tailnet?","summary":"Understand what the term tailnet means.","lastValidated":"2026-01-12","slug":"concepts/tailnet","pathToContent":"concepts/tailnet/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailnet Lock white paper","summary":"Review the details about the Tailnet Lock feature.","lastValidated":"2026-01-05","slug":"concepts/tailnet-lock-whitepaper","pathToContent":"concepts/tailnet-lock-whitepaper/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["tailnet-name","tailnet"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailnet names and types","summary":"A tailnet uses several name types to identify devices and manage access, including Tailnet DNS, machine, Tailnet ID, and Legacy ID, each serving unique purposes.","lastValidated":"2026-01-05","slug":"concepts/tailnet-name","pathToContent":"concepts/tailnet-name/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["security","encryption","wireguard","control-plane","data-plane","technical-overview"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale encryption","summary":"Review how Tailscale uses encryption.","lastValidated":"2026-01-07","slug":"concepts/tailscale-encryption","pathToContent":"concepts/tailscale-encryption/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["identity"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale identity","summary":"Understand how identity is established and used in Tailscale.","lastValidated":"2026-02-11","slug":"concepts/tailscale-identity","pathToContent":"concepts/tailscale-identity/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["ip-addresses","dns","tailscale-ip-addresses"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"What are these 100.x.y.z addresses?","summary":"Tailscale uses 100.x.y.z IP addresses from the Carrier-Grade NAT (CGNAT) range to ensure stable, private connections for devices on your private network.","lastValidated":"2026-01-12","slug":"concepts/tailscale-ip-addresses","pathToContent":"concepts/tailscale-ip-addresses/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["osi","networking","tailnet"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale and the OSI model","summary":"Review how Tailscale relates to the OSI model layers.","lastValidated":"2026-01-05","slug":"concepts/tailscale-osi","pathToContent":"concepts/tailscale-osi/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Is my traffic routed through your servers?","summary":"Understand how Tailscale makes routing decisions and when your traffic is routed through our DERP servers.","lastValidated":"2026-01-05","slug":"concepts/traffic-routing-through-tailscale","pathToContent":"concepts/traffic-routing-through-tailscale/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"TunnelVision vulnerability and Tailscale","summary":"Understand the TunnelVision network vulnerability warning pop-up on macOS, and how to manage it.","lastValidated":"2025-10-29","slug":"concepts/tunnel-vision","pathToContent":"concepts/tunnel-vision/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["serverless","containers"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Userspace networking mode (for containers
5)","summary":"Find out about userspace networking mode and when it is useful.","lastValidated":"2025-11-12","slug":"concepts/userspace-networking","pathToContent":"concepts/userspace-networking/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["faq","tailnet","technical-overview"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"What is Tailscale?","summary":"Get a brief introduction to Tailscale.","lastValidated":"2025-09-30","slug":"concepts/what-is-tailscale","pathToContent":"concepts/what-is-tailscale/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":true,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Where are the Windows configuration and log files?","summary":"Understand where Tailscale stores configuration and log files in devices.","lastValidated":"2025-08-06","slug":"concepts/windows-config-and-log-files","pathToContent":"concepts/windows-config-and-log-files/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["wireguard","encryption","security"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"About WireGuard","summary":"Discover how Tailscale builds on WireGuard to offer single sign-on (SSO) and other capabilities.","lastValidated":"2026-01-05","slug":"concepts/wireguard","pathToContent":"concepts/wireguard/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"\\"Zero Trust Networking\\" definition","summary":"Find out what Zero Trust Networking means.","lastValidated":"2026-01-05","slug":"concepts/zero-trust","pathToContent":"concepts/zero-trust/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["access-controls","acl-tags","acls"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Manage permissions using ACLs","summary":"Configure access control lists (ACLs) in Tailscale to manage device permissions and secure your network.","lastValidated":"2026-01-05","slug":"features/access-control/acls","pathToContent":"features/access-control/acls/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":false,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"How To","summary":"How To documentation index.","lastValidated":"2026-01-29","slug":"features/access-control/auth-keys/how-to","pathToContent":"features/access-control/auth-keys/how-to/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Securely handle an auth key","summary":"Use an environment variable to pass in auth keys to Tailscale
5CLI commands.","lastValidated":"2025-07-23","slug":"features/access-control/auth-keys/how-to/secure-auth-keys","pathToContent":"features/access-control/auth-keys/how-to/secure-auth-keys/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["acl-tags","ephemeral-nodes"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Auth keys","summary":"Use Tailscale auth keys to authenticate devices, automate device provisioning, and enhance security. Create and manage auth keys for streamlined network access and control.","lastValidated":"2026-06-30","slug":"features/access-control/auth-keys","pathToContent":"features/access-control/auth-keys/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["access-controls","security-features"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Device approval","summary":"Review and approve new devices before they can join your Tailscale network.","lastValidated":"2026-01-05","slug":"features/access-control/device-management/device-approval","pathToContent":"features/access-control/device-management/device-approval/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":true,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Device certificate verification","summary":"Use device certificates to automatically verify devices before they can join your Tailscale network.","lastValidated":"2025-09-24","slug":"features/access-control/device-management/device-certificate-verification","pathToContent":"features/access-control/device-management/device-certificate-verification/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Exporting a list of tailnet devices","summary":"Export a list of devices in your tailnet.","lastValidated":"2026-01-05","slug":"features/access-control/device-management/how-to/export-list","pathToContent":"features/access-control/device-management/how-to/export-list/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Filter devices in the admin console","summary":"Find devices meeting certain criteria in the machines page of the admin console.","lastValidated":"2026-01-05","slug":"features/access-control/device-management/how-to/filter","pathToContent":"features/access-control/device-management/how-to/filter/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":false,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"How To","summary":"How To documentation index.","lastValidated":"2026-01-29","slug":"features/access-control/device-management/how-to","pathToContent":"features/access-control/device-management/how-to/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Use Device Identity Collection","summary":"Enable Device Identity Collection to collect serial numbers from devices on your Tailscale network.","lastValidated":"2026-01-05","slug":"features/access-control/device-management/how-to/manage-identity","pathToContent":"features/access-control/device-management/how-to/manage-identity/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Remove a device","summary":"Remove devices from your Tailscale network.","lastValidated":"2026-01-05","slug":"features/access-control/device-management/how-to/remove","pathToContent":"features/access-control/device-management/how-to/remove/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Add a device","summary":"Add new devices to your Tailscale network.","lastValidated":"2026-01-05","slug":"features/access-control/device-management/how-to/set-up","pathToContent":"features/access-control/device-management/how-to/set-up/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Add a device using a QR code","summary":"Add new devices to your Tailscale network using QR code scanning.","lastValidated":"2025-09-30","slug":"features/access-control/device-management/how-to/set-up-qr-code","pathToContent":"features/access-control/device-management/how-to/set-up-qr-code/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Manage devices","summary":"See how to review and approve devices, rename a machine, and filter devices in the admin console.","lastValidated":"2025-02-03","slug":"features/access-control/device-management","pathToContent":"features/access-control/device-management/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["explanation","grants","access-controls"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Application capabilities","summary":"Understand capabilities at the application level.","lastValidated":"2025-12-01","slug":"features/access-control/grants/grants-app-capabilities","pathToContent":"features/access-control/grants/grants-app-capabilities/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["access-controls","grants","via"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Route filtering with Via","summary":"Control how traffic routes from a source to a destination, such as through specific exit nodes, subnet routers, or app connectors.","lastValidated":"2026-01-05","slug":"features/access-control/grants/grants-via","pathToContent":"features/access-control/grants/grants-via/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["access-controls","grants","overview"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Grants","summary":"Grant access control permissions across both network connections and application permissions.","lastValidated":"2026-07-24","slug":"features/access-control/grants","pathToContent":"features/access-control/grants/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":false,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"How To","summary":"How To documentation index.","lastValidated":"2026-01-29","slug":"features/access-control/how-to","pathToContent":"features/access-control/how-to/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["access-controls"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Access control","summary":"Understand the options available for access control in Tailscale.","lastValidated":"2025-05-29","slug":"features/access-control","pathToContent":"features/access-control/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Just-in-time access","
5summary":"Provide just-in-time access, also known as on-demand access, to your Tailscale network users.","lastValidated":"2025-05-02","slug":"features/access-control/just-in-time-access","pathToContent":"features/access-control/just-in-time-access/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["security-features"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Key expiry","summary":"Prevent unnecessary re-authentication when you disable key expiry. Avoid disruptions in network connectivity and still keep your Tailscale network secure.","lastValidated":"2026-01-05","slug":"features/access-control/key-expiry","pathToContent":"features/access-control/key-expiry/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["access-controls","security-features"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"User approval","summary":"Review and approve new users before they can join your Tailscale network.","lastValidated":"2025-09-25","slug":"features/access-control/user-approval","pathToContent":"features/access-control/user-approval/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":false,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"How To","summary":"How To documentation index.","lastValidated":"2026-01-29","slug":"features/app-connectors/how-to","pathToContent":"features/app-connectors/how-to/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["app-connectors","routing"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Set up an app connector","summary":"Update your tailnet policy file and set up your app connector devices, and app connector settings.","lastValidated":"2026-01-05","slug":"features/app-connectors/how-to/setup","pathToContent":"features/app-connectors/how-to/setup/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["routing","app-connectors","exit-nodes","subnets"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"How app connectors work","summary":"Route SaaS application traffic in your tailnet using app connectors.","lastValidated":"2025-12-10","slug":"features/app-connectors","pathToContent":"features/app-connectors/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["android","split-tunnel","apps"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Using app-based split tunneling on Android","summary":"Configure specific apps to use or be excluded from Tailscale tunneling on Android devices.","lastValidated":"2026-01-05","slug":"features/client/android-app-split-tunneling","pathToContent":"features/client/android-app-split-tunneling/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Manage devices using the web interface","summary":"Manage your individual device using the web interface.","lastValidated":"2026-01-05","slug":"features/client/device-web-interface","pathToContent":"features/client/device-web-interface/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Fast user switching","summary":"Quickly switch between two or more logged in accounts on the same device, without requiring re-authentication.","lastValidated":"2025-12-04","slug":"features/client/fast-user-switching","pathToContent":"features/client/fast-user-switching/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":false,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Client","summary":"Client documentation index.","lastValidated":"2026-01-29","slug":"features/client","pathToContent":"features/client/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Using VPN On Demand for iOS and macOS","summary":"Automatically connect and disconnect Tailscale on your iOS and macOS devices.","lastValidated":"2026-01-05","slug":"features/client/ios-vpn-on-demand","pathToContent":"features/client/ios-vpn-on-demand/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Linux systray application","summary":"Use the Linux systray app for quick access to features like user switching and exit nodes.","lastValidated":"2026-01-05","slug":"features/client/linux-systray","pathToContent":"features/client/linux-systray/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["access-controls"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Manage client preferences","summary":"Block incoming connections from Tailscale, or ignore Tailscale\'s DNS settings and advertised routes.","lastValidated":"2026-01-05","slug":"features/client/manage-preferences","pathToContent":"features/client/manage-preferences/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Uninstall Tailscale","summary":"Uninstall the Tailscale client.","lastValidated":"2026-07-22","slug":"features/client/uninstall","pathToContent":"features/client/uninstall/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Update Tailscale","summary":"Update the Tailscale client on various platforms.","lastValidated":"2025-12-04","slug":"features/client/update","pathToContent":"features/client/update/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["containers"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Understanding Docker
5components","summary":"Docker components overview covering Engine that runs containers, Dockerfiles that define images, images that package apps, containers that run them, and Compose for multi container setups.","lastValidated":"2026-03-23","slug":"features/containers/docker/docker-components","pathToContent":"features/containers/docker/docker-components/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Setting up Docker Desktop to work with Tailscale","summary":"Set up Docker Desktop containers that can be accessed in your tailnet.","lastValidated":"2026-03-23","slug":"features/containers/docker/docker-desktop","pathToContent":"features/containers/docker/docker-desktop/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["containers"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Docker configuration parameters","summary":"Use Docker environment variables to configure how a Tailscale container authenticates, connects to your tailnet, and exposes services.","lastValidated":"2026-03-23","slug":"features/containers/docker/docker-params","pathToContent":"features/containers/docker/docker-params/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["containers"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Connect a Docker container to your tailnet with an alternative Docker manager","summary":"Run the Tailscale Docker image with alternative container managers like Podman, Portainer, or Colima using the same configuration.","lastValidated":"2026-03-23","slug":"features/containers/docker/how-to/connect-docker-alt-manager","pathToContent":"features/containers/docker/how-to/connect-docker-alt-manager/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["containers"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Connect a Docker container to your tailnet with Docker Compose","summary":"Set up a Tailscale-connected container using Docker Compose with nginx, allowing secure access to the service over your tailnet.","lastValidated":"2026-03-23","slug":"features/containers/docker/how-to/connect-docker-container","pathToContent":"features/containers/docker/how-to/connect-docker-container/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["containers"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Connect a Docker container to your tailnet with standalone Docker","summary":"Run the Tailscale Docker image using a single command to create and authenticate a container to your tailnet.","lastValidated":"2026-03-23","slug":"features/containers/docker/how-to/connect-docker-standalone","pathToContent":"features/containers/docker/how-to/connect-docker-standalone/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":false,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"How To","summary":"How To documentation index.","lastValidated":"2026-01-29","slug":"features/containers/docker/how-to","pathToContent":"features/containers/docker/how-to/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Docker","summary":"Explore how to use Tailscale inside Docker containers.","lastValidated":"2026-03-23","slug":"features/containers/docker","pathToContent":"features/containers/docker/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":false,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Containers","summary":"Containers documentation index.","lastValidated":"2026-01-29","slug":"features/containers","pathToContent":"features/containers/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":false,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"LXC","summary":"LXC documentation index.","lastValidated":"2026-01-29","slug":"features/containers/lxc","pathToContent":"features/containers/lxc/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["containers"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale in LXC containers","summary":"Use Tailscale in LXC containers.","lastValidated":"2026-01-09","slug":"features/containers/lxc/lxc-unprivileged","pathToContent":"features/containers/lxc/lxc-unprivileged/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"public alpha","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Declarative node sharing","summary":"Define sharing relationships and grant access to resources across trusted tailnets using policy.","lastValidated":"2026-08-26","slug":"features/declarative-node-sharing","pathToContent":"features/declarative-node-sharing/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Device posture management","summary":"Use device posture for enforcing device rules in your tailnet.","lastValidated":"2026-06-24","slug":"features/device-posture","pathToContent":"features/device-posture/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["ephemeral-nodes","serverless"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Ephemeral nodes","summary":"Use ephemeral nodes in Tailscale for managing short-lived devices like containers and CI/CD systems.","lastValidated":"2025-12-04","slug":"features/ephemeral-nodes","pathToContent":"features/ephemeral-nodes/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["exit-nodes"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Recommended exit nodes","summary":"Understand how Tailscale can recommend exit nodes based on your location and latency.","lastValidated":"2025-01-07","slug":"features/exit-nodes/auto-exit-nodes","pathToContent":"features/exit-nodes/auto-exit-nodes/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":false,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"How To","summary":"How To documentation index.","lastValidated":"2026-01-29","slug":"features/exit-nodes/how-to","pathToContent":"features/exit-nodes/how-to/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["exit-nodes","quick-guide"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Use exit nodes","summary":"Route traffic through a specific device in your tailnet, and configure devices to use an exit node.","lastValidated":"2025-09-19","slug":"features/exit-nodes/how-to/setup","pathToContent":"features/exit-nodes/how-to/setup/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["routing","exit-nodes"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Exit nodes (route all traffic)","summary":"Route all internet traffic through a specific device on your network.","lastValidated":"2025-12-15","slug":"features/exit-nodes","pathToContent":"features/exit-nodes/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["exit-nodes"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Mandatory exit nodes","summary":"Enforce use of an exit node for your Tailscale devices.","lastValidated":"2024-12-20","slug":"features/exit-nodes/mandatory-exit-nodes","pathToContent":"features/exit-nodes/mandatory-exit-nodes/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["routing","exit-nodes","mullvad","add-ons"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Mullvad exit nodes","summary":"Use Mullvad VPN endpoints as exit nodes for your tailnet.","lastValidated":"2026-01-09","slug":"features/exit-nodes/mullvad-exit-nodes","pathToContent":"features/exit-nodes/mullvad-exit-nodes/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Firewall mode in tailscaled","summary":"Understand the different firewall modes supported by Tailscale on Linux devices.","lastValidated":"2025-12-29","slug":"features/firewall-mode","pathToContent":"features/firewall-mode/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"public alpha","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Group visibility on Tailscale clients","summary":"Get group membership information for applications running in your Tailscale network.","lastValidated":"2026-06-10","
5slug":"features/group-visibility-clients","pathToContent":"features/group-visibility-clients/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Features","summary":"Features documentation index.","lastValidated":"2026-01-29","slug":"features","pathToContent":"features/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Configuration audit logging","summary":"Identify who did what, and when, to your tailnet configuration.","lastValidated":"2026-01-05","slug":"features/logging/audit-logging","pathToContent":"features/logging/audit-logging/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Logging overview","summary":"Understand Tailscale\'s logging infrastructure.","lastValidated":"2026-01-05","slug":"features/logging","pathToContent":"features/logging/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["monitoring","log-streaming"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Log streaming","summary":"Stream Tailscale logs to a security information and event management (SIEM) system, Amazon S3, and S3-compatible service.","lastValidated":"2026-02-02","slug":"features/logging/log-streaming","pathToContent":"features/logging/log-streaming/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Network flow logs","summary":"View networking telemetry for nodes in your Tailscale network.","lastValidated":"2026-01-23","slug":"features/logging/network-flow-logs","pathToContent":"features/logging/network-flow-logs/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["automation","macos","ios"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"macOS and iOS shortcuts","summary":"Understand how Tailscale works with the Shortcuts app, allowing you to automate tasks.","lastValidated":"2026-01-05","slug":"features/mac-ios-shortcuts","pathToContent":"features/mac-ios-shortcuts/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["dns","magicdns","tailnet-name"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"MagicDNS","summary":"Find out how to automatically register DNS names for devices in your Tailscale network.","lastValidated":"2026-01-05","slug":"features/magicdns","pathToContent":"features/magicdns/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Manage multiple tailnets","summary":"Manage multiple tailnets under a single organization.","lastValidated":"2026-02-04","slug":"features/multiple-tailnets","pathToContent":"features/multiple-tailnets/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["oauth","auth-keys","device-provisioning"],"releaseStatus":"public alpha","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"feature-guide","availability":["all"],"title":"Device provisioning with OAuth apps","summary":"Build internal tools that provision tailnet devices on behalf of individual users with a standard OAuth authorization code flow, so each device carries the consenting user\'s identity.","lastValidated":"2026-06-24","slug":"features/oauth-apps/device-provisioning","pathToContent":"features/oauth-apps/device-provisioning/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["oauth"],"releaseStatus":"public alpha","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"feature-guide","availability":["all"],"title":"OAuth apps","summary":"Build internal tools that act on behalf of individual users through a standard OAuth 2.0 authorization code flow, so each action carries the consenting user\'s identity.","lastValidated":"2026-06-30","slug":"features/oauth-apps","pathToContent":"features/oauth-apps/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["oauth","auth"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"OAuth clients","summary":"Use OAuth clients to provide ongoing access to the Tailscale API.","lastValidated":"2026-06-30","slug":"features/oauth-clients","pathToContent":"features/oauth-clients/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["feature-guide","peer-relays"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"feature-guide","availability":["all"],"title":"Tailscale Peer Relays","summary":"Use Tailscale Peer Relays for client-to-client connections when direct connections aren\'t possible.","lastValidated":"2026-02-04","slug":"features/peer-relay","pathToContent":"features/peer-relay/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":true,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Renew a device\'
5s key seamlessly","summary":"Renew a device\'s node key without losing network connectivity.","lastValidated":"2025-12-19","slug":"features/seamless-key-renewal","pathToContent":"features/seamless-key-renewal/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["security-features","security"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Secure node state storage","summary":"Encrypt Tailscale node state at rest.","lastValidated":"2026-01-12","slug":"features/secure-node-state-storage","pathToContent":"features/secure-node-state-storage/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Viewing the list of endpoints on your network","summary":"Find out how to monitor and easily connect to the endpoints running on machines in your Tailscale network.","lastValidated":"2026-01-05","slug":"features/services","pathToContent":"features/services/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":true,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Let connections continue when node keys expire","summary":"Control session connectivity when a device\'s node key expires.","lastValidated":"2025-12-08","slug":"features/session-expiry","pathToContent":"features/session-expiry/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Changing user roles","summary":"Change user roles for restricting admin console access.","lastValidated":"2026-01-05","slug":"features/sharing/how-to/change-role","pathToContent":"features/sharing/how-to/change-role/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Exporting a list of tailnet users","summary":"Export a list of users in your tailnet.","lastValidated":"2026-01-05","slug":"features/sharing/how-to/export-list","pathToContent":"features/sharing/how-to/export-list/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":false,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"How To","summary":"How To documentation index.","lastValidated":"2026-01-29","slug":"features/sharing/how-to","pathToContent":"features/sharing/how-to/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Invite any user to your tailnet","summary":"Send and manage invitations for your Tailscale network.","lastValidated":"2026-01-05","slug":"features/sharing/how-to/invite-any-user","pathToContent":"features/sharing/how-to/invite-any-user/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Invite team members to your tailnet","summary":"Invite team members to your Tailscale network.","lastValidated":"2026-01-05","slug":"features/sharing/how-to/invite-team-members","pathToContent":"features/sharing/how-to/invite-team-members/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Inviting users","summary":"Explore the different ways to invite users to your Tailscale network.","lastValidated":"2024-06-18","slug":"features/sharing/how-to/invite-users","pathToContent":"features/sharing/how-to/invite-users/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["sso"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Offboarding users","summary":"Offboard users from your Tailscale network.","lastValidated":"2026-01-05","slug":"features/sharing/how-to/offboard","pathToContent":"features/sharing/how-to/offboard/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Deleting and suspending users","summary":"Delete and suspend users.","lastValidated":"2026-01-05","slug":"features/sharing/how-to/remove-team-members","pathToContent":"features/sharing/how-to/remove-team-members/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Share your machines with other users","summary":"Give a Tailscale user on another tail
5net access to a private machine within your tailnet, without exposing the machine publicly.","lastValidated":"2026-01-05","slug":"features/sharing","pathToContent":"features/sharing/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["routing","subnets","use-case"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Site-to-site networking","summary":"Connect two subnets in your tailnet with each other.","lastValidated":"2025-12-08","slug":"features/site-to-site","pathToContent":"features/site-to-site/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["feature-guide","split-dns","dns","device-attributes"],"releaseStatus":"GA","related":[],"index":true,"hidden":true,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Split DNS policies","summary":"Create split DNS policies using node attributes.","lastValidated":"2025-12-10","slug":"features/split-dns-policies","pathToContent":"features/split-dns-policies/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["routing","subnets"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"4via6 subnet routers","summary":"Send traffic to overlapped IPv4 subnets.","lastValidated":"2026-02-02","slug":"features/subnet-routers/4via6-subnets","pathToContent":"features/subnet-routers/4via6-subnets/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["routing","subnets"],"releaseStatus":"GA","related":[],"index":true,"hidden":true,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Subnet router BGP advertisement","summary":"Set up BGP advertisement for return path from HA subnet routers","lastValidated":"2026-01-05","slug":"features/subnet-routers/how-to/bgp","pathToContent":"features/subnet-routers/how-to/bgp/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":false,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"How To","summary":"How To documentation index.","lastValidated":"2026-01-29","slug":"features/subnet-routers/how-to","pathToContent":"features/subnet-routers/how-to/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":true,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Set up Raspberry Pi as a subnet router","summary":"Set up a Raspberry Pi as a subnet router in your tailnet.","lastValidated":"2025-10-29","slug":"features/subnet-routers/how-to/raspberry-pi","pathToContent":"features/subnet-routers/how-to/raspberry-pi/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["routing","subnets"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Configure a subnet router","summary":"Configure a subnet router to relay access in your network, including resources where Tailscale cannot be installed.","lastValidated":"2026-01-05","slug":"features/subnet-routers/how-to/setup","pathToContent":"features/subnet-routers/how-to/setup/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["routing","subnets"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Subnet routers","summary":"Use subnet routers to give devices outside your local network access to services within specific subnets. Extend your private network with Tailscale.","lastValidated":"2026-01-12","slug":"features/subnet-routers","pathToContent":"features/subnet-routers/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["access-controls","tags","tailnet-policy-file","acls","grants"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Group devices with tags","summary":"Use Tailscale tags to authenticate and identify non-user devices, such as a server.","lastValidated":"2025-12-04","slug":"features/tags","pathToContent":"features/tags/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["taildrive","sharing","files"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Taildrive","summary":"Share folders securely between devices on your Tailscale network.","lastValidated":"2026-01-05","slug":"features/taildrive","pathToContent":"features/taildrive/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":false,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"How To","summary":"How To documentation index.","lastValidated":"2026-01-29","slug":"features/taildrop/how-to","pathToContent":"features/taildrop/how-to/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["taildrop","nas"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Taildrop with NAS devices","summary":"Transfer files from your personal devices to a NAS device.","lastValidated":"2026-01-05","slug":"features/taildrop/how-to/set-up-taildrop-with-nas","pathToContent":"features/taildrop/how-to/set-up-taildrop-with-nas/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["taildrop"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Taildrop","summary":"Send files between your personal devices on a Tailscale network.","lastValidated":"2026-01-05","slug":"features/taildrop","pathToContent":"features/taildrop/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailnet Lock","
5summary":"Ensure that no node joins your tailnet unless trusted nodes in your tailnet sign the new node.","lastValidated":"2025-12-02","slug":"features/tailnet-lock","pathToContent":"features/tailnet-lock/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":true,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Add custom extra DNS records to your tailnet","summary":"Add extra DNS records to your tailnet for resolving nodes.","lastValidated":"2025-12-10","slug":"features/tailnet-policy-file/extra-dns-records","pathToContent":"features/tailnet-policy-file/extra-dns-records/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["access-controls","tailnet","policies","tailnet-policy-file"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailnet policy file","summary":"Understand the tailnet policy file.","lastValidated":"2025-05-21","slug":"features/tailnet-policy-file","pathToContent":"features/tailnet-policy-file/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["ipsets","policies","access-controls","acls","grants"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"IP sets","summary":"Review how to use IP sets.","lastValidated":"2025-10-29","slug":"features/tailnet-policy-file/ip-sets","pathToContent":"features/tailnet-policy-file/ip-sets/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["access-controls","tailnet-policy-file"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Edit access control policies in your tailnet policy file","summary":"Create and edit access control policies in your tailnet policy file.","lastValidated":"2026-03-13","slug":"features/tailnet-policy-file/manage-tailnet-policies","pathToContent":"features/tailnet-policy-file/manage-tailnet-policies/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailnets API","summary":"Create and manage tailnets in your organization programmatically with the Tailscale Tailnets API.","lastValidated":"2026-08-25","slug":"features/tailnets-api","pathToContent":"features/tailnets-api/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Use device posture for just-in-time access","summary":"Use device posture for just-in-time access to resources in your tailnet.","lastValidated":"2026-01-19","slug":"features/tailscale-accessbot-jit","pathToContent":"features/tailscale-accessbot-jit/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Host a website using a tailnet device","summary":"Host a website from a device in your tailnet.","lastValidated":"2026-01-05","slug":"features/tailscale-funnel/how-to/host-websites","pathToContent":"features/tailscale-funnel/how-to/host-websites/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":false,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"How To","summary":"How To documentation index.","lastValidated":"2026-01-29","slug":"features/tailscale-funnel/how-to","pathToContent":"features/tailscale-funnel/how-to/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["funnel"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale Funnel","summary":"Securely route internet traffic to local services using Tailscale Funnel.","lastValidated":"2026-01-20","slug":"features/tailscale-funnel","pathToContent":"features/tailscale-funnel/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["serve"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale Serve","summary":"Explore the Tailscale Serve service.","lastValidated":"2026-01-20","slug":"features/tailscale-serve","pathToContent":"features/tailscale-serve/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["services","feature-guide"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale Services","summary":"Securely connect to and manage access to your internal resources using Tailscale Services.","lastValidated":"2026-02-02","slug":"features/tailscale-services","pathToContent":"features/tailscale-services/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["feature-guide","tailscale-skill"],"releaseStatus":"public alpha","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"feature-guide","availability":["all"],"title":"Tailscale skill for coding agents","summary":"Install the Tailscale skill so a coding agent can work with Tailscale configuration and code.","lastValidated":"2026-07-24","slug":"features/tailscale-skill","pathToContent":"features/tailscale-skill/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":false,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"How To","summary":"How To documentation index.","lastValidated":"2026-01-29","slug":"features/tailscale-ssh/how-to","pathToContent":"features/tailscale-ssh/how-to/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["ssh"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Send Tailscale SSH session recordings to S3","summary":"Configure an S3 backend for SSH session recording.","lastValidated":"2026-01-09","slug":"features/tailscale-ssh/how-to/session-recording-s3","pathToContent":"features/tailscale-ssh/how-to/session-recording-s3/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["ssh"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale SSH","summary":"Use Tailscale SSH to manage the authentication and authorization of SSH connections in your tailnet.","lastValidated":"2026-01-05","slug":"features/tailscale-ssh","pathToContent":"features/tailscale-ssh/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["ssh"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale SSH Console","summary":"Use Tailscale SSH Console to start an SSH session directly from the admin console.","lastValidated":"2026-01-05","slug":"features/tailscale-ssh/tailscale-ssh-console","pathToContent":"features/tailscale-ssh/tailscale-ssh-console/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["ssh"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale SSH session recording","summary":"Use Tailscale SSH session recording to collect end-to-e
5nd encrypted recordings of Tailscale SSH sessions.","lastValidated":"2026-01-05","slug":"features/tailscale-ssh/tailscale-ssh-session-recording","pathToContent":"features/tailscale-ssh/tailscale-ssh-session-recording/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["mdm","windows","ios","macos","android","linux","restriction","managed"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Customize Tailscale using system policies","summary":"A list of configuration keys you can use to customize the Tailscale client using system policies, including MDM.","lastValidated":"2026-08-11","slug":"features/tailscale-system-policies","pathToContent":"features/tailscale-system-policies/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"feature-guide","availability":["all"],"title":"tsidp","summary":"Use tsidp to secure any service that supports OIDC/OAuth with no additional login while in a tailnet, including self-hosted apps like Grafana and MCP servers.","lastValidated":"2026-03-10","slug":"features/tsidp","pathToContent":"features/tsidp/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Hello tsnet","summary":"Create a basic HTTP server in your tailnet using the Tailscale tsnet library.","lastValidated":"2025-09-18","slug":"features/tsnet/how-to/create-basic-tsnet-app","pathToContent":"features/tsnet/how-to/create-basic-tsnet-app/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":false,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"How To","summary":"How To documentation index.","lastValidated":"2026-01-29","slug":"features/tsnet/how-to","pathToContent":"features/tsnet/how-to/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Register a tsnet application as a Tailscale Service","summary":"Use the tsnet package and register a Go program as a Tailscale Service host.","lastValidated":"2026-01-27","slug":"features/tsnet/how-to/register-service","pathToContent":"features/tsnet/how-to/register-service/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"tsnet","summary":"Use the tsnet package to embed Tailscale inside a Go program.","lastValidated":"2026-07-24","slug":"features/tsnet","pathToContent":"features/tsnet/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"tsrecorder","summary":"Use tsrecorder for session recording with Tailscale SSH and the Tailscale Kubernetes Operator.","lastValidated":"2026-06-12","slug":"features/tsrecorder","pathToContent":"features/tsrecorder/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["access-controls","security-features"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"User & group provisioning","summary":"Learn about the System for Cross-domain Identity Management (SCIM) identity providers that Tailscale supports.","lastValidated":"2025-12-08","slug":"features/user-group-provisioning","pathToContent":"features/user-group-provisioning/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["access-controls","grants","visual-editor"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Visual policy editor","summary":"Update your tailnet policy file with the visual policy editor.","lastValidated":"2026-03-13","slug":"features/visual-editor","pathToContent":"features/visual-editor/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":false,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"How To","summary":"How To documentation index.","lastValidated":"2026-01-29","slug":"features/webhooks/how-to","pathToContent":"features/webhooks/how-to/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["webhooks","how-to","secrets"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Rotate a webhook secret","summary":"Replace a webhook secret to secure your webhook endpoint as part of regular security maintenance or replace a compromised key","lastValidated":"2026-01-20","slug":"features/webhooks/how-to/rotate-webhook-secret","pathToContent":"features/webhooks/how-to/rotate-webhook-secret/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Webhooks","summary":"Set up a webhook to receive notification of events on your Tailscale network.","lastValidated":"2026-01-05","slug":"features/webhooks","pathToContent":"features/webhooks/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Workload identity federation","summary":"Use federated OIDC workload identities from third-party providers to authenticate requests to the Tailscale API.","lastValidated":"2026-01-30","slug":"features/workload-identity-federation","pathToContent":"features/workload-identity-federation/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"SSH into a Linux VM","summary":"Use Tailscale SSH to connect securely to a Linux VM.","lastValidated":"2025-12-08","slug":"how-to/connect-ssh-linux-vm","pathToContent":"how-to/connect-ssh-linux-vm/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["devices"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Connect to devices","summary":"Connect to devices in your tailnet.","lastValidated":"2026-01-05","slug":"how-to/connect-to-devices","pathToContent":"how-to/connect-to-devices/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Access your virtual private cloud (VPC)","summary":"Acce
5ss your virtual private cloud (VPC) and configure a subnet router using Tailscale.","lastValidated":"2026-01-05","slug":"how-to/connect-vpc","pathToContent":"how-to/connect-vpc/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"How-to Guides","summary":"Step-by-step instructions on how to use Tailscale features to make managing your network easy.","lastValidated":"2024-07-24","slug":"how-to","pathToContent":"how-to/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale quickstart","summary":"Install Tailscale in minutes. Create your private network and manage any device, anywhere.","lastValidated":"2026-01-05","slug":"how-to/quickstart","pathToContent":"how-to/quickstart/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Keep Tailscale running when I\'m not logged in to my computer","summary":"Configure your device to run Tailscale even when no users are logged in.","lastValidated":"2026-09-25","slug":"how-to/run-unattended","pathToContent":"how-to/run-unattended/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Use ufw to lock down an Ubuntu server","summary":"Accept connections from Tailscale and ignore internet traffic to a server.","lastValidated":"2026-01-05","slug":"how-to/secure-ubuntu-server-with-ufw","pathToContent":"how-to/secure-ubuntu-server-with-ufw/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Configure Tailscale clients to use a custom control server","summary":"Configure Tailscale clients to use a custom control server such as Headscale.","lastValidated":"2026-09-21","slug":"how-to/set-up-custom-control-server","pathToContent":"how-to/set-up-custom-control-server/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["routing","subnets","apps"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Set up high availability","summary":"Set up high availability (HA) for subnet routers and app connectors.","lastValidated":"2025-10-03","slug":"how-to/set-up-high-availability","pathToContent":"how-to/set-up-high-availability/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Enabling HTTPS","summary":"Configure HTTPS for devices in your Tailscale network.","lastValidated":"2025-12-10","slug":"how-to/set-up-https-certificates","pathToContent":"how-to/set-up-https-certificates/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["ssh"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Setting up a server on your Tailscale network","summary":"Set up a server in your tailnet, and use Tailscale SSH to manage authentication for those servers.","lastValidated":"2025-12-04","slug":"how-to/set-up-servers","pathToContent":"how-to/set-up-servers/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Smaller binaries for embedded devices","summary":"Build an extra-small Tailscale binary for deployment in disk space constrained environments.","lastValidated":"2026-01-05","slug":"how-to/set-up-small-tailscale","pathToContent":"how-to/set-up-small-tailscale/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":true,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Testing your connection","summary":"Ensure your Tailscale connection is working.","lastValidated":"2026-01-05","slug":"how-to/test-connections","pathToContent":"how-to/test-connections/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":true,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Third-party deep packet inspection (DPI) solutions with Tailscale","summary":"Use third-party deep packet inspection (DPI) solutions with Tailscale.","lastValidated":"2025-11-18","slug":"how-to/use-third-party-dpi","pathToContent":"how-to/use-third-party-dpi/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["automation"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Automations","summary":"Automate your tailnet using infrastru
5cture-as-code providers, webhooks, and other integrations.","lastValidated":"2025-12-14","slug":"automations","pathToContent":"hubs/automations/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Aperture chat sandbox","summary":"Find documentation for the Aperture chat sandbox, including setup, operations, reference, and troubleshooting.","lastValidated":"2026-08-14","slug":"chat-sandbox","pathToContent":"hubs/chat-sandbox/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Connect to a cloud server","summary":"Connect your cloud server to Tailscale.","lastValidated":"2024-06-18","slug":"cloud-server","pathToContent":"hubs/cloud-server/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Containers and virtualization","summary":"Integrate Tailscale with container and virtualization technologies.","lastValidated":"2024-06-18","slug":"containers-and-virtualization","pathToContent":"hubs/containers-and-virtualization/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Connect to a database","summary":"Connect to databases over Tailscale.","lastValidated":"2025-12-01","slug":"database","pathToContent":"hubs/database/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["tailscale-skill"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Develop with AI","summary":"Give AI coding agents and chat assistants accurate Tailscale information.","lastValidated":"2026-07-28","slug":"develop-with-ai","pathToContent":"hubs/develop-with-ai/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Integrate with a firewall","summary":"Integrate Tailscale with popular firewall products.","lastValidated":"2025-08-03","slug":"firewall","pathToContent":"hubs/firewall/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["acls","gitops"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"GitOps for Tailscale","summary":"Use GitOps to maintain your tailnet policy file as code.","lastValidated":"2025-05-02","slug":"gitops","pathToContent":"hubs/gitops/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":false,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Hubs","summary":"Hubs documentation index.","lastValidated":"2026-01-29","slug":"hubs","pathToContent":"hubs/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Access or share resources from within your development environment","summary":"Explore recommended developer tools to use with Tailscale.","lastValidated":"2026-07-24","slug":"integration-dev-tools","pathToContent":"hubs/integration-dev-tools/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Infrastructure as code","summary":"Infrastructure as Code integrations let you deploy infrastructure programmatically.","lastValidated":"2025-01-28","slug":"integration-infrastru
5cture-as-code","pathToContent":"hubs/integration-infrastructure-as-code/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Connect to a serverless app","summary":"Securely connect to serverless applications using Tailscale","lastValidated":"2025-04-23","slug":"integration-serverless-apps","pathToContent":"hubs/integration-serverless-apps/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["containers","kubernetes"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Tailscale on Kubernetes","summary":"Use Tailscale for Kubernetes cluster deployments.","lastValidated":"2026-05-29","slug":"kubernetes","pathToContent":"hubs/kubernetes/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Manage access","summary":"Manage access to your Tailscale resources.","lastValidated":"2025-05-07","slug":"manage","pathToContent":"hubs/manage/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Manage users","summary":"See how to invite users, assign or change user roles, remove users, and quickly switch between accounts.","lastValidated":"2025-09-30","slug":"manage-users","pathToContent":"hubs/manage-users/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Deploy Tailscale with an MDM solution","summary":"Integrate Tailscale with an MDM solution.","lastValidated":"2024-07-18","slug":"mdm","pathToContent":"hubs/mdm/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["idp"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Enable two-factor and multifactor authentication","summary":"Enable MFA from your identity provider.","lastValidated":"2024-06-18","slug":"multifactor-auth","pathToContent":"hubs/multifactor-auth/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["oauth"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"OAuth on Tailscale","summary":"Authorize tools and integrations to act upon your tailnet through OAuth.","lastValidated":"2026-06-30","slug":"oauth","pathToContent":"hubs/oauth/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Tailscale quick guides","summary":"Configure some of Tailscale\'s most popular features.","lastValidated":"2026-01-05","slug":"quick-guides","pathToContent":"hubs/quick-guides/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Connect to your remote code environment","summary":"Connect to remote code environments like code-server, Coder, GitHub Codespaces, Gitpod, and OpenVSCode.","lastValidated":"2024-12-20","slug":"remote-code","pathToContent":"hubs/remote-code/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Resources","summary":"Access resources about Tailscale software changes, comparisons with other products, open source community projects, security, privacy, and compliance.","lastValidated":"2026-01-05","slug":"resources","pathToContent":"hubs/resources/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Route traffic","summary":"Explore Tailscale routing features, such as subnet routers, exit nodes, and MagicDNS.","lastValidated":"2025-06-03","slug":"route","pathToContent":"hubs/route/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Secure the network","summary":"Prevent security issues with your Tailscale network.","lastValidated":"2026-01-05","slug":"secure-networks","pathToContent":"hubs/secure-networks/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Set up servers","summary":"Securely set up servers using tags, pre-authorization keys, ephemeral nodes, and more.","lastValidated":"2025-03-03","slug":"servers","pathToContent":"hubs/servers
5/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Access and share services","summary":"View services, share machines, and share files in your tailnet.","lastValidated":"2026-01-05","slug":"share","pathToContent":"hubs/share/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Share a web server","summary":"Share resources, including websites, from tailnet devices.","lastValidated":"2024-12-20","slug":"share-web-server","pathToContent":"hubs/share-web-server/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Get support","summary":"Get support from Tailscale.","lastValidated":"2024-08-14","slug":"support","pathToContent":"hubs/support/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Docs","summary":"Use Tailscale to securely connect your devices, no matter where they live.","lastValidated":"2026-02-04","slug":"","pathToContent":"index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Install Tailscale on Amazon Fire devices","summary":"Install Tailscale on your Amazon Fire devices, including Amazon Fire TV and Amazon Fire Tablets.","lastValidated":"2026-01-27","slug":"install/amazon-fire","pathToContent":"install/amazon-fire/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":true,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Install Tailscale on Android","summary":"Install the Tailscale client on Android devices.","lastValidated":"2025-02-21","slug":"install/android/android-quickstart","pathToContent":"install/android/android-quickstart/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Install Tailscale on Android","summary":"Install the Tailscale client on Android devices.","lastValidated":"2026-01-05","slug":"install/android","pathToContent":"install/android/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Install Tailscale on an Apple TV","summary":"Install the Tailscale client on an Apple TV.","lastValidated":"2026-01-05","slug":"install/appletv","pathToContent":"install/appletv/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Install Tailscale on a Chromebook","summary":"Install the Tailscale client on a Chromebook.","lastValidated":"2025-08-22","slug":"install/chromebook","pathToContent":"install/chromebook/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aws","ephemeral-nodes","serverless"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale on AWS App Runner","summary":"Install the Tailscale client on AWS App Runner.","lastValidated":"2026-01-05","slug":"install/cloud/aws/aws-app-runner","pathToContent":"install/cloud/aws/aws-app-runner/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aws","ephemeral-nodes","serverless"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale on AWS Lambda","summary":"Run Tailscale on AWS Lambda functions.","lastValidated":"2026-01-05","slug":"install/cloud/aws/aws-lambda","pathToContent":"install/cloud/aws/aws-lambda/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aws","ephemeral-nodes","serverless"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale on AWS Lightsail","summary":"Install the Tailscale client in AWS Lightsail containers.","lastValidated":"2026-01-05","slug":"install/cloud/aws/aws-lightsail","pathToContent":"install/cloud/aws/aws-lightsail/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aws","subnets"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Access AWS RDS privately using Tailscale","summary":"Use Tailscale to privately access AWS RDS.","lastValidated":"2026-01-05","slug":"install/cloud/aws/aws-rds","pathToContent":"install/cloud/aws/aws-rds/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aws","subnets"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Connect to an AWS VPC using subnet routes","summary":"Deploy a Tailscale subnet router on an Amazon EC2 instance. Get secure access to your VPC\'s EC2 instances.","lastValidated":"2025-12-04","slug":"install/cloud/aws","pathToContent":"install/cloud/aws/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Install Tailscale on an AWS VM","summary":"Install the Tailscale client on an AWS Linux VM and use some common features.","lastValidated":"2026-01-12","slug":"install/cloud/aws/quickstart","pathToContent":"install/cloud/aws/quickstart/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["ephemeral-nodes","serverless"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Using Tailscale on Azure App Service","summary":"Use Azure App Service with Tailscale.","lastValidated":"2026-01-05","slug":"install/cloud/azure/azure-app-service","pathToContent":"install/cloud/azure/azure-app-service/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":false,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Azure","summary":"Azure documentation index.","lastValidated":"2026-01-29","slug":"install/cloud/azure","pathToContent":"install/cloud/azure/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["azure","subnets"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Access Azure Linux VMs privately using Tailscale","summary":"Acce
5ss Azure Linux VMs privately with Tailscale.","lastValidated":"2026-01-05","slug":"install/cloud/azure/linux","pathToContent":"install/cloud/azure/linux/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["azure","subnets"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Access Azure Windows VMs privately using Tailscale","summary":"Use Tailscale to privately access Azure Windows VMs.","lastValidated":"2026-01-05","slug":"install/cloud/azure/windows","pathToContent":"install/cloud/azure/windows/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["ephemeral-nodes","serverless","gcp"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale on Google Cloud Run","summary":"Install the Tailscale client on containers in Google Cloud Run.","lastValidated":"2026-01-05","slug":"install/cloud/cloudrun","pathToContent":"install/cloud/cloudrun/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["code"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Access your tailnet from Coder","summary":"Write code remotely by installing Tailscale on Coder.","lastValidated":"2025-03-03","slug":"install/cloud/coder","pathToContent":"install/cloud/coder/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["ephemeral-nodes","serverless"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale on Fly.io","summary":"Use Tailscale with Fly.io.","lastValidated":"2025-12-04","slug":"install/cloud/flydotio","pathToContent":"install/cloud/flydotio/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["gcp","subnets"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Access Google Compute Engine VMs privately using Tailscale","summary":"Access Google Compute Engine VMs privately using Tailscale.","lastValidated":"2025-12-04","slug":"install/cloud/gce","pathToContent":"install/cloud/gce/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["code"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Access your tailnet from Gitpod","summary":"Write code remotely by installing Tailscale on Gitpod.","lastValidated":"2026-01-05","slug":"install/cloud/gitpod","pathToContent":"install/cloud/gitpod/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["ephemeral-nodes","serverless"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale on Heroku","summary":"Use Tailscale on Heroku.","lastValidated":"2025-12-04","slug":"install/cloud/heroku","pathToContent":"install/cloud/heroku/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Access Hetzner Servers privately using Tailscale","summary":"Set up secure connections to Hetzner\'s Linux VMs, configure firewalls, and optimize performance with step-by-step instructions.","lastValidated":"2026-01-05","slug":"install/cloud/hetzner","pathToContent":"install/cloud/hetzner/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":false,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Cloud","summary":"Cloud documentation index.","lastValidated":"2026-01-29","slug":"install/cloud","pathToContent":"install/cloud/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["ephemeral-nodes","serverless","koyeb"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale on Koyeb","summary":"Use Tailscale with Koyeb.","lastValidated":"2026-01-05","slug":"install/cloud/koyeb","pathToContent":"install/cloud/koyeb/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["subnets"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Access Oracle Cloud VMs privately using Tailscale","summary":"Use Tailscale to privately access Oracle Cloud VMs.","lastValidated":"2026-01-05","slug":"install/cloud/oracle-cloud","pathToContent":"install/cloud/oracle-cloud/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Install Tailscale","summary":"Install and uninstall the Tailscale client.","lastValidated":"2025-12-19","slug":"install","pathToContent":"install/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Install Tailscale on iOS","summary":"Install the Tailscale client on iOS.","lastValidated":"2025-02-21","slug":"install/ios","pathToContent":"install/ios/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":true,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Install Tailscale on iOS","summary":"Install the Tailscale client on iOS devices.","lastValidated":"2025-02-21","slug":"install/ios/quickstart","pathToContent":"install/ios/quickstart/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Install Tailscale on Linux","summary":"Install the Tailscale client on Linux distributions using the install script for mainstream distributions, or other distributions with alternative package managers.","lastValidated":"2026-01-05","slug":"install/linux","pathToContent":"install/linux/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["macos"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Install Tailscale on macOS","summary":"Install the Tailscale client on macOS.","lastValidated":"2026-01-05","slug":"install/mac","pathToContent":"install/mac/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":true,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Install Tailscale on macOS","summary":"Install Tailscale on macOS devices.","lastValidated":"2024-0
57-13","slug":"install/mac/quickstart","pathToContent":"install/mac/quickstart/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Using OPNsense with Tailscale","summary":"Set up a Tailscale VPN on OPNsense. Get secure communication across your devices without the need for complex configuration.","lastValidated":"2025-12-04","slug":"install/opnsense","pathToContent":"install/opnsense/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Start using Tailscale","summary":"Install Tailscale, create a network, and invite your team.","lastValidated":"2025-02-21","slug":"install/start","pathToContent":"install/start/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":true,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Install Tailscale with static binaries","summary":"Use static binaries to install Tailscale on unsupported Linux distributions.","lastValidated":"2025-02-21","slug":"install/static","pathToContent":"install/static/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Install unstable Tailscale clients","summary":"Find out how to test new features before they are released to the wider community.","lastValidated":"2025-01-07","slug":"install/unstable","pathToContent":"install/unstable/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Install Tailscale on Windows","summary":"Install the Tailscale client on Windows.","lastValidated":"2025-11-21","slug":"install/windows","pathToContent":"install/windows/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Install Tailscale on Windows with MSI","summary":"Install the Tailscale client on Windows with MSI.","lastValidated":"2026-01-05","slug":"install/windows/msi","pathToContent":"install/windows/msi/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":true,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Install Tailscale on Windows","summary":"Install the Tailscale client on Windows.","lastValidated":"2025-02-21","slug":"install/windows/quickstart","pathToContent":"install/windows/quickstart/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Install Tailscale on Windows with WSL 2","summary":"Install the Tailscale client on Windows with WSL 2.","lastValidated":"2025-11-03","slug":"install/windows/wsl2","pathToContent":"install/windows/wsl2/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["ssh"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Install Tailscale with cloud-init","summary":"Install Tailscale automatically on the first boot of a machine with cloud-init.","lastValidated":"2026-01-05","slug":"install/with-cloud-init","pathToContent":"install/with-cloud-init/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["acls","gitops","bitbucket"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"GitOps for Tailscale with Bitbucket","summary":"Use a Bitbucket CI to maintain your tailnet policy file as code.","lastValidated":"2025-12-04","slug":"integrations/bitbucket/gitops","pathToContent":"integrations/bitbucket/gitops/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":false,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Bitbucket","summary":"Bitbucket documentation index.","lastValidated":"2026-01-29","slug":"integrations/bitbucket","pathToContent":"integrations/bitbucket/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Using Tailscale with captive portals","summary":"Understand how Tailscale handles captive portals when you connect to a public network.","lastValidated":"2025-12-10","slug":"integrations/captive-portals","pathToContent":"integrations/captive-portals/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["code"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Access your tailnet from CodeSandbox","summary":"Privately access CodeSandbox repositories.","lastValidated":"2026-01-05","slug":"integrations/codesandbox","pathToContent":"integrations/codesandbox/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["code"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Access your tailnet from code-server","summary":"Write code remotely by installing Tailscale on code-server.","lastValidated":"2025-09-18","slug":"integrations/codeserver","pathToContent":"integrations/codeserver/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["dns","integrations","control-d"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Use Control D","summary":"Use Control D with devices in your tailnet.","lastValidated":"2025-12-08","slug":"integrations/control-d","pathToContent":"integrations/control-d/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Restrict device access with CrowdStrike ZTA scores","summary":"Use Zero Trust Assessment (ZTA) scores reported by CrowdStrike Falcon as a device posture attribute for use in access rules.","lastValidated":"2026-01-28","slug":"integrations/crowdstrike-zta","pathToContent":"integrations/crowdstrike-zta/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Access Crunchy Bridge privately using Tailscale","summary":"Use Crunchy Bridge with Tailscale.","lastValidated":"2026-01-12","slug":"integrations/crunchy-bridge","pathToContent":"integrations/crunchy-bridge/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Using Tailscale with your firewall","summary":"Use Tailscale with an existing firewall configuration.","lastValidated":"2026-01-28","slug":"integrations/firewalls","pathToContent":"integrations/firewalls/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["dns"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Unbound DNS in OPNsense","summary":"MagicDNS in OPNsense Unbound DNS","lastValidated":"2025-05-06","
5slug":"integrations/firewalls/opnsense-unbound","pathToContent":"integrations/firewalls/opnsense-unbound/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Using Tailscale with your Palo Alto Networks firewall","summary":"Use Tailscale with a Palo Alto Networks firewall.","lastValidated":"2025-09-30","slug":"integrations/firewalls/palo-alto-firewall","pathToContent":"integrations/firewalls/palo-alto-firewall/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"pfSense settings to enable direct connections","summary":"Configure pfSense in your tailnet to enable direct connections.","lastValidated":"2026-02-02","slug":"integrations/firewalls/pfsense","pathToContent":"integrations/firewalls/pfsense/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Restrict device access with Fleet","summary":"Use signals reported by Fleet as a device posture attribute for use in access rules.","lastValidated":"2026-01-29","slug":"integrations/fleet","pathToContent":"integrations/fleet/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["ci-cd","github-actions","github","solution-guide"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale GitHub Action","summary":"Secure CI/CD workflows in GitHub using the Tailscale GitHub Action.","lastValidated":"2026-01-30","slug":"integrations/github/github-action","pathToContent":"integrations/github/github-action/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["code"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Access your tailnet GitHub Codespaces","summary":"Write code remotely by installing Tailscale on GitHub Codespaces.","lastValidated":"2026-01-05","slug":"integrations/github/github-codespaces","pathToContent":"integrations/github/github-codespaces/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["acls","gitops","github"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"GitOps for Tailscale with GitHub Actions","summary":"Use a GitHub Action to maintain your tailnet policy file as code.","lastValidated":"2025-12-05","slug":"integrations/github/gitops","pathToContent":"integrations/github/gitops/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":false,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"GitHub","summary":"GitHub documentation index.","lastValidated":"2026-01-29","slug":"integrations/github","pathToContent":"integrations/github/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale with GitLab CI/CD","summary":"Connect your Tailscale network to a GitLab Runner.","lastValidated":"2025-12-04","slug":"integrations/gitlab/gitlab-runner","pathToContent":"integrations/gitlab/gitlab-runner/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["acls","gitops","gitlab"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"GitOps for Tailscale with GitLab CI","summary":"Use a GitLab CI to maintain your tailnet policy file as code.","lastValidated":"2025-12-04","slug":"integrations/gitlab/gitops","pathToContent":"integrations/gitlab/gitops/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":false,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"GitLab","summary":"GitLab documentation index.","lastValidated":"2026-01-29","slug":"integrations/gitlab","pathToContent":"integrations/gitlab/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"User & group provisioning for Google Worksp
5ace","summary":"Sync users and groups from Google Workspace to use in Tailscale access controls.","lastValidated":"2026-07-06","slug":"integrations/google-sync","pathToContent":"integrations/google-sync/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["grafana","integrations","monitoring"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Use Grafana with Tailscale","summary":"Use Grafana to monitor your tailnet or secure access to a Grafana dashboard using Tailscale.","lastValidated":"2025-07-31","slug":"integrations/grafana","pathToContent":"integrations/grafana/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Restrict device access with Huntress","summary":"Use signals reported by Huntress as device posture attributes for use in access rules.","lastValidated":"2026-02-02","slug":"integrations/huntress","pathToContent":"integrations/huntress/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["sso"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Setting up Apple to work with Tailscale","summary":"Configure an Apple ID with Tailscale.","lastValidated":"2025-09-26","slug":"integrations/identity/apple-sso","pathToContent":"integrations/identity/apple-sso/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Custom OIDC providers","summary":"Configure your OpenID Connect (OIDC) identity provider to integrate with Tailscale.","lastValidated":"2025-12-10","slug":"integrations/identity/custom-oidc","pathToContent":"integrations/identity/custom-oidc/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":true,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"User & group provisioning for custom providers","summary":"Sync users and groups from a custom identity provider to use in Tailscale access controls.","lastValidated":"2026-01-05","slug":"integrations/identity/custom-scim","pathToContent":"integrations/identity/custom-scim/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":true,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Setting up a custom Microsoft Entra application to work with Tailscale","summary":"Configure a custom Microsoft Entra application with Tailscale.","lastValidated":"2025-10-31","slug":"integrations/identity/entra/custom","pathToContent":"integrations/identity/entra/custom/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["Azure AD","Entra ID","scim","provisioning"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"User & group provisioning for Microsoft Entra ID","summary":"See how to sync users and groups from Microsoft Entra ID to use in Tailscale access controls.","lastValidated":"2026-07-06","
5slug":"integrations/identity/entra/entra-id-scim","pathToContent":"integrations/identity/entra/entra-id-scim/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["sso"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Setting up Microsoft Entra ID to work with Tailscale","summary":"Configure Microsoft Entra ID with Tailscale.","lastValidated":"2026-01-05","slug":"integrations/identity/entra","pathToContent":"integrations/identity/entra/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["sso"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Setting up GitHub to work with Tailscale","summary":"Configure a GitHub organization account or a GitHub personal account with Tailscale.","lastValidated":"2026-02-04","slug":"integrations/identity/github","pathToContent":"integrations/identity/github/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["sso"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Setting up Google to work with Tailscale","summary":"Use Tailscale with the Google identity provider.","lastValidated":"2025-11-12","slug":"integrations/identity/google-sso","pathToContent":"integrations/identity/google-sso/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["idp"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Supported SSO identity providers","summary":"Tailscale works on top of the IdP or SSO provider you already use. Leverage the capabilities of these providers for secure access, including passkeys, 2FA, and MFA.","lastValidated":"2026-01-05","slug":"integrations/identity","pathToContent":"integrations/identity/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["okta"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Setting up Okta to work with Tailscale","summary":"Configure Okta with Tailscale.","lastValidated":"2026-01-05","slug":"integrations/identity/okta","pathToContent":"integrations/identity/okta/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["okta","scim","provisioning"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"User & group provisioning for Okta","summary":"See how to sync users and groups from Okta to use in Tailscale access controls.","lastValidated":"2026-01-05","slug":"integrations/identity/okta/okta-scim","pathToContent":"integrations/identity/okta/okta-scim/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Setting up OneLogin to work with Tailscale","summary":"Use Tailscale with OneLogin.","lastValidated":"2024-07-08","slug":"integrations/identity/onelogin","pathToContent":"integrations/identity/onelogin/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Using passkeys for Tailscale authentication","summary":"Create and manage passkeys for authentication to your Tailscale network.","lastValidated":"2026-01-05","slug":"integrations/identity/passkeys","pathToContent":"integrations/identity/passkeys/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Switch identity provider","summary":"Switch the identity provider you use for your Tailscale network.","lastValidated":"2026-06-29","slug":"integrations/identity/switch-identity-provider","pathToContent":"integrations/identity/switch-identity-provider/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Integrations","summary":"How to use Tailscale to various kinds of servers, services, or devices.","lastValidated":"2024-06-18","slug":"integrations","pathToContent":"integrations/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Restrict device access with Iru","summary":"Use signals reported by Iru (formerly Kandji) as device posture attributes for use in access rules.","lastValidated":"2026-01-28","slug":"integrations/iru","pathToContent":"integrations/iru/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Restrict device access with Jamf Pro","summary":"Use signals reported by Jamf Pro as device posture attributes for use in access rules.","lastValidated":"2026-01-28","slug":"integrations/jamf-pro","pathToContent":"integrations/jamf-pro/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Third-party integrations for JIT access","
5summary":"Use third-party integrations for just-in-time access, also known as on-demand access, to your Tailscale network.","lastValidated":"2025-11-12","slug":"integrations/jit-access","pathToContent":"integrations/jit-access/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"JIT access with ConductorOne","summary":"Use Tailscale and ConductorOne for on-demand access to your Tailscale network.","lastValidated":"2026-01-05","slug":"integrations/jit-conductorone","pathToContent":"integrations/jit-conductorone/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"JIT access with Opal","summary":"Use Tailscale and Opal for on-demand access to your Tailscale network.","lastValidated":"2026-01-05","slug":"integrations/jit-opal","pathToContent":"integrations/jit-opal/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":true,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"JIT access with Sym","summary":"Use Tailscale and Sym for on-demand access to your Tailscale network.","lastValidated":"2025-12-04","slug":"integrations/jit-sym","pathToContent":"integrations/jit-sym/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Restrict device access with 1Password Extended Access Management (XAM)","summary":"Use signals reported by 1Password Extended Access Management (XAM) as a device posture attribute for use in access rules.","lastValidated":"2026-01-28","slug":"integrations/kolide","pathToContent":"integrations/kolide/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["android","mdm","tinymdm","google-workspace","intune","restriction","apps"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Deploy Tailscale on Android using MDM","summary":"Deploy Tailscale on Android using MDM.","lastValidated":"2025-08-18","slug":"integrations/mdm/android","pathToContent":"integrations/mdm/android/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["android","mdm","google","g-suite","workspace"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Deploy Tailscale using Google Workspace","summary":"Deploy Tailscale on enrolled Android devices using Google Workspace.","lastValidated":"2026-01-05","slug":"integrations/mdm/google-workspace","pathToContent":"integrations/mdm/google-workspace/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":false,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"MDM","summary":"MDM documentation index.","lastValidated":"2026-01-29","slug":"integrations/mdm","pathToContent":"integrations/mdm/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Restrict device access with Microsoft Intune","summary":"Use signals reported by Microsoft Intune as device posture attributes for use in access rules.","lastValidated":"2026-01-28","slug":"integrations/mdm/intune","pathToContent":"integrations/mdm/intune/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["ios","tvos"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Deploy Tailscale on iOS/tvOS using MDM","summary":"Deploy Tailscale on iOS or tvOS using MDM.","lastValidated":"2026-01-05","slug":"integrations/mdm/ios","pathToContent":"integrations/mdm/ios/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["mdm","ios","macos","kandji"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Deploy Tailscale with Iru","summary":"Deploy Tailscale system policies using Iru (formerly Kandji) MDM.","lastValidated":"2025-12-02","slug":"integrations/mdm/iru","pathToContent":"integrations/mdm/iru/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["mdm","ios","macos","jamf"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Deploy Tailscale with Jamf Pro","summary":"Deploy Tailscale system policies using the Jamf Pro MDM solution.","lastValidated":"2026-01-05","slug":"integrations/mdm/jamf","pathToContent":"integrations/mdm/jamf/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["mdm","ios","macos","windows","android","jumpcloud"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Deploy Tailscale with JumpCloud","summary":"Deploy Tailscale and system policies using the JumpCloud MDM solution.","lastValidated":"2026-01-05","slug":"integrations/mdm/jumpcloud","pathToContent":"integrations/mdm/jumpcloud/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["linux","mdm","syspolicy"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Deploy Tailscale on Linux using MDM","summary":"Deploy Tailscale on Linux using MDM.","lastValidated":"2026-08-11","slug":"integrations/mdm/linux","pathToContent":"integrations/mdm/linux/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["macos"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Deploy Tailscale on macOS using MDM","summary":"Deploy Tailscale on macOS using MDM.","lastValidated":"2026-01-05","slug":"integrations/mdm/mac","pathToContent":"integrations/mdm/mac/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["mdm","windows","ios","macos","intune","microsoft","android"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Deploy Tailscale with Microsoft Intune","summary":"Deploy Tailscale system policies using Microsoft Intune MDM.","lastValidated":"2026-01-05","slug":"integrations/mdm/microsoft-intune","pathToContent":"integrations/mdm/microsoft-intune/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["mdm","ios","macos","simplemdm"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Deploy Tailscale with SimpleMDM","summary":"Deploy Tailscale system policies using SimpleMDM.","lastValidated":"2026-01-05","slug":"integrations/mdm/simplemdm","pathToContent":"integrations/mdm/simplemdm/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["android","mdm","tinymdm"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Deploy Tailscale using TinyMDM","summary":"Deploy Tailscale on Android using TinyMDM.","lastValidated":"2026-01-05","slug":"integrations/mdm/tinymdm","pathToContent":"integrations/mdm/tinymdm/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["windows"],"releaseStatus":"GA","related":[],"index":true,"hidden":true,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Deploy Tailscale on Windows using MDM","summary":"Deploy Tailscale on Windows using MDM.","lastValidated":"2026-01-05","slug":"integrations/mdm/windows-mdm","pathToContent":"integrations/mdm/windows-mdm/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Connect to network attached storage (NAS)","summary":"Install the Tailscale client on supp
5orted network-attached storage (NAS) devices.","lastValidated":"2025-10-29","slug":"integrations/nas","pathToContent":"integrations/nas/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["dns"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Use NextDNS","summary":"Use NextDNS with devices in your tailnet.","lastValidated":"2025-12-08","slug":"integrations/nextdns","pathToContent":"integrations/nextdns/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["code"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Access your tailnet from OpenVSCode","summary":"Write code remotely by installing Tailscale on OpenVSCode.","lastValidated":"2025-09-18","slug":"integrations/open-vscode","pathToContent":"integrations/open-vscode/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":true,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Technology partner integration guide","summary":"Integrate your product with Tailscale.","lastValidated":"2026-01-05","slug":"integrations/partners","pathToContent":"integrations/partners/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale MDM integration partners","summary":"Explore MDM solutions that integrate with Tailscale.","lastValidated":"2025-12-02","slug":"integrations/partners/mdm","pathToContent":"integrations/partners/mdm/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["pi"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Access PiKVM from anywhere","summary":"Set up Tailscale on PiKVM.","lastValidated":"2026-01-05","slug":"integrations/pikvm","pathToContent":"integrations/pikvm/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["containers"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale on a Proxmox host","summary":"Optimally configure Proxmox for use with Tailscale.","lastValidated":"2026-01-05","slug":"integrations/proxmox","pathToContent":"integrations/proxmox/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["infrastructure-as-code","automation"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Manage Tailscale resources using Pulumi","summary":"Use the Pulumi Tailscale provider to interact with the Tailscale API.","lastValidated":"2025-03-03","slug":"integrations/pulumi-provider","pathToContent":"integrations/pulumi-provider/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["nas","qnap"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Access QNAP NAS from anywhere","summary":"Configure the Tailscale client on a QNAP NAS device.","lastValidated":"2026-01-05","slug":"integrations/qnap","pathToContent":"integrations/qnap/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Scanning for exposed Tailscale secrets","summary":"Find out how Tailscale partners scan for exposed Tailscale secrets and provide notifications to help prevent fraudulent access.","lastValidated":"2026-01-05","slug":"integrations/secret-scanning","pathToContent":"integrations/secret-scanning/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Restrict device access with SentinelOne","summary":"Use signals reported by SentinelOne agents as device posture attributes for use in access rules.","lastValidated":"2026-01-28","slug":"integrations/sentinelone","pathToContent":"integrations/sentinelone/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["nas","synology"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Access Synology NAS from anywhere","summary":"Install Tailscale on your Synology device. Use this guide to get secure access to your Synology NAS from anywhere.","lastValidated":"2026-01-05","slug":"integrations/synology","pathToContent":"integrations/synology/index.mdx"}
5,{"visibility":"visible","tocDepth":3,"tags":["infrastructure-as-code","automation"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Manage Tailscale resources using Terraform","summary":"Use the Terraform Tailscale provider to interact with the Tailscale API.","lastValidated":"2026-01-30","slug":"integrations/terraform-provider","pathToContent":"integrations/terraform-provider/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["nas","truenas-scale"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Access TrueNAS SCALE from anywhere","summary":"Configure the Tailscale client on a TrueNAS SCALE server and securely connect multiple TrueNAS SCALE servers for ZFS replication.","lastValidated":"2025-09-19","slug":"integrations/truenas","pathToContent":"integrations/truenas/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["nas","unraid","integrations","how-to"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Access Unraid NAS from anywhere","summary":"Configure the Tailscale client on an Unraid NAS server.","lastValidated":"2026-01-05","slug":"integrations/unraid","pathToContent":"integrations/unraid/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Use the Tailscale extension for Visual Studio Code","summary":"Use the Tailscale extension for VS Code.","lastValidated":"2026-01-05","slug":"integrations/vscode-extension","pathToContent":"integrations/vscode-extension/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Caddy certificates on Tailscale","summary":"Use Caddy certificates with Tailscale.","lastValidated":"2026-01-05","slug":"integrations/web-servers/caddy/caddy-certificates","pathToContent":"integrations/web-servers/caddy/caddy-certificates/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":false,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Caddy","summary":"Caddy documentation index.","lastValidated":"2026-01-29","slug":"integrations/web-servers/caddy","pathToContent":"integrations/web-servers/caddy/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Integrate with a web server","summary":"Use Tailscale with a web server.","lastValidated":"2024-06-18","slug":"integrations/web-servers","pathToContent":"integrations/web-servers/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":false,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Traefik","summary":"Traefik documentation index.","lastValidated":"2026-01-29","slug":"integrations/web-servers/traefik","pathToContent":"integrations/web-servers/traefik/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Traefik certificates on Tailscale","summary":"Use Traefik Proxy with Tailscale.","lastValidated":"2026-01-05","slug":"integrations/web-servers/traefik/traefik-certificates","pathToContent":"integrations/web-servers/traefik/traefik-certificates/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["api-server-proxy","kubernetes-operator","rbac"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"explanation","availability":["all"],"title":"Configure Kubernetes RBAC for the API server proxy","
5summary":"Configure Kubernetes RBAC for the API server proxy using Tailscale identity impersonation.","lastValidated":"2026-06-05","slug":"kubernetes-operator/api-server-access/auth-and-rbac","pathToContent":"kubernetes-operator/api-server-access/auth-and-rbac/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["api-server-proxy","kubernetes-operator"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"explanation","availability":["all"],"title":"Access the Kubernetes API server over Tailscale","summary":"Securely access the Kubernetes API server over Tailscale.","lastValidated":"2026-06-05","slug":"kubernetes-operator/api-server-access","pathToContent":"kubernetes-operator/api-server-access/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["api-server-proxy","kubernetes-operator"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Use the API server proxy without Tailscale authentication","summary":"Use the API server proxy for connectivity only, with external authentication.","lastValidated":"2026-06-05","slug":"kubernetes-operator/api-server-access/noauth-mode","pathToContent":"kubernetes-operator/api-server-access/noauth-mode/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["api-server-proxy","kubernetes-operator"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Set up the Kubernetes API server over Tailscale","summary":"Set up the API server proxy to access your Kubernetes API server over Tailscale.","lastValidated":"2026-06-05","slug":"kubernetes-operator/api-server-access/setup-api-over-tailscale","pathToContent":"kubernetes-operator/api-server-access/setup-api-over-tailscale/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale Kubernetes Operator architecture","summary":"The architecture and design of the Tailscale Kubernetes Operator.","lastValidated":"2026-06-05","slug":"kubernetes-operator/concepts/architecture","pathToContent":"kubernetes-operator/concepts/architecture/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["dnsconfig","kubernetes-operator"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"explanation","availability":["all"],"title":"Use DNSConfig for in-cluster MagicDNS resolution","summary":"Understand the DNSConfig custom resource and how it enables in-cluster resolution of Tailscale MagicDNS names.","lastValidated":"2026-06-05","slug":"kubernetes-operator/concepts/dnsconfig","pathToContent":"kubernetes-operator/concepts/dnsconfig/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale Kubernetes Operator concepts explained","summary":"Learn about the architecture and key resources of the Tailscale Kubernetes Operator.","lastValidated":"2026-06-05","slug":"kubernetes-operator/concepts","pathToContent":"kubernetes-operator/concepts/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["proxyclass","kubernetes-operator"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"explanation","availability":["all"],"title":"Use ProxyClass for proxy customization","summary":"Understand the ProxyClass custom resource and how it customizes proxy resources.","lastValidated":"2026-06-05","slug":"kubernetes-operator/concepts/proxyclass","pathToContent":"kubernetes-operator/concepts/proxyclass/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["proxygroup","kubernetes-operator"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"explanation","availability":["all"],"title":"Use ProxyGroup for high availability proxies","summary":"Understand the ProxyGroup custom resource and how it enables high availability proxies.","lastValidated":"2026-06-05","slug":"kubernetes-operator/concepts/proxygroup","pathToContent":"kubernetes-operator/concepts/proxygroup/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Deploy app connectors on Kubernetes","summary":"Deploy app connectors to your Kubernetes cluster using the Tailscale Kubernetes Operator.","lastValidated":"2026-06-05","slug":"kubernetes-operator/connector/deploy-app-connector","pathToContent":"kubernetes-operator/connector/deploy-app-connector/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Deploy exit nodes and subnet routers on Kubernetes","summary":"Deploy exit nodes and subnet routers on Kubernetes using the Connector custom resource.","lastValidated":"2026-06-05","slug":"kubernetes-operator/connector/deploy-subnet-router","pathToContent":"kubernetes-operator/connector/deploy-subnet-router/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["kubernetes-operator","connector","subnet-routers","exit-nodes","app-connectors"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"feature-guide","availability":["all"],"title":"Host Tailscale resources in Kubernetes with Connector","summary":"Deploy subnet routers and exit nodes on Kubernetes using the Connector resource","lastValidated":"2026-06-05","slug":"kubernetes-operator/connector","pathToContent":"kubernetes-operator/connector/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["egress","kubernetes-operator"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"explanation","availability":["all"],"title":"Access an IP address behind a subnet router","summary":"Acce
5ss an IP address behind a subnet router from your Kubernetes cluster using cluster egress.","lastValidated":"2026-06-05","slug":"kubernetes-operator/egress/access-ip-behind-subnet-router","pathToContent":"kubernetes-operator/egress/access-ip-behind-subnet-router/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["egress","kubernetes-operator"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"explanation","availability":["all"],"title":"Access a tailnet device from your Kubernetes cluster","summary":"Access a tailnet device from your Kubernetes cluster using cluster egress.","lastValidated":"2026-06-05","slug":"kubernetes-operator/egress/access-tailnet-service","pathToContent":"kubernetes-operator/egress/access-tailnet-service/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["egress","dnsconfig","kubernetes-operator"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Enable MagicDNS resolution in your cluster","summary":"Configure in-cluster DNS resolution for Tailscale MagicDNS names using DNSConfig.","lastValidated":"2026-06-05","slug":"kubernetes-operator/egress/enable-magicdns-resolution","pathToContent":"kubernetes-operator/egress/enable-magicdns-resolution/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["kubernetes-operator","rds","cloud-services","connector","subnet-routers"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Expose Amazon RDS to your tailnet","summary":"Expose Amazon RDS or other cloud services to your tailnet using the Tailscale Kubernetes Operator.","lastValidated":"2026-06-05","slug":"kubernetes-operator/egress/expose-rds-to-tailnet","pathToContent":"kubernetes-operator/egress/expose-rds-to-tailnet/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["egress","kubernetes-operator"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"explanation","availability":["all"],"title":"Access tailnet resources from your cluster with Egress","summary":"Access tailnet resources from your Kubernetes cluster using the Tailscale Kubernetes Operator.","lastValidated":"2026-06-05","slug":"kubernetes-operator/egress","pathToContent":"kubernetes-operator/egress/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale Kubernetes Operator","summary":"The Tailscale Kubernetes Operator provides secure connectivity to and from your Kubernetes cluster.","lastValidated":"2026-06-05","slug":"kubernetes-operator","pathToContent":"kubernetes-operator/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["kubernetes-operator","funnel","ingress"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Expose a Kubernetes cluster workload to the public internet using Tailscale Funnel","summary":"Expose a Kubernetes cluster workload to the public internet using Tailscale Funnel.","lastValidated":"2026-06-05","slug":"kubernetes-operator/ingress/expose-workload-to-internet","pathToContent":"kubernetes-operator/ingress/expose-workload-to-internet/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Expose a cluster workload to your tailnet (layer 3)","summary":"Expose a Kubernetes cluster workload to your tailnet using Layer 3 ingress.","lastValidated":"2026-06-05","slug":"kubernetes-operator/ingress/expose-workload-to-tailnet-l3","pathToContent":"kubernetes-operator/ingress/expose-workload-to-tailnet-l3/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Expose a cluster workload to your tailnet (layer 7)","summary":"Expose a Kubernetes cluster workload to your tailnet using layer 7 ingress.","lastValidated":"2026-06-05","slug":"kubernetes-operator/ingress/expose-workload-to-tailnet-l7","pathToContent":"kubernetes-operator/ingress/expose-workload-to-tailnet-l7/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["ingress","kubernetes-operator"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"explanation","availability":["all"],"title":"Expose cluster workloads to your tailnet with Ingress","summary":"Expose Kubernetes workloads to your tailnet or the internet using the Tailscale Kubernetes Operator.","lastValidated":"2026-06-05","slug":"kubernetes-operator/ingress","pathToContent":"kubernetes-operator/ingress/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Configure multi-cluster ingress with regional routing","summary":"Create a multi-cluster ingress with regional routing using the Tailscale Kubernetes Operator.","lastValidated":"2026-06-05","slug":"kubernetes-operator/ingress/multi-cluster","pathToContent":"kubernetes-operator/ingress/multi-cluster/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Connect services across clusters","summary":"Acce
5ss a Kubernetes Service in one cluster from another cluster using ingress and egress.","lastValidated":"2026-06-05","slug":"kubernetes-operator/ingress/multi-cluster-service-mirroring","pathToContent":"kubernetes-operator/ingress/multi-cluster-service-mirroring/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Install the Tailscale Kubernetes Operator","summary":"Install the Tailscale Kubernetes Operator in your Kubernetes cluster.","lastValidated":"2026-06-05","slug":"kubernetes-operator/install-operator","pathToContent":"kubernetes-operator/install-operator/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Add static endpoints to a cluster","summary":"Configure static endpoints for ProxyGroup proxies to enable direct connections.","lastValidated":"2026-06-05","slug":"kubernetes-operator/manage-and-configure/configure-static-endpoints","pathToContent":"kubernetes-operator/manage-and-configure/configure-static-endpoints/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Use custom machine names for ingress and egress proxies","summary":"Use custom machine names for Tailscale Kubernetes Operator ingress and egress proxies.","lastValidated":"2026-06-05","slug":"kubernetes-operator/manage-and-configure/custom-machine-names","pathToContent":"kubernetes-operator/manage-and-configure/custom-machine-names/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Enable Operator debug endpoints","summary":"Enable debug endpoints for Tailscale Kubernetes Operator proxies.","lastValidated":"2026-06-05","slug":"kubernetes-operator/manage-and-configure/enable-debug-endpoints","pathToContent":"kubernetes-operator/manage-and-configure/enable-debug-endpoints/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Expose Operator metrics","summary":"Expose client metrics from Tailscale Kubernetes Operator proxies.","lastValidated":"2026-06-05","slug":"kubernetes-operator/manage-and-configure/expose-metrics","pathToContent":"kubernetes-operator/manage-and-configure/expose-metrics/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"High availability for the Tailscale Kubernetes Operator","summary":"Configure ProxyGroup and ProxyClass for highly available ingress, egress, and API server proxies.","lastValidated":"2026-06-05","slug":"kubernetes-operator/manage-and-configure/high-availability","pathToContent":"kubernetes-operator/manage-and-configure/high-availability/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Manage and configure the Tailscale Kubernetes Operator","summary":"Manage and configure your Tailscale Kubernetes Operator cluster.","lastValidated":"2026-06-05","slug":"kubernetes-operator/manage-and-configure","pathToContent":"kubernetes-operator/manage-and-configure/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Use multiple tailnets for devices running on Kubernetes","summary":"Deploy devices across multiple tailnets using the Tailscale Kubernetes Operator","lastValidated":"2026-06-05","slug":"kubernetes-operator/manage-and-configure/multi-tailnet","pathToContent":"kubernetes-operator/manage-and-configure/multi-tailnet/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Control access to ProxyGroup resources","summary":"Create per-namespace policies that limit access to ProxyGroup resources","lastValidated":"2026-06-05","slug":"kubernetes-operator/manage-and-configure/proxy-group-policy","pathToContent":"kubernetes-operator/manage-and-configure/proxy-group-policy/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["kubernetes-operator","workload-identity-federation"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Configure workload identity federation for the Tailscale Kubernetes Operator","summary":"Use workload identity federation to allow the Tailscale Kubernetes Operator securely access cloud resources without storing long-lived credentials or secrets.","lastValidated":"2026-06-05","slug":"kubernetes-operator/manage-and-configure/workload-identity-federation","pathToContent":"kubernetes-operator/manage-and-configure/workload-identity-federation/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["kubernetes-operator","peer-relays"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"feature-guide","availability":["all"],"title":"Host peer relays in Kubernetes with PeerRelay","summary":"Deploy Tailscale peer relays on Kubernetes using the PeerRelay custom resource.","lastValidated":"2026-08-12","slug":"kubernetes-operator/peer-relay","pathToContent":"kubernetes-operator/peer-relay/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Quickstart tutorial for the Tailscale Kubernetes Operator","summary":"A hands-on guide to the Tailscale Kubernetes Operator and its key features.","lastValidated":"2026-07-28","slug":"kubernetes-operator/quickstart","pathToContent":"kubernetes-operator/quickstart/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["kubernetes-operator","session-recording"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"explanation","availability":["all"],"title":"Deploy a session recorder in your Kubernetes cluster","summary":"Deploy a tsrecorder instance in your Kubernetes cluster using the Recorder custom resource.","lastValidated":"2026-06-05","slug":"kubernetes-operator/recorder/deploy-tsrecorder","pathToContent":"kubernetes-operator/recorder/deploy-tsrecorder/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["kubernetes-operator","session-recording"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"explanation","availability":["all"],"title":"Session recording with the Tailscale Kubernetes Operator","summary":"Deploy and configure session recording using the Tailscale Kubernetes Operator.","lastValidated":"2026-06-05","slug":"kubernetes-operator/recorder","pathToContent":"kubernetes-operator/recorder/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["kubernetes-operator","session-recording"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"explanation","availability":["all"],"title":"Record kubectl sessions","summary":"Configure grants to enable kubectl session and API request recording.","lastValidated":"2026-06-05","slug":"kubernetes-operator/recorder/kubectl-session-recording","pathToContent":"kubernetes-operator/recorder/kubectl-session-recording/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Compatibility for the Tailscale Kubernetes Operator","summary":"Compatibility information for the Tailscale Kubernetes Operator.","lastValidated":"2026-06-05","slug":"kubernetes-operator/reference/compatibility","pathToContent":"kubernetes-operator/reference/compatibility/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale Kubernetes Operator reference","summary":"Reference documentation for the Tailscale Kubernetes Operator.","lastValidated":"2026-06-05","slug":"kubernetes-operator/reference","pathToContent":"kubernetes-operator/reference/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"IPv6 support for the Tailscale Kubernetes Operator","summary":"IPv6 support for the Tailscale Kubernetes Operator across ingress, egress, and API server proxy modes.","lastValidated":"2026-06-05","slug":"kubernetes-operator/reference/ipv6","pathToContent":"kubernetes-operator/reference/ipv6/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["kubernetes-operator","limitations"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"reference","availability":["all"],"title":"Limitations for the Tailscale Kubernetes Operator","summary":"Known limitations of the Tailscale Kubernetes Operator.","lastValidated":"2026-06-05","slug":"kubernetes-operator/reference/limitations","pathToContent":"kubernetes-operator/reference/limitations/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Permissions and RBAC for the Tailscale Kubernetes Operator","summary":"Configure permissions and RBAC for the Tailscale Kubernetes Operator.","lastValidated":"2026-08-14","slug":"kubernetes-operator/reference/rbac","pathToContent":"kubernetes-operator/reference/rbac/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["kubernetes-operator","tags"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"reference","availability":["all"],"title":"Tag customization for the Tailscale Kubernetes Operator","summary":"Configure tags for the operator and devices it manages","lastValidated":"2026-06-05","slug":"kubernetes-operator/reference/tags","pathToContent":"kubernetes-operator/reference/tags/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["kubernetes-operator","troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"reference","availability":["all"],"title":"Troubleshooting the Tailscale Kubernetes Operator","summary":"Troubleshoot issues with the Tailscale Kubernetes Operator.","lastValidated":"2026-06-05","slug":"kubernetes-operator/reference/troubleshooting","pathToContent":"kubernetes-operator/reference/troubleshooting/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management","technical-overview"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"feature-guide","availability":["all"],"title":"Tailscale PAM architecture and core concepts","summary":"Get an overview of the Tailscale PAM architecture and core concepts.","lastValidated":"2026-08-17","slug":"privileged-access-management/architecture-and-concepts","pathToContent":"privileged-access-management/architecture-and-concepts/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"explanation","availability":["all"],"title":"Tailscale PAM connector high availability","summary":"Understand when to deploy highly available connectors to account for a single connector failure when connecting your users to your services.","lastValidated":"2026-08-17","slug":"privileged-access-management/connectors/high-availability","pathToContent":"privileged-access-management/connectors/high-availability/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Tailscale PAM connectors","summary":"Find documentation for Border connectors, including setup guides, conceptual explanations, and configuration reference.","lastValidated":"2026-08-17","hubType":"feature","slug":"privileged-access-management/connectors","pathToContent":"privileged-access-management/connectors/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Install a Tailscale PAM connector","summary":"Set up a Tailscale PAM connector to provide users with privileged access to resources in your Tailscale network.","lastValidated":"2026-08-17","slug":"privileged-access-management/connectors/install","pathToContent":"privileged-access-management/connectors/install/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Install a Tailscale PAM connector with Ansible","summary":"Use Ansible to install and configure a Tailscale PAM connector on one or more hosts.","lastValidated":"2026-09-25","slug":"privileged-access-management/connectors/install-ansible","pathToContent":"privileged-access-management/connectors/install-ansible/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"explanation","availability":["all"],"title":"Tailscale PAM connectors overview","summary":"Understand how Tailscale PAM connectors enable privileged access to resources in your Tailscale network.","lastValidated":"2026-08-17","slug":"privileged-access-management/connectors/overview","pathToContent":"privileged-access-management/connectors/overview/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Get started with Tailscale PAM","summary":"Sign up for Tailscale PAM and use it to provide privileged access to resources in your Tailscale network.","lastValidated":"2026-06-02","slug":"privileged-access-management/get-started","pathToContent":"privileged-access-management/get-started/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Access an Amazon RDS database using Tailscale PAM","summary":"Acce
5ss an Amazon RDS database using Tailscale PAM.","lastValidated":"2026-09-02","slug":"privileged-access-management/how-to/access-database/amazon-rds","pathToContent":"privileged-access-management/how-to/access-database/amazon-rds/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Access an Elasticsearch server using Tailscale PAM","summary":"Access an Elasticsearch server using Tailscale PAM.","lastValidated":"2026-08-21","slug":"privileged-access-management/how-to/access-database/elasticsearch","pathToContent":"privileged-access-management/how-to/access-database/elasticsearch/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Access a Google Cloud SQL database using Tailscale PAM","summary":"Access a Google Cloud SQL database using Tailscale PAM.","lastValidated":"2026-08-20","slug":"privileged-access-management/how-to/access-database/google-cloud-sql","pathToContent":"privileged-access-management/how-to/access-database/google-cloud-sql/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Access a database using Tailscale PAM","summary":"Access a database with your Tailscale identity by using Tailscale PAM.","lastValidated":"2026-08-20","slug":"privileged-access-management/how-to/access-database","pathToContent":"privileged-access-management/how-to/access-database/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Access a MongoDB database using Tailscale PAM","summary":"Access a MongoDB database using Tailscale PAM.","lastValidated":"2026-08-18","slug":"privileged-access-management/how-to/access-database/mongodb","pathToContent":"privileged-access-management/how-to/access-database/mongodb/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Access a MySQL database using Tailscale PAM","summary":"Access a MySQL database using Tailscale PAM.","lastValidated":"2026-08-19","slug":"privileged-access-management/how-to/access-database/mysql","pathToContent":"privileged-access-management/how-to/access-database/mysql/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Access a PostgreSQL database using Tailscale PAM","summary":"Access a PostgreSQL database using Tailscale PAM.","lastValidated":"2026-08-18","slug":"privileged-access-management/how-to/access-database/postgresql","pathToContent":"privileged-access-management/how-to/access-database/postgresql/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Use Tailscale identity in your Grafana HTTP service","summary":"Use Tailscale PAM identity headers in your Grafana integration.","lastValidated":"2026-08-18","slug":"privileged-access-management/how-to/access-http-service/grafana","pathToContent":"privileged-access-management/how-to/access-http-service/grafana/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Access an HTTP service using Tailscale PAM","summary":"Provide privileged access to an HTTP service using Tailscale PAM.","lastValidated":"2026-09-11","slug":"privileged-access-management/how-to/access-http-service","pathToContent":"privileged-access-management/how-to/access-http-service/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot SSO login failure for an HTTP service","summary":"Troubleshoot SSO login failure for an HTTP service using Tailscale PAM.","lastValidated":"2026-09-17","slug":"privileged-access-management/how-to/access-http-service/troubleshoot-sso-failure","pathToContent":"privileged-access-management/how-to/access-http-service/troubleshoot-sso-failure/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Access a Kubernetes cluster using Tailscale PAM","summary":"Provide privileged access to a Kubernetes cluster using Tailscale PAM.","lastValidated":"2026-08-19","slug":"privileged-access-management/how-to/access-kubernetes","pathToContent":"privileged-access-management/how-to/access-kubernetes/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Access Amazon S3 buckets using Tailscale PAM","summary":"Acce
5ss Amazon S3 buckets with your Tailscale identity by using Tailscale PAM.","lastValidated":"2026-08-17","slug":"privileged-access-management/how-to/access-s3","pathToContent":"privileged-access-management/how-to/access-s3/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Access the Tailscale PAM built-in SSH server","summary":"Access the built-in SSH server for your Tailscale PAM connector.","lastValidated":"2026-08-17","slug":"privileged-access-management/how-to/access-ssh/built-in-ssh","pathToContent":"privileged-access-management/how-to/access-ssh/built-in-ssh/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Access an EC2 instance with AWS EC2 Instance Connect using Tailscale PAM","summary":"Access an EC2 instance with AWS EC2 Instance Connect by using Tailscale PAM.","lastValidated":"2026-08-20","slug":"privileged-access-management/how-to/access-ssh/ec2-instance","pathToContent":"privileged-access-management/how-to/access-ssh/ec2-instance/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Access an EC2 instance with AWS Systems Manager Session Manager using Tailscale PAM","summary":"Access an EC2 instance with AWS Systems Manager Session Manager by using Tailscale PAM.","lastValidated":"2026-08-20","slug":"privileged-access-management/how-to/access-ssh/ec2-ssm","pathToContent":"privileged-access-management/how-to/access-ssh/ec2-ssm/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Access an ECS container with AWS Systems Manager using Tailscale PAM","summary":"Access an ECS container with AWS Systems Manager by using Tailscale PAM.","lastValidated":"2026-08-20","slug":"privileged-access-management/how-to/access-ssh/ecs-ssm","pathToContent":"privileged-access-management/how-to/access-ssh/ecs-ssm/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Access an SSH server (or shell) using Tailscale PAM","summary":"Access your SSH servers with your Tailscale identity by using Tailscale PAM.","lastValidated":"2026-08-17","slug":"privileged-access-management/how-to/access-ssh","pathToContent":"privileged-access-management/how-to/access-ssh/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Access a remote SSH server using Tailscale PAM","summary":"Access a remote SSH server by using Tailscale PAM.","lastValidated":"2026-08-20","slug":"privileged-access-management/how-to/access-ssh/remote-ssh","pathToContent":"privileged-access-management/how-to/access-ssh/remote-ssh/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Access a TCP service using Tailscale PAM","summary":"Provide privileged access to a TCP service using Tailscale PAM.","lastValidated":"2026-09-03","slug":"privileged-access-management/how-to/access-tcp-service","pathToContent":"privileged-access-management/how-to/access-tcp-service/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Access a Windows server using RDP with Tailscale PAM","summary":"Acce
5ss a Windows server with RDP by using Tailscale PAM.","lastValidated":"2026-08-17","slug":"privileged-access-management/how-to/access-windows-server-rdp","pathToContent":"privileged-access-management/how-to/access-windows-server-rdp/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management","grants"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Control access to Tailscale PAM services","summary":"Use Tailscale PAM to control access to the privileged resources in your Tailscale network.","lastValidated":"2026-08-12","slug":"privileged-access-management/how-to/control-access","pathToContent":"privileged-access-management/how-to/control-access/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management","grants"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Use a custom DNS domain with Tailscale PAM","summary":"Use your own DNS domain for Tailscale PAM HTTP services.","lastValidated":"2026-08-21","slug":"privileged-access-management/how-to/custom-dns-domain","pathToContent":"privileged-access-management/how-to/custom-dns-domain/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Tailscale PAM how-to guides","summary":"Step-by-step guides for configuring Tailscale PAM to provide privileged access to your services.","lastValidated":"2026-07-31","slug":"privileged-access-management/how-to","pathToContent":"privileged-access-management/how-to/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Manage Tailscale PAM resources using Terraform","summary":"Use Terraform to manage Tailscale PAM connectors and services as Infrastructure as Code.","lastValidated":"2026-08-21","slug":"privileged-access-management/how-to/manage-resources-terraform","pathToContent":"privileged-access-management/how-to/manage-resources-terraform/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Manage secrets and credentials with Tailscale PAM","summary":"Secure your secrets and credentials for the resources in your Tailscale network.","lastValidated":"2026-08-14","slug":"privileged-access-management/how-to/manage-secrets","pathToContent":"privileged-access-management/how-to/manage-secrets/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Store Tailscale PAM session recordings in S3","summary":"Store Tailscale PAM session recordings in your own Amazon S3 bucket.","lastValidated":"2026-08-21","slug":"privileged-access-management/how-to/session-recordings-s3","pathToContent":"privileged-access-management/how-to/session-recordings-s3/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Tailscale PAM","summary":"Govern and secure privileged access with Tailscale PAM.","lastValidated":"2026-08-17","slug":"privileged-access-management","pathToContent":"privileged-access-management/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"reference","availability":["all"],"title":"Tailscale PAM FAQ","summary":"Answers to common questions about Tailscale PAM.","lastValidated":"2026-07-06","
5slug":"privileged-access-management/reference/faq","pathToContent":"privileged-access-management/reference/faq/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"hub","availability":["all"],"title":"Tailscale PAM reference","summary":"Explore reference guides for Tailscale PAM.","lastValidated":"2026-07-06","slug":"privileged-access-management/reference","pathToContent":"privileged-access-management/reference/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"reference","availability":["all"],"title":"Tailscale PAM sandbox servers","summary":"Experiment with Tailscale PAM without using your own servers.","lastValidated":"2026-08-24","slug":"privileged-access-management/reference/sandbox-servers","pathToContent":"privileged-access-management/reference/sandbox-servers/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"reference","availability":["all"],"title":"tailzero","summary":"Install, configure, and run Tailscale PAM connectors with the tailzero command-line interface.","lastValidated":"2026-09-25","slug":"privileged-access-management/reference/tailzero","pathToContent":"privileged-access-management/reference/tailzero/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["reference","troubleshooting","privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"reference","availability":["all"],"title":"Troubleshooting Tailscale PAM","summary":"Common Tailscale PAM connector error conditions, their causes, and resolution steps.","lastValidated":"2026-07-06","
5slug":"privileged-access-management/reference/troubleshooting","pathToContent":"privileged-access-management/reference/troubleshooting/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"feature-guide","availability":["all"],"title":"Tailscale PAM service accounts","summary":"Use service accounts to manage Tailscale PAM programmatically and to access an HTTP service without the Tailscale client.","lastValidated":"2026-08-13","slug":"privileged-access-management/service-accounts","pathToContent":"privileged-access-management/service-accounts/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"feature-guide","availability":["all"],"title":"Tailscale PAM services","summary":"Use Tailscale PAM services to manage privileged access to services on your Tailscale network.","lastValidated":"2026-08-17","slug":"privileged-access-management/services","pathToContent":"privileged-access-management/services/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"explanation","availability":["all"],"title":"Tailscale PAM session logs","summary":"Get insight into the privileged access sessions in your Tailscale network.","lastValidated":"2026-08-20","slug":"privileged-access-management/session-logs","pathToContent":"privileged-access-management/session-logs/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["privileged-access-management"],"releaseStatus":"beta","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"feature-guide","availability":["all"],"title":"What is Tailscale PAM?","summary":"Tailscale PAM provides privileged and auditable access to resources like Linux servers, databases, and Kubernetes clusters in your Tailscale network.","lastValidated":"2026-08-17","slug":"privileged-access-management/what-is-tailscale-pam","pathToContent":"privileged-access-management/what-is-tailscale-pam/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["admin-console","security"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Do admin console sessions expire?","summary":"Understand Tailscale admin console session expiration.","lastValidated":"2025-09-30","slug":"reference/admin-console-session-expiry","pathToContent":"reference/admin-console-session-expiry/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["app-connectors","best-practices","routing","saas"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Best practices for using app connectors","summary":"Configure and optimize routes and domain settings for your SaaS applications.","lastValidated":"2025-12-04","slug":"reference/best-practices/app-connectors","pathToContent":"reference/best-practices/app-connectors/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["coreweave","coreweave-best-practices","best-practices","cloud-best-practices"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"CoreWeave best practices","summary":"Deploy Tailscale on CoreWeave with best practices, security, and production readiness in mind.","lastValidated":"2026-08-21","slug":"reference/best-practices/cloud/coreweave","pathToContent":"reference/best-practices/cloud/coreweave/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":false,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Cloud best practices","summary":"Best practices for deploying Tailscale on various cloud service providers.","lastValidated":"2026-09-01","slug":"reference/best-practices/cloud","pathToContent":"reference/best-practices/cloud/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":true,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Guidance for hardening Tailscale nodes","summary":"Follow advanced guid
5ance for hardening and sandboxing nodes.","lastValidated":"2026-01-30","slug":"reference/best-practices/device-hardening","pathToContent":"reference/best-practices/device-hardening/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":false,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Best Practices","summary":"Best Practices documentation index.","lastValidated":"2026-01-29","slug":"reference/best-practices","pathToContent":"reference/best-practices/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["best-practices","performance"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Performance best practices","summary":"Get the most performance out of your Tailscale deployment.","lastValidated":"2025-12-04","slug":"reference/best-practices/performance","pathToContent":"reference/best-practices/performance/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Production best practices","summary":"Follow production and security best practices for deploying Tailscale.","lastValidated":"2025-05-23","slug":"reference/best-practices/production","pathToContent":"reference/best-practices/production/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["best-practices","aws-best-practices","security"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Best practices to secure your tailnet","summary":"Discover best practices for keeping your Tailscale network secure.","lastValidated":"2026-01-20","slug":"reference/best-practices/security","pathToContent":"reference/best-practices/security/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"CGNAT interoperability","summary":"Disable the CGNAT drop rule to use Tailscale alongside networks that consume CGNAT address space.","lastValidated":"2026-07-01","slug":"reference/cgnat-interoperability","pathToContent":"reference/cgnat-interoperability/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["derp","connectivity","peer-relays"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Connection types","summary":"Understand how Tailscale connects devices using either direct or relayed connections.","lastValidated":"2026-06-01","slug":"reference/connection-types","pathToContent":"reference/connection-types/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Contact preferences","summary":"Set contacts for account changes, configuration issues, security issues, and billing.","lastValidated":"2026-01-05","slug":"reference/contact-preferences","pathToContent":"reference/contact-preferences/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"What happens if the coordination server is down?","summary":"Review how Tailscale handles coordination server downtime.","lastValidated":"2025-05-02","slug":"reference/coordination-server-down","pathToContent":"reference/coordination-server-down/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Debug menu and options","summary":"Enable debug mode of the Tailscale client menu to help troubleshoot issues.","lastValidated":"2026-03-23","slug":"reference/debug-menu","pathToContent":"reference/debug-menu/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["best-practices"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Deployment checklist","summary":"Your checklist to ensure a successful Tailscale deployment.","lastValidated":"2026-01-05","slug":"reference/deployment-checklist","pathToContent":"reference/deployment-checklist/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":true,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Custom DERP servers","summary":"About custom DERP servers, their limitations, and how to set them up.","lastValidated":"2026-01-05","slug":"reference/derp-servers/custom-derp-servers","pathToContent":"reference/derp-servers/custom-derp-servers/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["derp","routing","peer-relays","connection-types"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"DERP servers","summary":"Tailscale uses Designated Encrypted Relay for Packets (DERP) servers for secure, low-latency connections in your tailnet. Customization options let you optimize device communication and NAT traversal.","lastValidated":"2026-01-21","slug":"reference/derp-servers","pathToContent":"reference/derp-servers/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["connectivity","connection-types"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Device connectivity","summary":"Understand connectivity between Tailscale devices.","lastValidated":"2026-01-07","slug":"reference/device-connectivity","pathToContent":"reference/device-connectivity/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["subnets"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Connecting without installing Tailscale","summary":"Securely connect to devices that without installing Tailscale.","lastValidated":"2025-08-01","slug":"reference/devices-without-tailscale","pathToContent":"reference/devices-without-tailscale/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["dns"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"DNS in Tailscale","summary":"Optimize your Tailscale network for DNS management, including custom DNS servers, for seamless access and better control.","lastValidated":"2025-12-22","slug":"reference/dns-in-tailscale","pathToContent":"reference/dns-in-tailscale/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["access-controls","tags","tailnet-policy-file","examples","acls"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"ACL policy examples","summary":"View example ACL policies for common sce
5narios.","lastValidated":"2026-02-02","slug":"reference/examples/acls","pathToContent":"reference/examples/acls/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["funnel","examples"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale Funnel examples","summary":"Explore Tailscale Funnel examples that let you share your files and services with the internet.","lastValidated":"2025-10-14","slug":"reference/examples/funnel","pathToContent":"reference/examples/funnel/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["access-controls","tags","tailnet-policy-file","grants","examples"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Grant examples","summary":"Explore example grant rules for common scenarios.","lastValidated":"2026-01-05","slug":"reference/examples/grants","pathToContent":"reference/examples/grants/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":false,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Examples","summary":"Examples documentation index.","lastValidated":"2026-01-29","slug":"reference/examples","pathToContent":"reference/examples/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["serve","examples"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale Serve examples","summary":"Share files and services with your tailnet using Tailscale Serve.","lastValidated":"2026-01-14","slug":"reference/examples/serve","pathToContent":"reference/examples/serve/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"What is hello.ts.net?","summary":"Explore our demo server, hello.ts.net.","lastValidated":"2026-07-08","slug":"reference/examples/tsnet-hello-world","pathToContent":"reference/examples/tsnet-hello-world/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["dns","troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"DNS problems with internal services and DNS rebinding protection","summary":"Address DNS issues with internal services and DNS rebinding protection.","lastValidated":"2025-04-01","slug":"reference/faq/dns-rebinding","pathToContent":"reference/faq/dns-rebinding/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["dns"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Why is resolv.conf being overwritten?","summary":"Understand why tailscaled overwrites /etc/resolv.conf","lastValidated":"2026-01-05","slug":"reference/faq/dns-resolv-conf","pathToContent":"reference/faq/dns-resolv-conf/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"What firewall ports should I open to use Tailscale?","summary":"Determine which firewall ports to open in your tailnet.","lastValidated":"2026-02-02","slug":"reference/faq/firewall-ports","pathToContent":"reference/faq/firewall-ports/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"FAQ","summary":"Answers to common questions.","lastValidated":"2025-08-22","slug":"reference/faq","pathToContent":"reference/faq/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["ipv6"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"IPv4 vs. IPv6 FAQ","summary":"Answers to common questions around IPv6.","lastValidated":"2026-01-05","slug":"reference/faq/ipv6","pathToContent":"reference/faq/ipv6/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["dns"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Why is MagicDNS fetching records on port 443?","summary":"Understand how MagicDNS handles DNS-over-HTTPS and fetches records on port 443.","lastValidated":"2025-09-18","slug":"reference/faq/magicdns","pathToContent":"reference/faq/magicdns/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["faq","tailscale-ip-addresses","compatibility","troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Can I use Tailscale alongside other VPNs?","summary":"Get information about Tailscale compatibility or incompatibility with other VPNs.","lastValidated":"2026-01-12","slug":"reference/faq/other-vpns","pathToContent":"reference/faq/other-vpns/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["funnel","sharing"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Funnel vs. sharing devices","summary":"Understand the differences between Tailscale Funnel service and sharing devices.","lastValidated":"2025-08-03","slug":"reference/funnel-vs-sharing","pathToContent":"reference/funnel-vs-sharing/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"AWS Client VPN and Tailscale terminology mapping","summary":"AWS Client VPN terminology to the closest match in Tailscale.","lastValidated":"2025-10-08","slug":"reference/glossary/aws-client-vpn-tailscale","pathToContent":"reference/glossary/aws-client-vpn-tailscale/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Cisco and Tailscale terminology mapping","summary":"Relate Cisco terminology to the closest match in Tailscale.","lastValidated":"2026-01-05","slug":"reference/glossary/cisco-tailscale","pathToContent":"reference/glossary/cisco-tailscale/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Fortinet and Tailscale terminology mapping","summary":"Relate Fortinet terminology to the closest match in Tailscale.","lastValidated":"2026-01-14","slug":"reference/glossary/fortinet-tailscale","pathToContent":"reference/glossary/fortinet-tailscale/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Palo Alto Networks GlobalProtect and Tailscale terminology mapping","summary":"Relate Palo Alto Networks GlobalProtect terminology to the closest match in Tailscale.","lastValidated":"2025-10-06","slug":"reference/glossary/globalprotect-tailscale","pathToContent":"reference/glossary/globalprotect-tailscale/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Terminology and concepts","summary":"Review Tailscale terminology and concepts.","lastValidated":"2026-01-12","slug":"reference/glossary","pathToContent":"reference/glossary/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["access-controls","acls","grants","comparison"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Grants vs. ACLs","summary":"A comparison of grants and ACLs as access control mechanisms","lastValidated":"2025-08-01","slug":"reference/grants-vs-acls","pathToContent":"reference/grants-vs-acls/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Technical reference","summary":"Explore reference guides for Tailscale tools and features, including access control policies, command-line interface (Tailscale
5CLI), API, and best practices for managing your tailnet. Understand access controls, production strategies, security, and key terminology.","lastValidated":"2025-05-07","slug":"reference","pathToContent":"reference/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["interoperability"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Interoperability with other software","summary":"Get information about Tailscale interoperability with other software.","lastValidated":"2026-03-25","slug":"reference/interoperability","pathToContent":"reference/interoperability/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Invite only features","summary":"Create and accept invitations for Tailscale features.","lastValidated":"2025-09-26","slug":"reference/invite-only-feature","pathToContent":"reference/invite-only-feature/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["sharing","inviting","comparison"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Inviting users vs sharing a device","summary":"Understand the difference between inviting a user and sharing a device.","lastValidated":"2026-01-05","slug":"reference/inviting-vs-sharing","pathToContent":"reference/inviting-vs-sharing/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"IP pool","summary":"Configure Tailscale to assign IP addresses from a specific IP pool.","lastValidated":"2026-01-12","slug":"reference/ip-pool","pathToContent":"reference/ip-pool/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["exit-nodes","subnets","netstack"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Kernel vs. netstack subnet routing & exit nodes","summary":"Understand the kernel and userspace modes and how they are used by subnet routers and exit nodes.","lastValidated":"2026-01-05","slug":"reference/kernel-vs-userspace-routers","pathToContent":"reference/kernel-vs-userspace-routers/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Key prefixes","summary":"Learn about the Tailscale prefixes for keys, such as an API access token.","lastValidated":"2025-08-01","slug":"reference/key-prefixes","pathToContent":"reference/key-prefixes/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Key and secret management","summary":"Manage the various types of keys and secrets for your tailnet.","lastValidated":"2026-01-05","slug":"reference/key-secret-management","pathToContent":"reference/key-secret-management/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":true,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Kubernetes API request events with Tailscale","summary":"Record all Kubernetes API requests with Tailscale Kubernetes API server proxy.","lastValidated":"2026-01-05","slug":"reference/kubernetes-operator-api-request-event-recording","pathToContent":"reference/kubernetes-operator-api-request-event-recording/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["dns"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Configuring Linux DNS","summary":"Common problems when configuring DNS on Linux.","lastValidated":"2026-01-05","slug":"reference/linux-dns","pathToContent":"reference/linux-dns/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Logging, streaming, and events","summary":"Explore Tailscale\'s logging features and events for webhooks.","lastValidated":"2025-02-05","slug":"reference/logging-streaming-events","pathToContent":"reference/logging-streaming-events/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Coordination server reports an issue","summary":"Coordination server issues can stem from connectivity problems. Check your network, firewall, or restart the Tailscale client.","lastValidated":"2025-08-01","slug":"reference/messages/client/coordination-server-issue","pathToContent":"reference/messages/client/coordination-server-issue/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Could not apply configuration","summary":"Envknob errors stem from misconfigurations or conflicts. Fixing them involves reviewing settings and restarting the client.","lastValidated":"2025-07-31","slug":"reference/messages/client/could-not-apply-config","pathToContent":"reference/messages/client/could-not-apply-config/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Docker with stateful filtering","summary":"Docker\'s firewall may conflict with Tailscale\'s stateful filtering. Adjust iptables or use Tailscale
5CLI to restore container connectivity.","lastValidated":"2025-12-29","slug":"reference/messages/client/docker-stateful-filtering","pathToContent":"reference/messages/client/docker-stateful-filtering/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":false,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Client","summary":"Client documentation index.","lastValidated":"2026-01-29","slug":"reference/messages/client","pathToContent":"reference/messages/client/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Invalid packet filter","summary":"The coordination server may send an unsafe packet filter. Check your tailnet policy and firewall rules, then restart the Tailscale client to resolve the issue.","lastValidated":"2025-08-01","slug":"reference/messages/client/invalid-packet-filter","pathToContent":"reference/messages/client/invalid-packet-filter/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Local log misconfiguration","summary":"The Tailscale client cannot initialize local connectivity logging due to a misconfigured or inaccessible log destination, limiting debug visibility.","lastValidated":"2026-01-30","slug":"reference/messages/client/local-log-config-error","pathToContent":"reference/messages/client/local-log-config-error/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"MagicSock function not running","summary":"A core MagicSock function failed. You can restart or update the client, check UDP firewall settings, or reinstall to restore connectivity.","lastValidated":"2025-07-31","slug":"reference/messages/client/magicsock-receive-func-error","pathToContent":"reference/messages/client/magicsock-receive-func-error/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Network map response timeout","summary":"The Tailscale client did not receive a network map from the control plane in time, preventing it from updating network state and potentially affecting connectivity.","lastValidated":"2026-01-30","slug":"reference/messages/client/network-map-response-timeout","pathToContent":"reference/messages/client/network-map-response-timeout/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Network down","summary":"The Tailscale client detects no network. Check your internet connection and restart the client to restore connectivity.","lastValidated":"2025-08-01","slug":"reference/messages/client/network-status","pathToContent":"reference/messages/client/network-status/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Relay server unavailable","summary":"The client can\'t reach a DERP relay server. Check your internet, restart the client, or review firewall settings to restore connectivity.","lastValidated":"2025-07-31","slug":"reference/messages/client/no-derp-connection","pathToContent":"reference/messages/client/no-derp-connection/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"No home relay server","summary":"The client can\'t connect to any DERP relay. Check internet, restart the client, or review firewall settings to restore fallback connectivity.","lastValidated":"2025-08-01","slug":"reference/messages/client/no-derp-home","pathToContent":"reference/messages/client/no-derp-home/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Out of sync","summary":"The client can\'t sync with the coordination server. Check internet, firewall, or device restrictions to maintain peer connectivity.","lastValidated":"2026-01-05","slug":"reference/messages/client/not-in-map-poll","pathToContent":"reference/messages/client/not-in-map-poll/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Linux DNS configuration issue","summary":"The client can\'t apply DNS settings on Linux. Enable systemd-resolved, run tailscaled as root, or manually configure DNS.","lastValidated":"2026-01-12","slug":"reference/messages/client/resolv-conf-overwritten","pathToContent":"reference/messages/client/resolv-conf-overwritten/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale blocked by Screen Time","summary":"macOS Screen Time is blocking Tailscale. Disable the restriction in System Settings to restore proper client functionality.","lastValidated":"2025-07-31","slug":"reference/messages/client/screen-time-controlclient","pathToContent":"reference/messages/client/screen-time-controlclient/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Security update available","summary":"Notification of a Tailscale security update. To stay secure, install the update promptly using the client UI, app store, or CLI.","lastValidated":"2025-08-01","slug":"reference/messages/client/security-update-available","pathToContent":"reference/messages/client/security-update-available/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Windows network configuration failed","
5summary":"The Tailscale client failed to set required Windows network settings for its adapter, which can block routing, DNS, or overall connectivity.","lastValidated":"2026-01-30","slug":"reference/messages/client/set-network-category-failed","pathToContent":"reference/messages/client/set-network-category-failed/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale SSH and SELinux","summary":"SELinux is enforcing security rules that may block Tailscale\'s built-in SSH, since it runs inside the tailscaled process instead of the system SSH daemon.","lastValidated":"2026-01-30","slug":"reference/messages/client/ssh-unavailable-selinux-enabled","pathToContent":"reference/messages/client/ssh-unavailable-selinux-enabled/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Encrypted connection failed","summary":"The Tailscale client could not establish a secure, encrypted connection with a peer or control plane because the required cryptographic handshake failed.","lastValidated":"2026-01-30","slug":"reference/messages/client/tls-connection-failed","pathToContent":"reference/messages/client/tls-connection-failed/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Update available","summary":"Notification of a new Tailscale version. Update using the client UI, app store, or CLI to get the latest features and improvements.","lastValidated":"2025-07-31","slug":"reference/messages/client/update-available","pathToContent":"reference/messages/client/update-available/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Using an unstable version","summary":"Unstable Tailscale versions are for testing. They\'re safe if intentional, but not recommended for production use.","lastValidated":"2025-07-31","slug":"reference/messages/client/using-unstable-version","pathToContent":"reference/messages/client/using-unstable-version/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Your account is not an administrator","summary":"A Member user tried to access the admin console. Only users with Admin, IT admin, or Owner roles have permission to manage settings.","lastValidated":"2025-07-31","slug":"reference/messages/console/account-not-admin","pathToContent":"reference/messages/console/account-not-admin/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Authentication failed while retrieving details from your identity provider","summary":"The client couldn\'t connect to the SSO provider. Check IdP status, config, redirect URLs, and firewall rules to resolve authentication issues.","lastValidated":"2025-08-01","slug":"reference/messages/console/auth-failed-sso","pathToContent":"reference/messages/console/auth-failed-sso/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":true,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Duplicate accounts created","summary":"From May to August 2025, a bug created duplicate Tailscale accounts and tailnets for some users. It is fixed, but support may be required.","lastValidated":"2025-08-21","slug":"reference/messages/console/duplicate-accounts","pathToContent":"reference/messages/console/duplicate-accounts/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":false,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Console","summary":"Console documentation index.","lastValidated":"2026-01-29","slug":"reference/messages/console","pathToContent":"reference/messages/console/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Login name change detected","summary":"A login email changed for a tailnet on a public domain. Revert the change or create a new tailnet, as admin access is now blocked.","lastValidated":"2025-07-31","slug":"reference/messages/console/login-name-change","pathToContent":"reference/messages/console/login-name-change/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Multiple users with login","summary":"A login email matches multiple users or tailnets. Confirm the correct email or contact support to resolve the login issue.","lastValidated":"2025-07-31","slug":"reference/messages/console/multi-user-login","pathToContent":"reference/messages/console/multi-user-login/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"You don\'t have access to the admin console","summary":"A Member user tried to access the admin console. Only users with Owner, Admin, or IT admin roles have admin permissions.","lastValidated":"2025-08-20","slug":"reference/messages/console/no-access","pathToContent":"reference/messages/console/no-access/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Error 500 no auth service","summary":"The client can\'t reach the IdP auth service. Check IdP config, redirect URLs, and firewall rules to restore SSO login.","lastValidated":"2025-08-01","slug":"reference/messages/console/no-auth-service","pathToContent":"reference/messages/console/no-auth-service/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Your organization has restricted members from joining external tail
5nets","summary":"Your org blocks joining external tailnets. Use a different email or contact your admin to request access with your org address.","lastValidated":"2025-07-31","slug":"reference/messages/console/org-has-restrictions","pathToContent":"reference/messages/console/org-has-restrictions/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Reached use limit","summary":"Your plan reached its user limit. Upgrade, remove users, or contact support or your admin to resolve account or policy restrictions.","lastValidated":"2025-07-31","slug":"reference/messages/console/reached-use-limit","pathToContent":"reference/messages/console/reached-use-limit/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Failed to load sharing information","summary":"Sharing info failed to load in the admin console. Try again later or check Tailscale status for possible service issues.","lastValidated":"2025-10-15","slug":"reference/messages/console/sharing-failure","pathToContent":"reference/messages/console/sharing-failure/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale messages","summary":"Tailscale client and admin console messages to help you understand, manage, and troubleshoot tailnet-related issues.","lastValidated":"2026-01-30","slug":"reference/messages","pathToContent":"reference/messages/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["tutorial","migration","grants","access-controls"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Migrate from ACLs to grants","summary":"Convert ACLs to grants.","lastValidated":"2026-03-13","slug":"reference/migrate-acls-grants","pathToContent":"reference/migrate-acls-grants/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Add multifactor authentication to any legacy service","summary":"Explore how Tailscale integrates with SSO providers for authentication, including for 2FA/MFA.","lastValidated":"2026-01-05","slug":"reference/multifactor-auth","pathToContent":"reference/multifactor-auth/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["ssh"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Deploy multiple Tailscale SSH session recorder nodes","summary":"Configure multiple SSH session recorder nodes in your tailnet to provide backup nodes for failover","lastValidated":"2025-12-08","slug":"reference/multiple-recorder-nodes","pathToContent":"reference/multiple-recorder-nodes/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["reference","linux","firewall","netfilter","cli"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale netfilter modes","summary":"Information about the netfilter modes supported by Tailscale on Linux devices.","lastValidated":"2025-12-29","slug":"reference/netfilter-modes","pathToContent":"reference/netfilter-modes/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["explanation","access-controls","grants","node-attributes"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Node attributes vs. grant app capabilities","summary":"Understand whether a capability belongs on a device or on a connection, and how node attributes and grant app capabilities differ.","lastValidated":"2026-06-24","slug":"reference/node-attributes-vs-app-capabilities","pathToContent":"reference/node-attributes-vs-app-capabilities/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["ping","tailscale-cli","connectivity"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale ping message types","summary":"The Tailscale
5CLI ping command supports four types of ping messages.","lastValidated":"2026-01-13","slug":"reference/ping-types","pathToContent":"reference/ping-types/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":true,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Procurement at Tailscale","summary":"A guide for Tailscale vendors and service providers.","lastValidated":"2026-01-05","slug":"reference/procurement","pathToContent":"reference/procurement/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["ip-addresses","dns","tailscale-ip-addresses"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"What is 100.100.100.100?","summary":"Find out what 100.100.100.100 (also known as Quad100) is.","lastValidated":"2026-01-12","slug":"reference/quad100","pathToContent":"reference/quad100/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":true,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Re-authenticating under Tailnet Lock","summary":"How to safely re-authenticate a node under Tailnet Lock.","lastValidated":"2026-01-05","slug":"reference/reauth-under-tailnet-lock","pathToContent":"reference/reauth-under-tailnet-lock/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aws","aws-best-practices","best-practices","cloud-best-practices"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"AWS reference architecture","summary":"Deploy Tailscale to Amazon Web Services (AWS) with best practices, security, and production readiness in mind.","lastValidated":"2026-01-05","slug":"reference/reference-architectures/aws","pathToContent":"reference/reference-architectures/aws/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["azure","azure-best-practices","best-practices","cloud-best-practices"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Azure reference architecture","summary":"Deploy Tailscale to Microsoft Azure with best practices, security, and production readiness in mind.","lastValidated":"2026-01-05","slug":"reference/reference-architectures/azure","pathToContent":"reference/reference-architectures/azure/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["gcp","gcp-best-practices","best-practices","cloud-best-practices"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Google Cloud Platform reference architecture","summary":"Deploy Tailscale to Google Cloud Platform (GCP) with best practices, security, and production readiness in mind.","lastValidated":"2026-01-05","slug":"reference/reference-architectures/gcp","pathToContent":"reference/reference-architectures/gcp/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":false,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Reference architectures","summary":"Reference architectures documentation index.","lastValidated":"2026-08-21","slug":"reference/reference-architectures","pathToContent":"reference/reference-architectures/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["ip-addresses","dns","tailscale-ip-addresses","networking"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Reserved IP addresses","summary":"Review the reserved IP addresses and ranges that Tailscale uses for device addressing and internal services.","lastValidated":"2026-01-12","slug":"reference/reserved-ip-addresses","pathToContent":"reference/reserved-ip-addresses/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["routing","subnets","reference"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Route injection","summary":"Understand how Tailscale injects subnet routes into client routing tables, including the relationship between routes and access controls.","lastValidated":"2026-02-13","slug":"reference/route-injection","pathToContent":"reference/route-injection/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["ssh"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Protect your SSH servers using Tailscale","summary":"Understand how Tailscale works well with SSH clients and SSH servers, improving security and offering a better user experience.","lastValidated":"2026-01-12","slug":"reference/ssh-over-tailscale","pathToContent":"reference/ssh-over-tailscale/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["faq"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"What is STUN?","summary":"Explore the STUN protocol and how Tailscale uses it.","lastValidated":"2025-08-06","slug":"reference/stun-protocol","pathToContent":"reference/stun-protocol/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["routing","subnets"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Replace site-to-site VPNs with Tailscale and WireGuard","summary":"Use Tailscale for site-to-site VPN to forward network traffic between local networks.","lastValidated":"2024-09-04","slug":"reference/subnet-site-to-site","pathToContent":"reference/subnet-site-to-site/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Support options","summary":"Understand Tailscale\'s support options.","lastValidated":"2026-01-05","slug":"reference/support-options","pathToContent":"reference/support-options/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["reference","grants","access-controls"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Grants syntax","summary":"Complete reference documentation for Tailscale\'s grants system.","lastValidated":"2026-01-05","slug":"reference/syntax/grants","pathToContent":"reference/syntax/grants/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":false,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Syntax","summary":"Syntax documentation index.","lastValidated":"2026-01-29","slug":"reference/syntax","pathToContent":"reference/syntax/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["access-controls","tags","acls","grants","policies","syntax","tailnet-policy-file"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Syntax reference for the tailnet policy file","summary":"Reference syntax for the tailnet policy file.","lastValidated":"2026-04-08","slug":"reference/syntax/policy-file","pathToContent":"reference/syntax/policy-file/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Admin account with passkey login","summary":"Proactively set up an admin user that can log in to your tailnet with a passkey, to mitigate against a future SSO lockout.","lastValidated":"2026-01-05","slug":"reference/tailnet-passkey-admin","pathToContent":"reference/tailnet-passkey-admin/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale API","summary":"Explore the Tailscale application programming interface (API).","lastValidated":"2026-06-24","slug":"reference/tailscale-api","pathToContent":"reference/tailscale-api/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["funnel"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"tailscale funnel c
5ommand","summary":"Review the `tailscale funnel` CLI command.","lastValidated":"2026-01-26","slug":"reference/tailscale-cli/funnel","pathToContent":"reference/tailscale-cli/funnel/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale CLI","summary":"Manage and troubleshoot your tailnet with the Tailscale command-line interface (Tailscale CLI).","lastValidated":"2026-07-30","slug":"reference/tailscale-cli","pathToContent":"reference/tailscale-cli/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"tailscale lock command","summary":"Review the `tailscale lock` CLI command.","lastValidated":"2026-01-05","slug":"reference/tailscale-cli/lock","pathToContent":"reference/tailscale-cli/lock/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["serve","cli"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"tailscale serve command","summary":"Use the `tailscale serve` CLI command to share a local service securely within your tailnet.","lastValidated":"2026-01-26","slug":"reference/tailscale-cli/serve","pathToContent":"reference/tailscale-cli/serve/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"tailscale up command","summary":"Connect to Tailscale using the command line.","lastValidated":"2026-01-26","slug":"reference/tailscale-cli/up","pathToContent":"reference/tailscale-cli/up/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["monitoring","logging"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale client metrics","summary":"Collect metrics from Tailscale clients.","lastValidated":"2026-07-28","slug":"reference/tailscale-client-metrics","pathToContent":"reference/tailscale-client-metrics/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale client versions and release tracks","summary":"Understand Tailscale client versions and release tracks.","lastValidated":"2025-02-21","slug":"reference/tailscale-client-versions","pathToContent":"reference/tailscale-client-versions/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale Community Projects","summary":"Use community-supported open source projects built on Tailscale\'s platform. These projects include apps, tools, extensions, and interfaces that build on Tailscale\'s networking and identity primitives.","lastValidated":"2025-08-18","slug":"reference/tailscale-community-projects","pathToContent":"reference/tailscale-community-projects/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["compliance"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale FedRAMP and FIPS-140 considerations","summary":"Use Tailscale in FedRAMP Moderate environments and in the context of FIPS 140.","lastValidated":"2026-01-05","slug":"reference/tailscale-fedramp-fips140","pathToContent":"reference/tailscale-fedramp-fips140/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Release stages","summary":"Understand the Tailscale release stages.","lastValidated":"2025-03-25","slug":"reference/tailscale-release-stages","pathToContent":"reference/tailscale-release-stages/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["services","reference"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale Services configuration file","summary":"Use the Tailscale Services configuration file to define how resources are exposed within your tailnet.","lastValidated":"2026-01-27","slug":"reference/tailscale-services-configuration-file","pathToContent":"reference/tailscale-services-configuration-file/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"tailscaled daemon","summary":"Explore the tailscaled daemon.","lastValidated":"2026-01-05","slug":"reference/tailscaled","pathToContent":"reference/tailscaled/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["linux","configuration","headless","automation","containers","kubernetes"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale daemon configuration file","summary":"Use a JSON configuration file to configure the Tailscale daemon for automated and headless deployments.","lastValidated":"2026-01-08","slug":"reference/tailscaled/tailscaled-config-file","pathToContent":"reference/tailscaled/tailscaled-config-file/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["access-controls","autogroups","targets","policies","acls","grants"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Targets and selectors","summary":"Understand Tailscale targets, the identifiers you use to identify users, devices, or subnets in the tailnet policy file.","lastValidated":"2026-01-05","slug":"reference/targets-and-selectors","pathToContent":"reference/targets-and-selectors/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot Apple TV","summary":"Troubleshoot Apple TV issues.","lastValidated":"2026-02-18","slug":"reference/troubleshooting/apple/cant-access-appletv","pathToContent":"reference/troubleshooting/apple/cant-access-appletv/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot macOS access from iPhone","summary":"Troubleshoot your iPhone access to a Mac.","lastValidated":"2026-02-18","slug":"reference/troubleshooting/apple/cant-access-macos-from-iphone","pathToContent":"reference/troubleshooting/apple/cant-access-macos-from-iphone/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshooting guide for Apple","summary":"Troubleshoot common Apple client issues.","lastValidated":"2026-02-10","slug":"reference/troubleshooting/apple","pathToContent":"reference/troubleshooting/apple/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot Tailscale icon not appearing","summary":"Troubleshoot the Tailscale icon not appearing on your Mac.","lastValidated":"2026-02-18","slug":"reference/troubleshooting/apple/macos-doesnt-display-tailscale-icon","pathToContent":"reference/troubleshooting/apple/macos-doesnt-display-tailscale-icon/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot macOS ping issues","summary":"Troubleshoot your mac when it has ping issues.","lastValidated":"2026-02-18","slug":"reference/troubleshooting/apple/macos-ping-issues","pathToContent":"reference/troubleshooting/apple/macos-ping-issues/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot macOS stuck at Loading backend","summary":"Troubleshoot your macOS if it is stuck at Loading backend.","lastValidated":"2026-02-18","slug":"reference/troubleshooting/apple/macos-stuck-loading-backend","pathToContent":"reference/troubleshooting/apple/macos-stuck-loading-backend/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot macOS system extension errors","summary":"Troubleshoot system extension errors on your Mac.","lastValidated":"2026-02-18","slug":"reference/troubleshooting/apple/macos-system-extension-errors","pathToContent":"reference/troubleshooting/apple/macos-system-extension-errors/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting","connectivity"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Basic network troubleshooting","summary":"Troubleshoot basic network connectivity.","lastValidated":"2025-11-14","slug":"reference/troubleshooting/basic-network-troubleshooting","pathToContent":"reference/troubleshooting/basic-network-troubleshooting/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting","cloud"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot AWS access to Google with advertised routes","summary":"Troubleshoot AWS access to Google with advertised routes in your Tailscale network.","lastValidated":"2026-03-20","slug":"reference/troubleshooting/cloud/aws-google-routes","pathToContent":"reference/troubleshooting/cloud/aws-google-routes/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting","cloud"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot cloud environments","summary":"Troubleshoot cloud environment issues in your Tailscale network.","lastValidated":"2026-03-20","slug":"reference/troubleshooting/cloud","pathToContent":"reference/troubleshooting/cloud/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting","cloud"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot Oracle cloud devices","summary":"Troubleshoot Oracle cloud devices in your Tailscale network.","lastValidated":"2026-03-20","slug":"reference/troubleshooting/cloud/oracle-cloud","pathToContent":"reference/troubleshooting/cloud/oracle-cloud/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting","cloud"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot subnet connectivity in the cloud","summary":"Troubleshoot subnet connectivity for cloud VMs in your Tailscale network.","lastValidated":"2026-03-20","slug":"reference/troubleshooting/cloud/subnet-connectivity","pathToContent":"reference/troubleshooting/cloud/subnet-connectivity/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale client flagged by antivirus software","summary":"Troubleshoot the Tailscale client flagged by antivirus software.","lastValidated":"2026-03-24","slug":"reference/troubleshooting/connectivity/antivirus-failure","pathToContent":"reference/troubleshooting/connectivity/antivirus-failure/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Blocked by captive portal","summary":"Troubleshoot blocked by captive portal issues.","lastValidated":"2026-03-23","slug":"reference/troubleshooting/connectivity/captive-portal-failure","pathToContent":"reference/troubleshooting/connectivity/captive-portal-failure/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting","connectivity"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Can\'t connect to other tail
5net devices","summary":"Troubleshoot tailnet device connectivity.","lastValidated":"2025-11-14","slug":"reference/troubleshooting/connectivity/connect-device-failure","pathToContent":"reference/troubleshooting/connectivity/connect-device-failure/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting","connectivity"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Can\'t connect to internet","summary":"Troubleshoot internet connectivity issues.","lastValidated":"2025-12-10","slug":"reference/troubleshooting/connectivity/connect-internet-failure","pathToContent":"reference/troubleshooting/connectivity/connect-internet-failure/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting","connectivity"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Can\'t connect to local area network","summary":"Troubleshoot local area network (LAN) connectivity.","lastValidated":"2025-11-14","slug":"reference/troubleshooting/connectivity/connect-lan-failure","pathToContent":"reference/troubleshooting/connectivity/connect-lan-failure/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Can\'t download Tailscale client","summary":"Troubleshoot Tailscale client download issues.","lastValidated":"2026-03-23","slug":"reference/troubleshooting/connectivity/download-client-failure","pathToContent":"reference/troubleshooting/connectivity/download-client-failure/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting","connectivity"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot device connectivity","summary":"Troubleshoot device connectivity.","lastValidated":"2025-11-14","slug":"reference/troubleshooting/connectivity","pathToContent":"reference/troubleshooting/connectivity/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting","containers"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot containers","summary":"Troubleshoot container issues in your Tailscale network.","lastValidated":"2026-03-18","slug":"reference/troubleshooting/containers","pathToContent":"reference/troubleshooting/containers/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot custom domains with Kubernetes Gateway API and Tailscale","summary":"Resolve common issues when configuring custom domains for services exposed through Tailscale using Kubernetes Gateway API.","lastValidated":"2026-01-05","slug":"reference/troubleshooting/containers/kubernetes-operator/byod-gateway-api","pathToContent":"reference/troubleshooting/containers/kubernetes-operator/byod-gateway-api/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["kubernetes","kubernetes-operator","troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshooting Kubernetes operator issues","summary":"Troubleshoot Kubernetes operator issues in your Tailscale network.","lastValidated":"2026-01-05","slug":"reference/troubleshooting/containers/kubernetes-operator","pathToContent":"reference/troubleshooting/containers/kubernetes-operator/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting","containers"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshooting Proxmox issues","summary":"Troubleshoot Proxmox issues in your Tailscale network.","lastValidated":"2026-03-18","slug":"reference/troubleshooting/containers/proxmox","pathToContent":"reference/troubleshooting/containers/proxmox/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["access-controls","grants","troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshooting grants","summary":"Guidance for diagnosing and troubleshooting common issues with grants","lastValidated":"2026-01-12","slug":"reference/troubleshooting/grants","pathToContent":"reference/troubleshooting/grants/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshooting guide","summary":"Troubleshoot common tailnet scenarios.","lastValidated":"2026-01-05","slug":"reference/troubleshooting","pathToContent":"reference/troubleshooting/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshooting guide for Linux","summary":"Troubleshoot common Linux client issues.","lastValidated":"2026-02-10","slug":"reference/troubleshooting/linux","pathToContent":"reference/troubleshooting/linux/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot Linux DNS issues","summary":"Troubleshoot DNS issues on Linux.","lastValidated":"2026-02-18","slug":"reference/troubleshooting/linux/linux-dns-issues","pathToContent":"reference/troubleshooting/linux/linux-dns-issues/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot Linux operator permission","summary":"Troubleshoot Linux operator permission for the Tailscale daemon.","lastValidated":"2026-02-18","slug":"reference/troubleshooting/linux/linux-operator-permission","pathToContent":"reference/troubleshooting/linux/linux-operator-permission/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot Linux failure to unseal state file","summary":"Troubleshoot failure to unseal state file on Linux.","lastValidated":"2026-02-18","slug":"reference/troubleshooting/linux/linux-unseal-state-file","pathToContent":"reference/troubleshooting/linux/linux-unseal-state-file/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting","mobile"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Mobile device batteries drain quickly","summary":"Troubleshoot battery draining of mobile devices in your Tailscale network.","lastValidated":"2026-03-20","slug":"reference/troubleshooting/mobile/battery-drains","pathToContent":"reference/troubleshooting/mobile/battery-drains/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting","mobile"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot apps forced to use Tailscale","summary":"Troubleshoot which apps can bypass Tailscale and which apps must use Tailscale.","lastValidated":"2026-03-20","slug":"reference/troubleshooting/mobile/force-or-bypass-apps","pathToContent":"reference/troubleshooting/mobile/force-or-bypass-apps/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting","mobile"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot mobile devices","summary":"Troubleshoot mobile device issues in your Tailscale network.","lastValidated":"2026-03-20","slug":"reference/troubleshooting/mobile","pathToContent":"reference/troubleshooting/mobile/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot CGNAT conflicts","summary":"Troubleshoot CGNAT conflicts in your Tailscale network.","lastValidated":"2026-03-16","slug":"reference/troubleshooting/network-configuration/cgnat-conflicts","pathToContent":"reference/troubleshooting/network-configuration/cgnat-conflicts/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot DERP traffic routing issues","summary":"Troubleshoot DERP traffic routing issues in your Tailscale network.","lastValidated":"2026-03-16","slug":"reference/troubleshooting/network-configuration/derp-routing","pathToContent":"reference/troubleshooting/network-configuration/derp-routing/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Disable subnet route masquerading","summary":"Disable Source Network Address Translation (SNAT) for a device in your Tailscale network.","lastValidated":"2026-03-25","slug":"reference/troubleshooting/network-configuration/disable-subnet-route-masquerading","pathToContent":"reference/troubleshooting/network-configuration/disable-subnet-route-masquerading/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot DNS errors for internal services","summary":"Troubleshoot DNS errors for internal services connectivity in your Tailscale network.","lastValidated":"2026-03-16","slug":"reference/troubleshooting/network-configuration/dns-errors-internal-service","pathToContent":"reference/troubleshooting/network-configuration/dns-errors-internal-service/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot hard NAT issues","summary":"Troubleshoot hard NAT issues with slow or timed out connections in your Tailscale network.","lastValidated":"2026-03-16","slug":"reference/troubleshooting/network-configuration/hard-nat-issues","pathToContent":"reference/troubleshooting/network-configuration/hard-nat-issues/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot network configuration","summary":"Troubleshoot common network configuration issues.","lastValidated":"2026-03-16","slug":"reference/troubleshooting/network-configuration","pathToContent":"reference/troubleshooting/network-configuration/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Unencrypted packet examination","summary":"Inspect unencrypted packets as part of troubleshooting.","lastValidated":"2026-03-26","slug":"reference/troubleshooting/network-configuration/inspect-unencrypted-packets","pathToContent":"reference/troubleshooting/network-configuration/inspect-unencrypted-packets/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot IP forwarding issues when advertising subnet routes or exit nodes","summary":"Troubleshoot IP forwarding issues when advertising subnet routes or exit nodes in your Tailscale network.","lastValidated":"2026-03-16","slug":"reference/troubleshooting/network-configuration/ip-forwarding-errors-advertise","pathToContent":"reference/troubleshooting/network-configuration/ip-forwarding-errors-advertise/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot LAN traffic prioritization issues with overlapping subnet routes","summary":"Troubleshoot LAN traffic prioritization issues with overlapping subnet routes in your Tailscale network.","lastValidated":"2026-03-16","slug":"reference/troubleshooting/network-configuration/lan-traffic-overlapping-subnets","pathToContent":"reference/troubleshooting/network-configuration/lan-traffic-overlapping-subnets/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot multiple devices with the same 100.x IP address","summary":"Troubleshoot multiple devices with the same 100.x IP address in your Tailscale network.","lastValidated":"2026-03-16","slug":"reference/troubleshooting/network-configuration/multiple-devices-same-100-x-ip-address","pathToContent":"reference/troubleshooting/network-configuration/multiple-devices-same-100-x-ip-address/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot overlapping subnet route failover","summary":"Troubleshoot overlapping subnet route failover issues in your Tailscale network.","lastValidated":"2026-03-16","slug":"reference/troubleshooting/network-configuration/overlapping-subnet-route-failover","pathToContent":"reference/troubleshooting/network-configuration/overlapping-subnet-route-failover/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot routing all traffic through a default route","summary":"Troubleshoot routing all traffic through a default route in your Tailscale network.","lastValidated":"2026-03-16","slug":"reference/troubleshooting/network-configuration/route-traffic-default-node","pathToContent":"reference/troubleshooting/network-configuration/route-traffic-default-node/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot SoraCOM issues","summary":"Troubleshoot SoraCOM issues in your Tailscale network.","lastValidated":"2026-03-16","slug":"reference/troubleshooting/network-configuration/soracom-issues","pathToContent":"reference/troubleshooting/network-configuration/soracom-issues/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot Sunrise Communications issues","summary":"Troubleshoot Sunrise Communications issues in your Tailscale network.","lastValidated":"2026-03-16","slug":"reference/troubleshooting/network-configuration/sunrise-communicat
5ions-issues","pathToContent":"reference/troubleshooting/network-configuration/sunrise-communications-issues/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot Tailscale domains and sites unreachable","summary":"Troubleshoot Tailscale domains and sites unreachable issues in your Tailscale network.","lastValidated":"2026-03-16","slug":"reference/troubleshooting/network-configuration/tailscale-domains-sites-unreachable","pathToContent":"reference/troubleshooting/network-configuration/tailscale-domains-sites-unreachable/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"IP routes installed by Tailscale","summary":"Determine which routes that Tailscale installs.","lastValidated":"2026-03-25","slug":"reference/troubleshooting/network-configuration/tailscale-ip-routes","pathToContent":"reference/troubleshooting/network-configuration/tailscale-ip-routes/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot Tally ERP issues","summary":"Troubleshoot Tally ERP issues in your Tailscale network.","lastValidated":"2026-03-16","slug":"reference/troubleshooting/network-configuration/tally-erp-issues","pathToContent":"reference/troubleshooting/network-configuration/tally-erp-issues/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot TCP connection issues between two devices","summary":"Troubleshoot TCP connection issues between two devices in your Tailscale network.","lastValidated":"2026-03-16","slug":"reference/troubleshooting/network-configuration/tcp-connection-two-devices","pathToContent":"reference/troubleshooting/network-configuration/tcp-connection-two-devices/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting","connectivity"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Poor performance with internet connections","summary":"Troubleshoot poor network performance with connections to the internet.","lastValidated":"2025-11-14","slug":"reference/troubleshooting/poor-performance-internet","pathToContent":"reference/troubleshooting/poor-performance-internet/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting","connectivity"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Poor performance between tailnet devices","summary":"Troubleshoot poor network performance between devices in your tailnet.","lastValidated":"2026-01-05","slug":"reference/troubleshooting/poor-performance-tailnet","pathToContent":"reference/troubleshooting/poor-performance-tailnet/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting","connectivity"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Can\'t resolve domain names","summary":"Troubleshoot inability to resolve domain names.","lastValidated":"2026-01-23","slug":"reference/troubleshooting/resolve-domain-names-failure","pathToContent":"reference/troubleshooting/resolve-domain-names-failure/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshooting guide for Windows","summary":"Troubleshoot common Windows client issues.","lastValidated":"2026-02-10","slug":"reference/troubleshooting/windows","pathToContent":"reference/troubleshooting/windows/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Supported Windows versions","summary":"Find out which versions of Windows that Tailscale supports.","lastValidated":"2026-02-18","slug":"reference/troubleshooting/windows/supported-windows-versions","pathToContent":"reference/troubleshooting/windows/supported-windows-versions/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot Windows installation error","summary":"Troubleshoot a Tailscale error during client installation on Windows.","lastValidated":"2026-02-18","slug":"reference/troubleshooting/windows/windows-install-error","pathToContent":"reference/troubleshooting/windows/windows-install-error/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot Windows ping issues","summary":"Troubleshoot your Windows device when it has ping issues.","lastValidated":"2026-02-18","slug":"reference/troubleshooting/windows/windows-ping-issues","pathToContent":"reference/troubleshooting/windows/windows-ping-issues/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot Windows RDP login issue","summary":"Troubleshoot the inability to log in to Windows RDP.","lastValidated":"2026-02-18","slug":"reference/troubleshooting/windows/windows-rdp-login-issue","pathToContent":"reference/troubleshooting/windows/windows-rdp-login-issue/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot Windows RDP user account restriction","summary":"Troubleshoot a user account restriction when logging in to Windows RDP.","lastValidated":"2026-02-18","slug":"reference/troubleshooting/windows/windows-rdp-user-account-restr
5iction","pathToContent":"reference/troubleshooting/windows/windows-rdp-user-account-restriction/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot system tray shows no internet access","summary":"Troubleshoot the system tray showing there is no internet access for your Windows device.","lastValidated":"2026-02-18","slug":"reference/troubleshooting/windows/windows-systray-no-internet-access","pathToContent":"reference/troubleshooting/windows/windows-systray-no-internet-access/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot Windows failure to unseal state file","summary":"Troubleshoot failure to unseal state file on Windows.","lastValidated":"2026-02-18","slug":"reference/troubleshooting/windows/windows-unseal-state-file-error","pathToContent":"reference/troubleshooting/windows/windows-unseal-state-file-error/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["troubleshooting"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Troubleshoot Windows upgrade error","summary":"Troubleshoot a Tailscale error during client upgrade on Windows.","lastValidated":"2026-02-18","slug":"reference/troubleshooting/windows/windows-upgrade-error","pathToContent":"reference/troubleshooting/windows/windows-upgrade-error/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Trust credentials","summary":"Use trust credentials to provide ongoing fine grained access to the Tailscale API.","lastValidated":"2026-01-30","slug":"reference/trust-credentials","pathToContent":"reference/trust-credentials/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"tsidp configuration","summary":"Customize the configuration of tsidp to securely isolate and authorize any service that supports OIDC/OAuth.","lastValidated":"2026-03-10","slug":"reference/tsidp-configuration","pathToContent":"reference/tsidp-configuration/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"tsnet.Server","summary":"Use tsnet.Server in a Go program to access tailnet services.","lastValidated":"2026-07-07","slug":"reference/tsnet-server-api","pathToContent":"reference/tsnet-server-api/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["roles","users"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"User roles","summary":"Use roles for restricting access to the admin console.","lastValidated":"2025-12-04","slug":"reference/user-roles","pathToContent":"reference/user-roles/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["access-controls","grants","visual-editor"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Visual policy editor reference","summary":"Complete reference for the visual policy editor user interface.","lastValidated":"2025-12-02","slug":"reference/visual-editor","pathToContent":"reference/visual-editor/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["wireguard","encryption","security"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"WireGuard VPN with a dynamic IP address","summary":"How WireGuard VPN works with dynamic IP addresses.","lastValidated":"2024-12-10","slug":"reference/wireguard-dynamic-i
5p","pathToContent":"reference/wireguard-dynamic-ip/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Access remote desktops using Windows RDP","summary":"Access a Windows PC securely from anywhere using Remote Desktop and Tailscale. Connect devices on your private tailnet without port forwarding or public IPs.","lastValidated":"2025-12-15","slug":"solutions/access-remote-desktops-using-windows-rdp","pathToContent":"solutions/access-remote-desktops-using-windows-rdp/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Access remote desktops using RustDesk","summary":"Set up secure remote desktop access using RustDesk and Tailscale for connecting devices directly over your private tailnet, no servers needed.","lastValidated":"2025-12-15","slug":"solutions/access-remote-desktops-with-rustdesk","pathToContent":"solutions/access-remote-desktops-with-rustdesk/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["solution-guide"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Block ads on all your devices from anywhere using a Raspberry Pi","summary":"Increase privacy, security, and browsing performance in a cost-effective way by using a Raspberry Pi with Pi-hole to block ads.","lastValidated":"2025-12-15","slug":"solutions/block-ads-all-devices-anywhere-using-raspberry-pi","pathToContent":"solutions/block-ads-all-devices-anywhere-using-raspberry-pi/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["code","solution-guide"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Code on iPad using Visual Studio Code, Caddy, and code-server","summary":"Code from your iPad from anywhere with a secure private connection to your own remote coding environment.","lastValidated":"2025-10-16","slug":"solutions/code-on-ipad-vscode-caddy-code-server","pathToContent":"solutions/code-on-ipad-vscode-caddy-code-server/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["ci-cd","github-actions","tsnet","oauth","ephemeral-nodes","solution-guide"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Connect GitHub CI/CD workflows to private infrastructure without public exposure","summary":"Connect GitHub-hosted runners to private infrastructure without public exposure using Tailscale\'s ephemeral, authenticated connections.","lastValidated":"2026-01-23","slug":"solutions/connect-github-cicd-workflows-to-private-infrastructure-without-public-exposure","pathToContent":"solutions/connect-github-cicd-workflows-to-private-infrastructure-without-public-exposure/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["kubernetes","containers"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"how-to-guide","availability":["all"],"title":"Connect Kubernetes pods to your tailnet using a sidecar","summary":"Run the Tailscale container image as a sidecar in Kubernetes with persistent state, DNS configuration, authentication, and routing guidance.","lastValidated":"2026-03-28","slug":"solutions/connect-kubernetes-pods-to-tailnet-using-sidecar","pathToContent":"solutions/connect-kubernetes-pods-to-tailnet-using-sidecar/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["solution-guide"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Create a secure connection to MongoDB Atlas","summary":"Securely connect to a MongoDB Atlas database and permit access only to your Tailscale network.","lastValidated":"2025-12-04","slug":"solutions/create-a-secure-connection-to-mongodb-atlas","pathToContent":"solutions/create-a-secure-connection-to-mongodb-atlas/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Solutions","summary":"Explore how to use Tailscale in various scenarios through hands-on guides.","lastValidated":"2026-07-03","slug":"solutions","pathToContent":"solutions/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["solution-guide"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Use custom domains with Kubernetes Gateway API and Tailscale","summary":"Configure custom domains for services exposed through Tailscale using Kubernetes Gateway API, Exter
5nalDNS, and automated TLS certificate management.","lastValidated":"2026-01-05","slug":"solutions/kubernetes-operator-byod-gateway-api","pathToContent":"solutions/kubernetes-operator-byod-gateway-api/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["solution-guide"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Manage multi-cluster Kubernetes deployments with ArgoCD","summary":"Set up secure multi-cluster Kubernetes management with ArgoCD using Tailscale\'s private network to connect clusters across regions without complex networking.","lastValidated":"2026-01-05","slug":"solutions/manage-multi-cluster-kubernetes-deployments-argocd","pathToContent":"solutions/manage-multi-cluster-kubernetes-deployments-argocd/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["migration-guides"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Migrate from a legacy VPN to Tailscale","summary":"Migrate your legacy VPN to Tailscale. Securely connect multiple devices, restrict access by user role and purpose, and explore additional Tailscale features.","lastValidated":"2026-01-05","slug":"solutions/migrate-legacy-vpn-tailscale","pathToContent":"solutions/migrate-legacy-vpn-tailscale/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["migration-guides"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Migrate from OpenVPN to Tailscale","summary":"Migrate your OpenVPN network to Tailscale. Securely connect multiple devices, restrict access by user role and purpose, and explore additional Tailscale features.","lastValidated":"2026-01-05","slug":"solutions/migrate-openvpn-tailscale","pathToContent":"solutions/migrate-openvpn-tailscale/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["access-controls","grants","device-posture","via","databases","postgresql","solution-guide"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Protect production PostgreSQL databases from unencrypted MacBooks","summary":"Use grants to automatically route PostgreSQL traffic based on MacBook encryption status, providing direct access for encrypted devices while monitoring unencrypted device connections.","lastValidated":"2026-01-13","slug":"solutions/protect-postgresql-unencrypted-macbooks","pathToContent":"solutions/protect-postgresql-unencrypted-macbooks/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai","solution-guide"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"solution-guide","availability":["all"],"title":"Reduce AI token spend without changing your applications","summary":"Add tsheadroom to Aperture to compress bulky AI request bodies before they reach your provider, cutting token spend across all of your traffic with no changes to your client applications.","lastValidated":"2026-08-13","slug":"solutions/reduce-aperture-token-costs-with-tsheadroom","pathToContent":"solutions/reduce-aperture-token-costs-with-tsheadroom/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai","ci-cd","github-actions","solution-guide"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"solution-guide","availability":["all"],"title":"Route AI code reviews through Aperture","summary":"Centralize API key management, usage tracking, and cost control for AI-powered code reviews by routing Claude Code GitHub Action requests through Aperture by Tailscale.","lastValidated":"2026-06-26","slug":"solutions/route-ai-code-reviews-through-aperture","pathToContent":"solutions/route-ai-code-reviews-through-aperture/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["apple-tv","exit-nodes","solution-guide"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Secure your internet traffic on public Wi-Fi using an Apple TV","summary":"Route Tailscale traffic through your Ap
5ple TV for secure, private browsing and access to region-locked content.","lastValidated":"2025-12-15","slug":"solutions/secure-traffic-public-wifi-appletv","pathToContent":"solutions/secure-traffic-public-wifi-appletv/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Set up a dog camera with Tailscale, Raspberry Pi, and Motion","summary":"Set up a dog camera that you can securely access from anywhere.","lastValidated":"2026-01-05","slug":"solutions/set-up-dogcam","pathToContent":"solutions/set-up-dogcam/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["minecraft"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Run a private Minecraft server with Tailscale","summary":"Share a Minecraft server with the people you want from anywhere.","lastValidated":"2026-01-05","slug":"solutions/set-up-minecraft","pathToContent":"solutions/set-up-minecraft/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Tailscale on NixOS: A New Minecraft Server in Ten Minutes","summary":"Set up a Minecraft server on NixOS.","lastValidated":"2026-02-02","slug":"solutions/set-up-nixos-minecraft","pathToContent":"solutions/set-up-nixos-minecraft/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["kubernetes"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":"solution-guide","availability":["all"],"title":"Sync Kubernetes secrets across clusters with External Secrets Operator","summary":"Distribute secrets between Kubernetes clusters using External Secrets Operator and Tailscale\'s private network, eliminating the need to store credentials in Git or expose API servers to the internet.","lastValidated":"2026-03-09","slug":"solutions/sync-kubernetes-secrets-across-clusters-external-secrets","pathToContent":"solutions/sync-kubernetes-secrets-across-clusters-external-secrets/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["aperture","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Centralize LLM access and spending","summary":"Route all LLM requests through a single gateway to eliminate API key sprawl, track per-user spending, and enforce access controls across developers, agents, and CI/CD pipelines.","lastValidated":"2026-07-24","slug":"use-cases/ai-infrastructure-access/centralize-llm-access-and-spending","pathToContent":"use-cases/ai-infrastructure-access/centralize-llm-access-and-spending/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Connect inference and training servers","summary":"Give GPU and inference servers identity-based access in your tailnet using tags and auth keys, with multi-tenant isolation and containerized workload support.","lastValidated":"2026-05-18","slug":"use-cases/ai-infrastructure-access/connect-inference-servers","pathToContent":"use-cases/ai-infrastructure-access/connect-inference-servers/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"AI infrastructure access","summary":"Secure access to AI infrastructure, GPU clusters, and private LLM deployments across your network.","lastValidated":"2026-05-18","slug":"use-cases/ai-infrastructure-access","pathToContent":"use-cases/ai-infrastructure-access/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["kubernetes","ai"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Secure your AI training cluster","summary":"Remove the Kubernetes API server from the public internet and enforce identity-based access, session recording, and device posture for AI training cluster operations.","lastValidated":"2026-05-18","slug":"use-cases/ai-infrastru
5cture-access/secure-ai-training-cluster","pathToContent":"use-cases/ai-infrastructure-access/secure-ai-training-cluster/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["exit-nodes","application-testing"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Localization and geo-specific testing by simulating traffic from different global locations","summary":"Use Tailscale exit nodes to route test traffic through different geographic locations and validate localization behavior with Siege.","lastValidated":"2026-05-18","slug":"use-cases/application-testing/geo-specific-testing","pathToContent":"use-cases/application-testing/geo-specific-testing/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Application testing","summary":"Share local development servers, test webhooks, and simulate geo-specific traffic without deploying to the cloud.","lastValidated":"2026-05-18","slug":"use-cases/application-testing","pathToContent":"use-cases/application-testing/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["tailscale-funnel","application-testing"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Share a local development server with the internet","summary":"Use Tailscale Funnel to expose a local development server to the public internet over HTTPS, without configuring port forwarding or a public IP address.","lastValidated":"2026-05-18","slug":"use-cases/application-testing/share-local-dev-server-with-internet","pathToContent":"use-cases/application-testing/share-local-dev-server-with-internet/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["tailscale-serve","application-testing"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Share a local development server with your team","summary":"Use Tailscale Serve to expose a local development server to other members of your tailnet over HTTPS, without opening access to the public internet.","lastValidated":"2026-05-18","slug":"use-cases/application-testing/share-local-dev-server-with-team","pathToContent":"use-cases/application-testing/share-local-dev-server-with-team/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Use cases","summary":"Explore how you can use Tailscale at home and at work.","lastValidated":"2026-05-18","slug":"use-cases","pathToContent":"use-cases/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["infrastructure-provisioning"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Manage access across multi-cloud or multi-region cloud environments","summary":"Connect cloud VPCs, Kubernetes clusters, and remote teams across AWS, GCP, Azure, and on-premises networks using Tailscale.","lastValidated":"2026-05-18","slug":"use-cases/infrastructure-access/access-multi-cloud-or-multi-region-cloud-envs","pathToContent":"use-cases/infrastructure-access/access-multi-cloud-or-multi-region-cloud-envs/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Infrastructure access","summary":"Manage secure, audited access to production servers, Kubernetes clusters, and cloud environments.","lastValidated":"2026-05-18","slug":"use-cases/infrastructure-access","pathToContent":"use-cases/infrastructure-access/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["infrastructure-provisioning","jit"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Manage least-privilege access and just-in-time access to production environments","summary":"Enforce least-privilege and just-in-time access policies for production infrastru
5cture using Tailscale tags, grants, and ephemeral nodes.","lastValidated":"2026-05-18","slug":"use-cases/infrastructure-access/manage-least-privileged-and-jit-access","pathToContent":"use-cases/infrastructure-access/manage-least-privileged-and-jit-access/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["infrastructure-provisioning","session-recording"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Record SSH sessions for compliance and audit","summary":"Record SSH sessions for compliance and auditing purposes.","lastValidated":"2026-05-18","slug":"use-cases/infrastructure-access/record-ssh-sessions-compliance","pathToContent":"use-cases/infrastructure-access/record-ssh-sessions-compliance/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["personal-or-at-home-use","subnet-routers"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Remotely access devices that can\'t run Tailscale","summary":"Remotely access devices that can\'t run the Tailscale client.","lastValidated":"2026-05-18","slug":"use-cases/personal-or-at-home-use/access-devices-without-tailscale","pathToContent":"use-cases/personal-or-at-home-use/access-devices-without-tailscale/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["personal-or-at-home-use","nas","file-sharing"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Access NAS, media servers, or file shares remotely","summary":"Reach your home files and media from anywhere without opening firewall ports.","lastValidated":"2026-05-18","slug":"use-cases/personal-or-at-home-use/access-nas-media-file-servers","pathToContent":"use-cases/personal-or-at-home-use/access-nas-media-file-servers/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Personal or at-home use","summary":"Connect and manage your home network devices and services from anywhere with Tailscale.","lastValidated":"2026-05-18","slug":"use-cases/personal-or-at-home-use","pathToContent":"use-cases/personal-or-at-home-use/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["personal-or-at-home-use","game-servers"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Share a private game server with friends","summary":"Share a private game server with friends using Tailscale.","lastValidated":"2026-05-18","slug":"use-cases/personal-or-at-home-use/share-private-game-server","pathToContent":"use-cases/personal-or-at-home-use/share-private-game-server/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["regulated-environments","device-posture"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Enforce device compliance before granting access","summary":"Use Tailscale\'s device posture features to verify device health and restrict access to sensitive resources based on compliance status.","lastValidated":"2026-05-18","slug":"use-cases/regulated-environment/enforce-device-compliance","pathToContent":"use-cases/regulated-environment/enforce-device-compliance/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Accessing a regulated environment","summary":"Meet compliance requirements with static egress IPs, device posture checks, and access controls you can audit.","lastValidated":"2026-05-18","slug":"use-cases/regulated-environment","pathToContent":"use-cases/regulated-environment/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["regulated-environments","subnet-routers"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Provide a static IP egress address to a regulated environment","summary":"Use a static egress IP address for allowlisting when accessing regulated environments like banks or healthcare systems.","lastValidated":"2026-05-18","slug":"use-cases/regulated-environment/static-egress-ip-allowlist","pathToContent":"use-cases/regulated-environment/static-egress-ip-allowlist/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["vpn-replacement","scim"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Automate employee onboarding and offboarding","summary":"Use SCIM to automate employee onboarding and offboarding in Tailscale.","lastValidated":"2026-05-18","slug":"use-cases/vpn-replacement/employee-onboarding-offboarding","pathToContent":"use-cases/vpn-replacement/employee-onboarding-offboarding/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":[],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"VPN replacement","summary":"Replace your legacy corporate VPN with Tailscale for faster and more secure remote access to your devices.","lastValidated":"2026-05-18","slug":"use-cases/vpn-replacement","pathToContent":"use-cases/vpn-replacement/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["vpn-replacement","exit-nodes","subnet-routers"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Secure remote access for work from home or remote employees","summary":"Use Tailscale configurations to secure remote access to on-prem or in-office resources.","lastValidated":"2026-05-18","slug":"use-cases/vpn-replacement/remote-workers","pathToContent":"use-cases/vpn-replacement/remote-workers/index.mdx"},{"visibility":"visible","tocDepth":3,"tags":["vpn-replacement","exit-nodes","subnet-routers"],"releaseStatus":"GA","related":[],"index":true,"hidden":false,"featured":false,"deprecated":false,"contentType":null,"availability":["all"],"title":"Secure remote access to internal
5corporate applications and data","summary":"Use Tailscale configurations to secure remote access to dashboards, file shares, SaaS, infra, and more.","lastValidated":"2026-05-18","slug":"use-cases/vpn-replacement/secure-access","pathToContent":"use-cases/vpn-replacement/secure-access/index.mdx"}]')}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.