subhashhhhhh/Tether

Modern, native macOS companion for Android built on the KDE Connect protocol

Swift

16

61 commits

updated Oct 14, 2026

See the code

See what people are saying

SourceMessageScoreDate

Show HN: Tether – A native macOS client for KDE Connect

2

Oct 15, 2026

I built a native Mac app for KDE Connect with Claude Code: 10 releases in 12 days (r/ClaudeAI)

I've wanted a proper KDE Connect app on my Mac for a long time. The official one works, but it's an 87 MB port of the Linux app that uses over 400mb of RAM. So I built Tether, a native SwiftUI app that works with the normal KDE Connect app on Android. It syncs notifications you can reply to, SMS,…

2

Oct 14, 2026

README

Tether app icon

Tether

Your Android phone, at home on your Mac.
Notifications you can reply to, your texts, files and clipboard, in a native Mac app that weighs 2.3 MB.

Latest release macOS 15 or later Apple Silicon and Intel GPL-2.0

Tether's main window and menu bar popover on a Mac desktop

Tether is a native macOS app for the free KDE Connect app on Android. Pair your phone once, and from then on it shows up in your menu bar whenever it's nearby: phone notifications appear on your Mac and can be answered there, your text conversations sync, files and the clipboard move both ways, and you can ring, lock or control your phone without picking it up.

It is written entirely in Swift and SwiftUI, with no Qt, no Electron and no third-party libraries.

Download

The easiest way is Homebrew, which also skips the "can't be opened" warning described below:

brew install --cask subhashhhhhh/tether/tether

Or get the latest release from the Releases page. There are two downloads; pick the one for your Mac:

Your MacDownload
Apple Silicon (M1 and later)Tether-<version>-AppleSilicon.dmg
IntelTether-<version>-Intel.dmg

Not sure? Apple menu → About This Mac: it says Chip on Apple Silicon and Processor on Intel. Tether needs macOS 15 Sequoia or later.

On the phone, KDE Connect may ask for permission to access files the first time Tether mounts it.

Once installed, Tether keeps itself up to date: it checks for a new version once a day, or whenever you choose Tether › Check for Updates…, and installs it in place.

On your phone, install KDE Connect from Google Play or F-Droid.

What it does

Notifications, answered from the Mac. Phone notifications appear in Notification Center. Messaging apps that support it (SMS, WhatsApp, Telegram, Signal and others) can be replied to right from the banner, and anything you dismiss on the Mac is dismissed on the phone. Sign-in codes get a Copy Code button, or can be copied automatically.

Your texts. SMS conversations sync to the Messages section, where you can read threads and send replies.

Files, both ways. Drop files anywhere in the Tether window or on the menu bar popover, or choose Share › Tether in Finder, Photos and other apps, to send them to your phone. With more than one phone connected, the Share menu asks which one. Files shared from your phone land in Downloads with live progress.

Your phone as a drive. While your phone is connected, it appears in Finder as a drive named after it, with an eject button. Browse its storage, open photos and documents straight from it, and drag files in and out. Files are read from the phone as you open them, so a video starts playing right away. It uses KDE Connect's file sharing, so it works over Wi-Fi and Tailscale with no setup and no administrator password. If you use ADB, you can switch to wireless debugging in Settings › Files.

Clipboard, media and remote control. Copy on one device, paste on the other. See what's playing on your phone and control playback and volume. Find Phone rings it at full volume, and Ring in KDE Connect on the phone rings your Mac.

Your phone as a trackpad and presenter. KDE Connect's Remote Input and Presentation tools move the pointer, click, scroll, type and show an on-screen laser pointer. This needs Accessibility access, which you can grant from Tether's Overview or Settings.

Commands. Set up shell commands on your Mac and run them from your phone.

Lives in the menu bar. The menu bar popover shows your phone's battery and connection, quick actions, what's playing and new pairing requests. The main window lists your devices in the sidebar, with each phone's Overview, Messages, Notifications, Files and Commands as tabs. It uses Liquid Glass on macOS 26 and translucent materials on macOS 15.

Tether's Messages view with a reply from a notification banner

See the Roadmap for what's coming next and what isn't possible with KDE Connect.

Use it from anywhere with Tailscale

KDE Connect normally needs your phone and Mac on the same Wi-Fi. If you use Tailscale on both, Tether finds your phone on your tailnet automatically, so everything keeps working when you're on mobile data or a different network.

  • Tether only contacts Android and iOS devices that are signed in to your own Tailscale account. Devices shared with you by other people are never contacted.
  • It reads your tailnet from the tailscale app on your Mac and never talks to Tailscale's servers.
  • Turn it on or off in Settings › General › Tailscale. Connect by Address… also accepts Tailscale names such as phone.tailnet.ts.net.

Tether connecting to a phone on mobile data over Tailscale

Small, and quiet when idle

Tether's 2.3 MB download compared with the official KDE Connect for macOS at 87 MB

Tether 1.4KDE Connect 26.08 for macOS
Download (Apple Silicon disk image)2.3 MB87 MB
Installed app5.8 MB
Memory while idle19 MB
CPU while idle0%

Measured in October 2026 on an Apple Silicon Mac: Tether's numbers come from the 1.4 release while connected to a phone, and the official app's download size from KDE's release builds. The empty cells weren't measured.

Privacy and security

  • No cloud. Your phone and Mac talk directly over your local network, or over your own Tailscale network. There are no Tether servers, accounts, analytics or telemetry.
  • Encrypted. Every connection and file transfer uses TLS.
  • Pinned to your phone. Pairing saves your phone's certificate, and every later connection and file transfer must present that exact certificate. A device that only pretends to be your phone is refused.
  • Updates are verified. Every release is signed with the same certificate, and Tether only installs an update signed with the certificate it was signed with itself. See docs/signing.md.
  • Your Mac's identity stays private. Tether's certificate and key live in ~/Library/Application Support/Tether, readable only by your user account, and are loaded into memory rather than the keychain.

Install and pair

  1. Install with Homebrew, or open the disk image and drag Tether into Applications.
  2. Open Tether. It lives in the menu bar.
  3. On your phone, open KDE Connect and tap your Mac in the device list. Tether asks you to confirm: click Pair.

Your phone shows up under Nearby in Tether's sidebar too, if you'd rather start pairing from the Mac. If it doesn't appear, use Connect by Address… with the phone's IP address or Tailscale name.

"Tether can't be opened"

Tether isn't notarized by Apple (that needs a paid developer account), so macOS blocks a downloaded copy the first time. Homebrew installs aren't affected. Otherwise:

  1. Try to open Tether, then close the warning.
  2. Open System Settings → Privacy & Security, scroll to Security and click Open Anyway.

Or, in Terminal:

xattr -cr /Applications/Tether.app

Build from source

You need Xcode 26 or later (the project uses Swift 6.2's default main-actor isolation). There are no package dependencies.

git clone https://github.com/subhashhhhhh/Tether.git
cd Tether

# Run the tests
xcodebuild test -project Tether.xcodeproj -scheme Tether -destination "platform=macOS"

# Build the app (ends up in build/Build/Products/Release/Tether.app)
xcodebuild -project Tether.xcodeproj -scheme Tether -configuration Release -derivedDataPath build build

# Build the two release disk images (Apple Silicon and Intel) into dist/
scripts/release.sh

release.sh signs with the maintainer's "Tether Self-Signed" certificate; see docs/signing.md for why, and for testing the updater with scripts/test-updater.sh.

How it works

  • UI: SwiftUI with @Observable view models and stock controls, with Liquid Glass on macOS 26 and materials on macOS 15, so it follows Light and Dark mode, your accent colour and accessibility settings.
  • Phone drive: a small NFS version 3 server on the loopback interface, mounted by the user with mount_nfs and named through a local-only Bonjour host, backed by SFTP (a native SSH client on CryptoKit) or ADB.
  • Networking: BSD sockets with poll()-driven I/O and Security framework TLS. KDE Connect upgrades an open connection to TLS after a plaintext handshake, which Network.framework can't do.
  • Identity: created once with the openssl tool that ships with macOS, then loaded in memory by the Security framework.

License

GPL-2.0, like the KDE Connect ecosystem. See LICENSE.

Tether is an independent project and isn't affiliated with KDE.

android
kde-connect
macos

subhashhhhhh/Tether

Modern, native macOS companion for Android built on the KDE Connect protocol

Swift

16

61 commits

updated Oct 14, 2026

See the code

See what people are saying

SourceMessageScoreDate

Show HN: Tether – A native macOS client for KDE Connect

2

Oct 15, 2026

I built a native Mac app for KDE Connect with Claude Code: 10 releases in 12 days (r/ClaudeAI)

I've wanted a proper KDE Connect app on my Mac for a long time. The official one works, but it's an 87 MB port of the Linux app that uses over 400mb of RAM. So I built Tether, a native SwiftUI app that works with the normal KDE Connect app on Android. It syncs notifications you can reply to, SMS,…

2

Oct 14, 2026

README

Tether app icon

Tether

Your Android phone, at home on your Mac.
Notifications you can reply to, your texts, files and clipboard, in a native Mac app that weighs 2.3 MB.

Latest release macOS 15 or later Apple Silicon and Intel GPL-2.0

Tether's main window and menu bar popover on a Mac desktop

Tether is a native macOS app for the free KDE Connect app on Android. Pair your phone once, and from then on it shows up in your menu bar whenever it's nearby: phone notifications appear on your Mac and can be answered there, your text conversations sync, files and the clipboard move both ways, and you can ring, lock or control your phone without picking it up.

It is written entirely in Swift and SwiftUI, with no Qt, no Electron and no third-party libraries.

Download

The easiest way is Homebrew, which also skips the "can't be opened" warning described below:

brew install --cask subhashhhhhh/tether/tether

Or get the latest release from the Releases page. There are two downloads; pick the one for your Mac:

Your MacDownload
Apple Silicon (M1 and later)Tether-<version>-AppleSilicon.dmg
IntelTether-<version>-Intel.dmg

Not sure? Apple menu → About This Mac: it says Chip on Apple Silicon and Processor on Intel. Tether needs macOS 15 Sequoia or later.

On the phone, KDE Connect may ask for permission to access files the first time Tether mounts it.

Once installed, Tether keeps itself up to date: it checks for a new version once a day, or whenever you choose Tether › Check for Updates…, and installs it in place.

On your phone, install KDE Connect from Google Play or F-Droid.

What it does

Notifications, answered from the Mac. Phone notifications appear in Notification Center. Messaging apps that support it (SMS, WhatsApp, Telegram, Signal and others) can be replied to right from the banner, and anything you dismiss on the Mac is dismissed on the phone. Sign-in codes get a Copy Code button, or can be copied automatically.

Your texts. SMS conversations sync to the Messages section, where you can read threads and send replies.

Files, both ways. Drop files anywhere in the Tether window or on the menu bar popover, or choose Share › Tether in Finder, Photos and other apps, to send them to your phone. With more than one phone connected, the Share menu asks which one. Files shared from your phone land in Downloads with live progress.

Your phone as a drive. While your phone is connected, it appears in Finder as a drive named after it, with an eject button. Browse its storage, open photos and documents straight from it, and drag files in and out. Files are read from the phone as you open them, so a video starts playing right away. It uses KDE Connect's file sharing, so it works over Wi-Fi and Tailscale with no setup and no administrator password. If you use ADB, you can switch to wireless debugging in Settings › Files.

Clipboard, media and remote control. Copy on one device, paste on the other. See what's playing on your phone and control playback and volume. Find Phone rings it at full volume, and Ring in KDE Connect on the phone rings your Mac.

Your phone as a trackpad and presenter. KDE Connect's Remote Input and Presentation tools move the pointer, click, scroll, type and show an on-screen laser pointer. This needs Accessibility access, which you can grant from Tether's Overview or Settings.

Commands. Set up shell commands on your Mac and run them from your phone.

Lives in the menu bar. The menu bar popover shows your phone's battery and connection, quick actions, what's playing and new pairing requests. The main window lists your devices in the sidebar, with each phone's Overview, Messages, Notifications, Files and Commands as tabs. It uses Liquid Glass on macOS 26 and translucent materials on macOS 15.

Tether's Messages view with a reply from a notification banner

See the Roadmap for what's coming next and what isn't possible with KDE Connect.

Use it from anywhere with Tailscale

KDE Connect normally needs your phone and Mac on the same Wi-Fi. If you use Tailscale on both, Tether finds your phone on your tailnet automatically, so everything keeps working when you're on mobile data or a different network.

  • Tether only contacts Android and iOS devices that are signed in to your own Tailscale account. Devices shared with you by other people are never contacted.
  • It reads your tailnet from the tailscale app on your Mac and never talks to Tailscale's servers.
  • Turn it on or off in Settings › General › Tailscale. Connect by Address… also accepts Tailscale names such as phone.tailnet.ts.net.

Tether connecting to a phone on mobile data over Tailscale

Small, and quiet when idle

Tether's 2.3 MB download compared with the official KDE Connect for macOS at 87 MB

Tether 1.4KDE Connect 26.08 for macOS
Download (Apple Silicon disk image)2.3 MB87 MB
Installed app5.8 MB
Memory while idle19 MB
CPU while idle0%

Measured in October 2026 on an Apple Silicon Mac: Tether's numbers come from the 1.4 release while connected to a phone, and the official app's download size from KDE's release builds. The empty cells weren't measured.

Privacy and security

  • No cloud. Your phone and Mac talk directly over your local network, or over your own Tailscale network. There are no Tether servers, accounts, analytics or telemetry.
  • Encrypted. Every connection and file transfer uses TLS.
  • Pinned to your phone. Pairing saves your phone's certificate, and every later connection and file transfer must present that exact certificate. A device that only pretends to be your phone is refused.
  • Updates are verified. Every release is signed with the same certificate, and Tether only installs an update signed with the certificate it was signed with itself. See docs/signing.md.
  • Your Mac's identity stays private. Tether's certificate and key live in ~/Library/Application Support/Tether, readable only by your user account, and are loaded into memory rather than the keychain.

Install and pair

  1. Install with Homebrew, or open the disk image and drag Tether into Applications.
  2. Open Tether. It lives in the menu bar.
  3. On your phone, open KDE Connect and tap your Mac in the device list. Tether asks you to confirm: click Pair.

Your phone shows up under Nearby in Tether's sidebar too, if you'd rather start pairing from the Mac. If it doesn't appear, use Connect by Address… with the phone's IP address or Tailscale name.

"Tether can't be opened"

Tether isn't notarized by Apple (that needs a paid developer account), so macOS blocks a downloaded copy the first time. Homebrew installs aren't affected. Otherwise:

  1. Try to open Tether, then close the warning.
  2. Open System Settings → Privacy & Security, scroll to Security and click Open Anyway.

Or, in Terminal:

xattr -cr /Applications/Tether.app

Build from source

You need Xcode 26 or later (the project uses Swift 6.2's default main-actor isolation). There are no package dependencies.

git clone https://github.com/subhashhhhhh/Tether.git
cd Tether

# Run the tests
xcodebuild test -project Tether.xcodeproj -scheme Tether -destination "platform=macOS"

# Build the app (ends up in build/Build/Products/Release/Tether.app)
xcodebuild -project Tether.xcodeproj -scheme Tether -configuration Release -derivedDataPath build build

# Build the two release disk images (Apple Silicon and Intel) into dist/
scripts/release.sh

release.sh signs with the maintainer's "Tether Self-Signed" certificate; see docs/signing.md for why, and for testing the updater with scripts/test-updater.sh.

How it works

  • UI: SwiftUI with @Observable view models and stock controls, with Liquid Glass on macOS 26 and materials on macOS 15, so it follows Light and Dark mode, your accent colour and accessibility settings.
  • Phone drive: a small NFS version 3 server on the loopback interface, mounted by the user with mount_nfs and named through a local-only Bonjour host, backed by SFTP (a native SSH client on CryptoKit) or ADB.
  • Networking: BSD sockets with poll()-driven I/O and Security framework TLS. KDE Connect upgrades an open connection to TLS after a plaintext handshake, which Network.framework can't do.
  • Identity: created once with the openssl tool that ships with macOS, then loaded in memory by the Security framework.

License

GPL-2.0, like the KDE Connect ecosystem. See LICENSE.

Tether is an independent project and isn't affiliated with KDE.

android
kde-connect
macos