Control your Apple TV from your Android phone.
- Device Discovery — Automatically find Apple TVs on your local network via mDNS
- Secure Pairing — HAP-based SRP-6a pairing with on-screen PIN entry
- Remote Control — D-pad navigation, menu, home, play/pause, Siri, sleep/wake
- Touch Trackpad — Swipe-based navigation just like the Siri Remote
- Volume Control — Use your phone's hardware volume buttons
- Now Playing — View current media info with album artwork
- Quick Launch — Launch apps directly on your Apple TV
- Quick Settings Tile — One-tap access from the notification shade
- Home Screen Widget — Control buttons right on your home screen
- Multi-language — English and Turkish
The project is split into four Gradle modules:
| Module | Description |
|---|---|
app |
Android UI (Jetpack Compose, Hilt, ViewModel) |
protocol |
Apple TV Companion protocol (TCP, pairing, encrypted sessions) |
crypto |
Cryptography (ChaCha20-Poly1305, Ed25519, Curve25519, SRP-6a, HKDF, OPACK, TLV) |
serialization |
Data serialization (Protobuf) |
- Language: Kotlin
- UI: Jetpack Compose + Material 3
- DI: Hilt
- Async: Kotlin Coroutines + Flow
- Navigation: Jetpack Navigation Compose
- Image Loading: Coil
- Widget: Glance
- Min SDK: 26 (Android 8.0)
- Target SDK: 35 (Android 15)
# Debug build
./gradlew assembleDebug
# Release bundle (requires signing config in local.properties)
./gradlew bundleReleaseCreate a keystore and add the following to local.properties:
RELEASE_STORE_FILE=../onyx-control-release.jks
RELEASE_STORE_PASSWORD=your_password
RELEASE_KEY_ALIAS=onyx-control
RELEASE_KEY_PASSWORD=your_passwordOnyx Control does not collect any personal data. All communication happens locally on your Wi-Fi network. See the full Privacy Policy.
If you enjoy the app, you can support development by sending crypto:
- Bitcoin (BTC)
- Ethereum (ETH)
- USDT (TRC-20)
Wallet addresses are available in the app under the Donation screen.
All rights reserved.

