Apple-style continuity for Android and Mac: how Kitbridge works
iPhone owners get texts on the Mac, codes that paste themselves and a shared clipboard for free. If your phone is a Samsung, a Pixel or any other Android, you don’t. Kitbridge closes that gap with no cloud and no account. Here’s how it works.
Why Android and Mac users miss out
Continuity between an iPhone and a Mac works because one company builds both ends and the operating systems trust each other. An Android phone and a Mac have no such relationship, and Android deliberately limits what ordinary apps can see: other apps’ notifications, the clipboard in the background, even the text of verification codes. Existing tools either send your data through a cloud service or cover only part of the job.
What Kitbridge does
A small Android app and a Mac menu-bar app talk directly over your Wi-Fi. Calls appear as Mac alerts. Messages, SMS and notifications from other apps arrive as native macOS notifications, and dismissing one on the phone removes it from the Mac. When a verification code arrives it’s already on the Mac clipboard, so you press ⌘V. Copy text, a link or an image on either device and paste on the other. Each piece can be switched on or off from the phone, and the Mac app starts at login and relaunches itself after a crash.
The Android workarounds
Most of the work is making Android’s guardrails cooperate, with your consent during a one-time setup over adb.
- Notifications. Kitbridge uses Android’s official notification access. Sideloaded apps can’t switch it on themselves on Android 13+, so setup grants it over adb.
- Clipboard. Android 10+ blocks background apps from reading the clipboard. The system does log a “Denying clipboard access” line whenever the clipboard changes. With the READ_LOGS permission, Kitbridge watches for that one line from
ClipboardService, briefly shows an invisible window to gain focus, reads the copy and closes it. KDE Connect uses the same technique. - OTP codes. Android 15+ redacts codes from notification listeners. Kitbridge reads the SMS itself, so the full code reaches your Mac.
- Samsung Wi-Fi. Samsung filters multicast, which hides Bonjour discovery. Kitbridge takes a multicast lock during discovery and remembers the Mac’s address, so it rarely needs discovery at all.
- Pairing. Pairing is locked to adb through an activity protected by a permission only the adb shell holds, so other apps on the phone can’t re-pair it to their own key.
The encryption, in plain words
Your Mac creates a random 256-bit pairing key and hands it to the phone once over adb. Every time the two connect, they agree on a brand-new session key using an X25519 key exchange, and only a device holding the pairing key can complete it. Messages are then sealed with AES-256-GCM and numbered; each side accepts only the next number, so nothing can be read, altered or replayed. Because the pairing key never encrypts messages, a leaked key can’t unlock sessions recorded earlier (forward secrecy). There’s no server involved at all. The repository includes a test that runs a fake phone against the real Mac app, tries a replayed message, a wrong key and an old-session message (all rejected) and checks that no content crosses the wire readable.
How fast is it?
Kitbridge keeps one persistent connection and doesn’t batch messages. In our testing on a Samsung Galaxy S26 Ultra (Android 17) and a MacBook Air, an OTP reached the Mac clipboard in about 20–25 ms, and a round trip on home Wi-Fi was under 20 ms. Your network will differ.
What it doesn’t protect against
- Someone with your unlocked Mac or phone.
- What adb can do. Anyone you pair with adb can control the phone, so turn Wireless debugging off after setup if you don’t use it otherwise.
- READ_LOGS is a broad permission. Kitbridge only looks for its own clipboard line, but you can revoke it and turn off “Send my copies to Mac”.
- People on your Wi-Fi can see that a connection exists, and when and how much data flows, but not what it contains.
The full design is in SECURITY.md.
Install
- macOS 14 or later and Android 13 or later, on the same Wi-Fi
- Wireless debugging, once, to pair
curl -fsSL https://raw.githubusercontent.com/harshkit/kitbridge/main/install.sh | bash
See Kitbridge’s page for everything else, and the code on GitHub. It’s free and MIT-licensed.
Kitbridge is an independent project and isn’t affiliated with Apple, Google or Samsung. Product names are used only to describe compatibility.