CloudQuery News

Announcing the CloudQuery Tailscale Source Plugin

Update (July 2023): The Tailscale integration is now a premium integration. You can find more information about the pricing here.

Introduction

The Tailscale source integration for CloudQuery is now officially maintained by Tailscale — big thanks to the Tailscale team!

With the new Tailscale integration you can now easily query Tailscale config and bring config data to your infrastructure/operational lake.
This way you can have all your infrastructure data in one place and correlate between different services.

As part of its initial release, the Tailscale integration supports pulling data for the following APIs:

Let's look at a few useful queries.

Configuration

First, let's quickly look at the source configuration for the integration. The example below syncs the tailscale_devices table to PostgreSQL, making use of the new OAuth client to authenticate.

kind: source
# Common source-plugin configuration
spec:
name: tailscale
path: /path/to/downloaded/plugin # Buy from here: https://www.cloudquery.io/hub/plugins/source/cloudquery/tailscale/latest/destinations
registry: local
version: 'PREMIUM'
tables: ['tailscale_devices']
destinations: ['postgresql']
# Tailscale specific configuration
spec:
client_id: 'YOUR_CLIENT_ID'
client_secret: '${TAILSCALE_CLIENT_SECRET}'
tailnet: 'cloudquery.io'

Example Queries

Let's look at a few useful queries we can do just with the Tailscale tables.

Unseen devices

Find all devices that weren't seen for more than 30 days:

select name, id, last_seen from tailscale_devices where last_seen < NOW() - INTERVAL '30 DAY';
    tailnet    |             name              |        id         |      last_seen
---------------+-------------------------------+-------------------+---------------------
cloudquery.io | example-name.tail341.ts.net | 12345678082367896 | 2023-01-07 12:43:18

Key expiry disabled

Find all devices with key expiry disabled

select name, id, last_seen from tailscale_devices where key_expiry_disabled;
    tailnet    |             name              |        id         |      last_seen
---------------+-------------------------------+-------------------+---------------------
cloudquery.io | example-name.tail341.ts.net | 12345678082367896 | 2023-01-07 12:43:18

Distribution of devices

Learn about how Tailscale client are distributed in your org across devices

select count(*), os from tailscale_devices group by os;
 count |  os
-------+-------
102 | macOS
103 | linux
70 | window

Find all devices of disabled Okta users

Other cool things once you have Tailscale configuration in your database/datalake is that you can join and query it with data from other CloudQuery source integrations.

For example, the following will show all devices of users that were deactivated on Okta:

select td.tailnet, td.name, td.id, td.user, td.last_seen
from tailscale_devices td
left join okta_users ou
on td.user = ou.profile->>'email'
where ou.stats != 'ACTIVE'

Summary

Using data from the new Tailscale source integration you can slice and dice your Tailscale data in many ways, but the examples in this post should give you a good starting point.

Want to see CloudQuery in action? Schedule a demo with our team or check out the platform documentation to learn more.

Want help getting started? Join the CloudQuery community to connect with other users and experts, or message our team directly here if you have any questions.

Try CloudQuery yourself

Self-hosted, open source, and free to start. Or schedule a demo to see the managed version.

Related posts

CloudQuery News

Introducing CloudQuery Insights: Cloud Intelligence That Connects the Dots

CloudQuery Insights automatically surfaces connected signals across your cloud inventory: security findings, cost data, policy violations, and audit trails.

Joe Karlsson

Joe Karlsson

April 21, 2026

Cloud Infrastructure

CloudQuery News

Introducing the Nautobot Source Integration

Sync Nautobot DCIM inventory data to PostgreSQL, BigQuery, or Snowflake and query it with SQL alongside your cloud provider data.

Joe Karlsson

Joe Karlsson

March 19, 2026

CloudQuery News

CloudQuery Is Merging with Env Zero

A letter from CloudQuery CEO Yevgeny Pats on the merger with env zero and what it means for customers.

Yevgeny Pats

Yevgeny Pats

March 17, 2026

CloudQuery News

Security

Introducing the Zoom Source Integration

New CloudQuery Zoom source plugin: sync Zoom meeting, user, and webinar data into your database for compliance, analytics, and user access governance reporting.

Joe Karlsson

Joe Karlsson

February 2, 2026

CloudQuery News

Product News

New in CloudQuery: Tines + Semgrep integration, and native visualizations,

CloudQuery October 2025 updates: Tines and Semgrep integration for security orchestration, plus native visualization support in the CloudQuery Platform.

Chris Reuter

Chris Reuter

October 31, 2025

CloudQuery News

Product News

Security

Introducing Data Access Control for CloudQuery Platform

CloudQuery Platform RBAC: Control cloud asset access with SQL-based permissions. Map Azure AD/Okta groups to roles. Available now on all environments.

Joe Karlsson

Joe Karlsson

October 28, 2025

AI

CloudQuery News

Understand your cloud infra faster using natural language

CloudQuery unifies AWS, GCP, Azure, and SaaS configs into SQL tables. The new AI assistant lets you query your cloud inventory using natural language.

Chris Reuter

Chris Reuter

September 29, 2025

CloudQuery News

Find the Cloud Waste Contest

Win CloudQuery swag by finding cloud waste in our dataset. Sync AWS data with CloudQuery, solve 3 SQL challenges, get t-shirts, sweatshirts, and mugs.

Joe Karlsson

Joe Karlsson

September 25, 2025

AI

CloudQuery News

Generate CloudQuery Configuration with Natural Language

Generate CloudQuery config files from natural language prompts. Use AI to quickly create source and destination plugin configs without manual YAML editing.

Chris Reuter

Chris Reuter

September 23, 2025

Own your pipeline.
Own your data.