Skip to content

v0.1.0 - Initial Release

Choose a tag to compare

@dweekly dweekly released this 30 Sep 23:44
· 45 commits to main since this release

swift-tailscale-client v0.1.0

First official release! 🎉

An unofficial Swift 6 client for the Tailscale LocalAPI. This package connects to existing tailscaled daemons to query their state and configuration—perfect for building monitoring tools, status widgets, and developer utilities.

Note: This package connects to existing Tailscale installations. If you need to embed Tailscale into your app, see Tailscale's official TailscaleKit instead.

What's Included

Core Library

  • ✅ Full /localapi/v0/status endpoint with comprehensive Swift models
  • ✅ TailscaleClient actor with async/await API
  • ✅ Strict Swift 6 concurrency with complete Sendable conformance
  • ✅ Comprehensive models: StatusResponse, NodeStatus, UserProfile, TailnetStatus, BackendState

Transport & Discovery

  • ✅ Protocol-oriented transport abstraction (TailscaleTransport)
  • ✅ Unix socket & TCP loopback support
  • ✅ macOS LocalAPI discovery (lsof probe ~140ms → filesystem fallback ~2s)
  • ✅ Automatic header injection (Tailscale-Cap, Basic Auth)

Configuration

  • ✅ Environment variable overrides for all settings
  • ✅ Pluggable transport for testing and custom implementations
  • ✅ Flexible configuration via TailscaleClientConfiguration

Development Tools

  • ✅ tailscale-swift CLI tool with status command
  • ✅ Man page and comprehensive help (--help)
  • ✅ Built with Swift Argument Parser

Testing & Quality

  • ✅ Comprehensive test suite (unit + integration tests)
  • ✅ GitHub Actions CI/CD for macOS
  • ✅ Swift format with zero violations
  • ✅ Mock transports for testing

Documentation

Quick Start

import TailscaleClient

let client = TailscaleClient()
let status = try await client.status()
print(status.selfNode?.hostName ?? "unknown")

Installation

Add to your Package.swift:

.package(url: "https://github.com/dweekly/swift-tailscale-client.git", from: "0.1.0")

What's Next?

See ROADMAP.md for planned features:

  • v0.2.0: Essential monitoring (/whois, /prefs GET, /ping)
  • v0.3.0: Taildrop support
  • v0.4.0: Streaming & diagnostics (/watch-ipn-bus)
  • v0.5.0: Configuration management (/prefs PATCH)

Platform Support

  • macOS 13+
  • iOS 16+
  • tvOS 16+
  • watchOS 9+

License

MIT © 2025 David E. Weekly

Disclaimer: This is a personal project and is NOT an official Tailscale product.


Full changelog: CHANGELOG.md