Tether: iMessage, SMS, etc. on Linux
Tether: Bringing iMessage, SMS, and More to Linux
By Zack Bartel | August 23, 2026
When I made the jump to using Linux as my primary operating system, I was surprisingly content. While the absence of AirPlay was a minor annoyance, there was one glaring void: Apple's "Continuity."
I deeply missed the seamless ecosystem where my iPhone and computer acted as one—specifically the ability to sync clipboards, share files, receive notifications, and handle iMessages/SMS. The most frustrating loss was the magic convenience of one-time password (OTP) codes automatically filling into login forms.
The Vision for Tether
While implementing every single aspect of Continuity on a non-Apple OS is technically impossible, the goal of Tether is to achieve everything that is possible.
The Development Roadmap
I didn't start with the hardest problems. Instead, I built a foundation that could scale.
- Clipboard Synchronization: This was the first milestone. It was the simplest entry point and forced the creation of the necessary infrastructure for Wayland (Linux) and iOS.
- The iOS App: Because the App Store is a notorious hurdle, I released a lightweight iOS app early on that only supported clipboard syncing.
- The Backend: I developed
tetherd, a basic daemon to handle the Linux side of the operation.
Security Architecture
Security was non-negotiable from day one. The communication between iOS and Linux utilizes mTLS (mutual TLS), ensuring both endpoints are authenticated.
Solving the OTP Puzzle
To tackle the OTP autofill issue, I leveraged my preference for Zen Browser (Firefox-based) and Betterbird (Thunderbird-based), both of which have excellent WebExtension support.
The workflow is simple: the mail extension identifies the code and passes it to the browser extension, which then locates the appropriate input field and injects the code.
Note: Currently, this is limited to my specific software stack. If you use a different mail client, this feature won't work yet. I'm a backend developer at heart, so I'd love some help expanding this to other clients!
The Bluetooth Breakthrough
For a long time, I believed there was no direct way to interface with iMessage or SMS without using a Mac as a proxy—which I consider a "fake" solution. However, I discovered ancs4linux and BlueFerry.
The real turning point was reading erikwb's protocol documentation, which illuminated how the process actually worked. This led to a philosophical and technical crossroads regarding licensing:
- Existing Projects: Licensed under GPL.
- Tether: Licensed under MIT.
"I believe putting an interoperability protocol implementation behind a copyleft license is a bit unfortunate. I want this to be usable by anyone, regardless of their project's license—perhaps as a
libtetherlibrary."
Because of this, I opted for a clean room implementation in C++.
The Reality of Bluetooth in 2026
Even with the protocol figured out, the actual implementation was a nightmare. Bluetooth remains a "complete shit show," characterized by:
- Vague error messages.
- Devices that randomly disconnect (the "automatic kicking machine").
- A mountain of edge-case fixes to compensate for hardware inadequacies.
// Conceptual "Clean Room" Bluetooth Logic
if (device.status == BLUETOOTH_SHITSHOW) {
handle_edge_case();
retry_connection();
}
Current Capabilities
Tether has evolved from a simple clipboard tool into a comprehensive integration suite.
| Feature | Status | Method |
|---|---|---|
| Clipboard Sync | ✅ | Wayland iOS |
| File Transfer | ✅ | mTLS Tunnel |
| OTP Autofill | ✅ | Browser/Mail Extensions |
| iMessage / SMS | ✅ | Bluetooth / ANCS |
| Notifications | ✅ | Bluetooth / ANCS |
| Contact Sync | ✅ | Bluetooth / ANCS |
Join the Project
Tether was born from a need to "scratch my own itch," but I want it to be a tool for the entire Linux community. I gain nothing from this other than the satisfaction of creating something useful.
How you can help:
- Report bugs
- Suggest new features
- Provide translations
- Improve documentation
If you are an iPhone user running Linux, please give Tether a try!