--- warning: DO NOT CHANGE THIS MANUALLY, THIS IS GENERATED BY https://github.com/duckdb/community-extensions repository, check README there title: quackscale excerpt: | DuckDB Community Extensions DuckDB WireGuard Extension to Quack & Ducklake over Tailscale/Headscale extension: name: quackscale description: DuckDB WireGuard Extension to Quack & Ducklake over Tailscale/Headscale version: 1.0.6 language: c++ build: cmake license: MIT excluded_platforms: 'windows_amd64;windows_arm64;windows_amd64_mingw;wasm_mvp;wasm_eh;wasm_threads;osx_amd64' maintainers: - lmangani - smithclay - rustyconover repo: github: Query-farm/quackscale ref: 7c5f55c844ce35b2d350d387a062c015f1082abc docs: hello_world: | -- Quack Service on Tailnet LOAD quack; LOAD quackscale; CALL tailscale_up( hostname => 'my-duckdb-node', state_dir => '~/.local/share/duckdb/quackscale' ); CALL quack_serve('quack:127.0.0.1:9494', allow_other_hostname => true, token => quack_token()); CALL tailscale_serve_local(port => 9494); FROM quack_discover(); -- Quack Client on Tailnet LOAD quack; LOAD quackscale; CALL tailscale_up(hostname => 'my-client', state_dir => '~/.local/share/duckdb/quackscale-client'); CREATE SECRET (TYPE quack, TOKEN 'your-shared-token', SCOPE 'quack:100.x.x.x:9494'); ATTACH 'quack:100.x.x.x:9494' AS remote (TYPE quack, DISABLE_SSL true); FROM remote.query('SELECT 42'); DETACH remote; CALL tailscale_down(); -- a one-shot client must close tsnet, or the process hangs extended_description: | QuackScale is a DuckDB WireGuard Community Extension enabling Quack & Ducklake usage over Tailscale/Headscale # About QuackScale QuackScale embeds a Tailscale client (libtailscale) inside DuckDB. A DuckDB process joins your private Tailscale network (tailnet) and reaches its peers over encrypted WireGuard. It needs no VPN sidecar and opens no public port. Once your process is on the tailnet, you read any HTTP asset a peer serves as if it sat on local disk. FROM read_csv('http://my-laptop.ts.net:8000/sales.csv') pulls the file straight off another machine over the encrypted mesh, with no public URL and no copy step. Pair it with DuckDB's Quack HTTP protocol and you have QuackTail: SQL engines that find each other on `100.x` addresses and MagicDNS, then run `ATTACH`, `quack_query`, and DuckLake workloads across the mesh. extension_star_count: 26 extension_star_count_pretty: 26 extension_download_count: 6550 extension_download_count_pretty: 6.5k image: '/images/community_extensions/social_preview/preview_community_extension_quackscale.png' layout: community_extension_doc --- ### Compatibility Matrix This table covers all DuckDB releases that have not reached [end-of-life](https://duckdb.org/release_calendar), including LTS releases, and shows the 2 most recent patch releases of each. Older patch releases are not listed, but the extension may be available for them as well.
| Platform | 1.4.4 | 1.4.5 | 1.5.5 | 1.5.6 | 2.0.0 | | :--- | :---: | :---: | :---: | :---: | :---: | | Linux AMD64 | ❌ | ❌ | ✅ | ✅ | ❌ | | Linux ARM64 | ❌ | ❌ | ✅ | ✅ | ❌ | | macOS AMD64 | ❌ | ❌ | ❌ | ❌ | ❌ | | macOS ARM64 | ❌ | ❌ | ✅ | ✅ | ❌ | | Windows AMD64 | ❌ | ❌ | ❌ | ❌ | ❌ | | Windows ARM64 | ❌ | ❌ | ❌ | ❌ | ❌ | | WebAssembly | ❌ | ❌ | ❌ | ❌ | ❌ | ### Installing and Loading ```sql INSTALL {{ page.extension.name }} FROM community; LOAD {{ page.extension.name }}; ``` {% if page.docs.hello_world %} ### Example ```sql {{ page.docs.hello_world }}``` {% endif %} {% if page.docs.extended_description %} ### About {{ page.extension.name }} {{ page.docs.extended_description }} {% endif %} ### Added Functions This extension does not add any functions. ### Overloaded Functions This extension does not add any function overloads. ### Added Types This extension does not add any types. ### Added Settings This extension does not add any settings.