v0.1.0 - Initial 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/statusendpoint with comprehensive Swift models - ✅
TailscaleClientactor with async/await API - ✅ Strict Swift 6 concurrency with complete
Sendableconformance - ✅ 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-swiftCLI 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
- ✅ Complete DocC documentation: https://dweekly.github.io/swift-tailscale-client/
- ✅ Comprehensive README with quickstart and examples
- ✅ Contributing guidelines and code of conduct
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,/prefsGET,/ping) - v0.3.0: Taildrop support
- v0.4.0: Streaming & diagnostics (
/watch-ipn-bus) - v0.5.0: Configuration management (
/prefsPATCH)
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