Itsytv: The Essential Apple TV Remote for macOS
Tired of fumbling for your iPhone just to pause Netflix? Discover the native macOS solution that puts your Apple TV remote right where you need it most—your Mac's menu bar.
Every developer and power user knows the pain: you're deep in a coding session, your iPhone is across the room charging, and you need to quickly pause a tutorial on your Apple TV. The official Apple TV Remote app works, but it's buried in Control Center or your iPhone, breaking your workflow. What if you could control your entire Apple TV experience without ever leaving your Mac? Enter Itsytv, the missing piece in Apple's ecosystem that transforms your Mac into the ultimate Apple TV command center. This isn't just another remote app—it's a native, blazing-fast, feature-rich solution that lives discreetly in your menu bar, ready at a moment's notice. In this deep dive, we'll explore why developers are raving about Itsytv, dissect its powerful architecture, and show you exactly how to integrate it into your daily workflow.
What Is Itsytv and Why Is It Revolutionary?
Itsytv is a native macOS menu bar application that fundamentally reimagines how you interact with your Apple TV from your Mac. Created by independent developer Nick Ustinov, this open-source powerhouse addresses a glaring gap in Apple's ecosystem: the absence of a dedicated, native Apple TV remote for macOS. While Apple provides a basic remote in Control Center, it lacks the sophistication, speed, and convenience that power users demand.
The app leverages Apple's private Companion Link protocol and Media Remote Protocol (MRP) to establish secure, encrypted connections with your Apple TV over your local network. Built with Swift 5.10 and requiring macOS 14 Sonoma or later, Itsytv represents modern macOS development at its finest. The project has gained significant traction in the developer community, earning thousands of GitHub stars and downloads by solving a simple but pervasive problem: friction in controlling your Apple TV.
What makes Itsytv truly revolutionary is its menu bar-first design philosophy. Unlike traditional apps that clutter your Dock and require window management, Itsytv exists as a subtle TV icon in your menu bar, instantly accessible via click or global hotkey. This architectural decision reflects a deep understanding of user behavior—remote controls should be immediate, not something you hunt for. The app also features a floating panel that appears on demand, positioning itself intelligently based on your last usage per device, creating a truly personalized experience.
The technical implementation is equally impressive. Itsytv handles complex cryptographic pairing using SRP (Secure Remote Password) and ChaCha20-Poly1305 encryption, ensuring your connection is as secure as Apple's first-party solutions. It discovers devices using Bonjour networking, manages multiple Apple TVs simultaneously, and even fetches app icons directly from the App Store API to create a rich, visual interface. This isn't a simple wrapper around existing functionality—it's a ground-up implementation of Apple's proprietary protocols, reverse-engineered and perfected for the Mac.
Key Features That Make Itsytv Indispensable
Native Menu Bar Integration
Itsytv lives exclusively in your macOS menu bar as a sleek TV icon, eliminating Dock clutter and window management overhead. This native integration means zero launch time, minimal memory footprint, and perfect adherence to macOS design principles. The app supports launch at login, ensuring it's always ready when you need it.
Floating Remote Panel
The remote interface appears as a compact, customizable floating panel featuring a circular D-pad with directional navigation, select button, home button, menu/back navigation, and play/pause controls. The panel remembers its position per-device, so your living room Apple TV remote always appears in your preferred location, while the bedroom one appears elsewhere.
Comprehensive Keyboard Navigation
Power users rejoice: every remote function maps to intuitive keyboard shortcuts. Arrow keys handle navigation, Return acts as select, Backspace/Escape handles menu/back, and Space toggles play/pause. This keyboard-first approach transforms your Mac into a command center where you never need to touch your mouse.
Live Text Input
Typing search queries or passwords with a TV remote is torture. Itsytv's TextInputSession feature streams keystrokes directly to Apple TV text fields in real-time. The app establishes a dedicated text input channel using Apple's Companion protocol, allowing you to use your Mac's full keyboard for any text field on your Apple TV.
Now Playing Dashboard
The remote panel displays rich now playing information including artwork, title, artist, progress bar, and playback controls. This uses the Media Remote Protocol (MRP) to fetch real-time metadata from apps like Apple Music, Netflix, and YouTube, giving you a mini media center on your Mac.
Visual App Launcher
Itsytv fetches icons for all installed apps directly from the iTunes Lookup API, displaying them in a draggable grid. You can reorder apps by dragging, with preferences stored per-device. This creates a personalized launcher that puts your most-used apps front and center.
Multi-Device Mastery
The app discovers and manages multiple Apple TVs simultaneously using Bonjour networking. Each device maintains independent pairing credentials, panel positions, and app ordering. Switching between devices takes seconds via the menu bar dropdown.
Global Hotkeys
Assign custom keyboard shortcuts to instantly open the remote for specific Apple TVs. This pro-level feature eliminates even the need to click the menu bar icon, creating a truly frictionless experience for power users.
Secure Credential Storage
All pairing credentials are stored securely in the macOS Keychain using the KeychainStorage module. This ensures your Apple TV connections remain encrypted and safe, with credentials surviving app updates and reinstalls.
Real-World Use Cases That Transform Your Workflow
The Developer Workflow
You're a developer following a tutorial on your Apple TV while coding on your Mac. With Itsytv, you can pause, rewind, or navigate without breaking your typing flow. A quick ⌘+Shift+R (your custom hotkey) opens the remote, you tap Space to pause, then return to coding. No context switching, no fumbling for your phone. The text input feature lets you search for specific tutorial topics using your full keyboard, saving minutes per session.
The Home Theater Commander
Your Mac is the centerpiece of your home office, but you control media throughout your house. Itsytv's multi-device support lets you manage the living room Apple TV during the day and the bedroom unit at night, all from the same menu bar icon. The per-device panel positioning means each remote appears exactly where you expect it, creating muscle memory that speeds up navigation.
The Presentation Pro
You're giving a demo and need to navigate Apple TV content seamlessly. Instead of awkwardly using the physical remote or revealing your iPhone screen, Itsytv provides a professional, discreet control method. The floating panel appears on your Mac screen only, never disrupting the presentation display. Keyboard shortcuts let you navigate slides or videos without visible remote controls appearing to your audience.
The Accessibility Advocate
For users with motor impairments, the tiny Apple TV remote can be challenging. Itsytv transforms this experience by enabling full keyboard control of your Apple TV. Every function is accessible via keyboard, and the text input feature eliminates painful on-screen keyboard navigation. The app's native macOS accessibility features integrate seamlessly with VoiceOver and other assistive technologies.
The Multi-Room Media Manager
You have Apple TVs in three rooms and need to start music in the kitchen, pause a movie in the living room, and check what's playing in the bedroom. Itsytv's device switching happens in under two seconds via the menu bar. The Now Playing dashboard shows you exactly what's happening on each device, while global hotkeys let you control each room with dedicated shortcuts.
Complete Installation & Setup Guide
Method 1: Homebrew (Recommended)
The fastest way to install Itsytv is via Homebrew Cask. This method handles dependencies, places the app in Applications, and enables easy updates.
# Install Itsytv using Homebrew Cask
brew install --cask itsytv
After installation, launch Itsytv from Applications or Spotlight. The menu bar icon appears immediately in your top-right menu bar.
Method 2: Mac App Store
For users who prefer automatic updates and want to support development, the Mac App Store version offers identical functionality with seamless updates.
- Open the Mac App Store
- Search for "Itsytv"
- Click "Get" and install
- Launch from Applications
Method 3: Manual DMG Installation
Download the latest release directly from GitHub for complete control over versions.
- Visit the GitHub releases page
- Download the latest
.dmgfile - Open the DMG and drag Itsytv to Applications
- Launch the app
Method 4: Build from Source (Developers)
For developers wanting to customize or contribute, building from source provides full access to the codebase.
Step 1: Install XcodeGen Itsytv uses XcodeGen for project generation, ensuring consistent build configurations across environments.
# Install XcodeGen via Homebrew
brew install xcodegen
Step 2: Clone the Repository
# Clone the repository and enter the directory
git clone https://github.com/nickustinov/itsytv-macos.git
cd itsytv-macos
Step 3: Generate the Xcode Project
# Generate the Xcode project from project.yml
xcodegen generate
Step 4: Open and Run
# Open the generated project
open itsytv.xcodeproj
In Xcode, select the "itsytv" scheme and click Run (⌘R). The app compiles and launches immediately.
Initial Setup & Pairing
- Launch Itsytv - Look for the TV icon in your menu bar (top-right, may be hidden behind notch on newer MacBooks)
- Select Your Apple TV - Click the icon and choose your Apple TV from the discovered devices list
- Initiate Pairing - Click "Pair" and wait for a PIN to appear on your TV screen
- Enter PIN - Type the PIN in Itsytv's pairing dialog
- Complete Setup - The remote panel appears, ready for control
Troubleshooting Tip: If no PIN appears, ensure your Apple TV's AirPlay access is set to "Anyone on the same network" in Settings → AirPlay and Apple Home.
Real Code Examples from the Repository
Example 1: Homebrew Installation Command
The simplest way to install Itsytv uses Homebrew's Cask system, which handles downloading, verification, and installation automatically.
# Install Itsytv via Homebrew Cask
# This command taps into Homebrew's cask repository, downloads the latest
# signed DMG, verifies its integrity, and installs it to /Applications
brew install --cask itsytv
Technical Details: Homebrew Cask executes several operations: it verifies the download against a SHA256 checksum, ensures the app is properly signed with a Developer ID certificate, handles quarantine attributes for Gatekeeper, and creates proper symlinks. This method is recommended because it provides atomic updates and easy uninstallation via brew uninstall --cask itsytv.
Example 2: XcodeGen Project Generation Workflow
Itsytv uses XcodeGen to maintain a single source of truth for project configuration. This approach eliminates merge conflicts in .pbxproj files and enables reproducible builds.
# Step 1: Install XcodeGen if not already present
# XcodeGen is a command-line tool that generates .xcodeproj files from
# a YAML specification, ensuring consistency across development environments
brew install xcodegen
# Step 2: Clone the repository
git clone https://github.com/nickustinov/itsytv-macos.git
cd itsytv-macos
# Step 3: Generate the Xcode project
# The generate command reads project.yml and creates itsytv.xcodeproj
# with all targets, schemes, build settings, and file references configured
xcodegen generate
# Step 4: Open the generated project
# The generated project is now ready for development in Xcode
open itsytv.xcodeproj
Technical Details: The project.yml file defines all build targets, dependencies, code signing settings, and build phases. This declarative approach means developers can modify build settings without opening Xcode, enabling CI/CD automation and eliminating the notorious Xcode project file merge conflicts that plague collaborative Swift development.
Example 3: Architecture Module Structure
The repository's architecture demonstrates excellent separation of concerns, with each protocol and function isolated in its own module.
itsytv/
├── itsytvApp.swift # App entry point with @main attribute
├── AppState.swift # Shared types and global state management
├── Discovery/
│ └── DeviceDiscovery.swift # Bonjour service browsing for Apple TV detection
├── Protocol/
│ ├── AppleTVManager.swift # Orchestrator coordinating all subsystems
│ ├── CompanionConnection.swift # Low-level TCP framing and connection management
│ ├── CompanionFrame.swift # Frame structure: type (4 bytes) + length + payload
│ ├── CompanionCommands.swift # HID button mappings and command serialization
│ ├── TextInputSession.swift # Real-time keystroke streaming implementation
│ ├── OPACK.swift # Apple's binary serialization format decoder
│ ├── BinaryPlist.swift # NSKeyedArchiver-compatible binary plist encoder
│ └── TLV8.swift # Type-Length-Value encoding for HomeKit pairing
├── Crypto/
│ ├── CompanionCrypto.swift # ChaCha20-Poly1305 AEAD encryption implementation
│ ├── CryptoHelpers.swift # HKDF-SHA512 key derivation and nonce management
│ ├── PairSetup.swift # SRP (Secure Remote Password) pairing flow M1-M6
│ ├── PairVerify.swift # Post-pairing verification flow M1-M4
│ └── KeychainStorage.swift # Secure credential storage using SecItem API
├── AirPlay/
│ ├── AirPlayControlChannel.swift # HTTP/RTSP transport with HAP encryption
│ ├── AirPlayPairVerify.swift # AirPlay-specific pair-verify implementation
│ ├── AirPlayMRPTunnel.swift # Protocol tunneling for media remote commands
│ ├── DataStreamChannel.swift # MRP protobuf transport with length-prefix framing
│ ├── HAPChannel.swift # HomeKit Accessory Protocol encryption layer
│ └── HAPSession.swift # Session management with block cipher encryption
├── MRP/
│ ├── MRPManager.swift # Media Remote Protocol command orchestration
│ ├── NowPlayingState.swift # Now playing metadata parsing and state management
│ └── Proto/ # Protocol Buffer definitions and generated code
├── DesignSystem/
│ ├── DesignSystem.swift # Design tokens: colors, typography, spacing
│ └── HighlightingMenuItemView.swift # Custom NSView with hover effects
├── AppIntents/
│ └── OpenRemoteIntent.swift # Shortcuts integration for automation
├── UI/
│ ├── AppController.swift # NSStatusItem lifecycle and menu management
│ ├── MenuBarView.swift # SwiftUI views with AppKit integration
│ └── AppIconLoader.swift # Async image loading from iTunes API
└── Utilities/
├── AppOrderStorage.swift # UserDefaults persistence for app ordering
├── UpdateChecker.swift # GitHub API integration for update notifications
└── HotkeyManager.swift # Carbon Event Manager for global hotkey registration
Technical Details: This modular architecture enables unit testing, code reuse, and clear separation of concerns. The Protocol layer implements Apple's proprietary Companion Link protocol, while Crypto handles all encryption primitives. The AirPlay module manages the alternative connection method, and MRP handles media controls. This design allows developers to modify one subsystem without affecting others.
Example 4: Release Build Automation
The release process is fully scripted, ensuring consistent, reproducible builds with proper code signing and notarization.
# Step 1: Update version numbers in project.yml
# Increment MARKETING_VERSION (user-facing) and CURRENT_PROJECT_VERSION (build number)
# These values propagate to Info.plist and CFBundleShortVersionString
# Step 2: Update CHANGELOG.md with new features and fixes
# Maintain a detailed changelog for users and App Store review
# Step 3: Build, sign, and package the DMG
# The build-release.sh script handles:
# - Archive build with proper configuration
# - Code signing with Developer ID Application certificate
# - DMG creation with background image and volume icon
# - Binary verification and structure validation
bash scripts/build-release.sh
# Step 4: Submit to Apple Notary Service
# Notarization is required for Gatekeeper on macOS 10.15+
# The command uploads the DMG, waits for processing, and staples the ticket
xcrun notarytool submit dist/Itsytv-<VERSION>.dmg \
--apple-id YOUR_APPLE_ID \
--team-id YOUR_TEAM_ID \
--password APP_SPECIFIC_PASSWORD \
--wait
# Step 5: Staple notarization ticket to DMG
# This allows offline verification of the app's notarization status
xcrun stapler staple dist/Itsytv-<VERSION>.dmg
Technical Details: The notarization process involves Apple scanning the executable for malware, verifying code signatures, and issuing a ticket that Gatekeeper checks on first launch. The notarytool command-line utility replaces the older altool method, providing better error reporting and asynchronous processing. Stapling embeds the notarization ticket directly into the DMG, ensuring users can verify the app even without an internet connection.
Advanced Usage & Best Practices
Optimize Global Hotkeys
Assign mnemonic hotkeys for each Apple TV: ⌘+⌃+1 for Living Room, ⌘+⌃+2 for Bedroom. This creates muscle memory and reduces cognitive load. Use the HotkeyManager utility to register these shortcuts, which persist across app restarts.
Leverage App Launcher Ordering
Drag your most-used apps to the top of the grid. Itsytv stores this order in AppOrderStorage.swift using UserDefaults with device-specific keys. This small optimization saves seconds per interaction, adding up to minutes daily.
Text Input Pro Tips
When a text field appears on Apple TV, Itsytv automatically focuses its text input field. Use ⌘+V to paste long passwords or search queries. The TextInputSession handles real-time streaming with minimal latency by using a dedicated TCP channel.
Network Optimization
For best performance, ensure your Mac and Apple TV connect to the same 5GHz Wi-Fi network. The DeviceDiscovery module uses Bonjour, which performs optimally on low-latency networks. If you experience lag, check for interference or switch to Ethernet.
Security Best Practices
While Itsytv stores credentials in Keychain, periodically review paired devices in Apple TV Settings → Remotes and Devices. Remove old pairings to maintain a clean security posture. The KeychainStorage module uses kSecClassGenericPassword with device-specific identifiers.
Automation with Shortcuts
The OpenRemoteIntent.swift module exposes App Intents for Shortcuts automation. Create a "Movie Night" shortcut that dims your HomeKit lights (via Itsyhome), opens the living room Apple TV remote, and launches Netflix—all with one command.
Comparison: Itsytv vs Alternatives
| Feature | Itsytv | Control Center Remote | iOS Apple TV App | Third-Party Apps |
|---|---|---|---|---|
| Native macOS Integration | ✅ Full menu bar app | ⚠️ Buried in Control Center | ❌ Requires iPhone | ⚠️ Varies |
| Keyboard Shortcuts | ✅ Comprehensive mapping | ❌ Limited | ⚠️ Basic | ⚠️ Inconsistent |
| Text Input | ✅ Real-time streaming | ❌ Not supported | ✅ Supported | ❌ Rarely supported |
| Now Playing Info | ✅ Rich metadata | ❌ Basic controls only | ✅ Rich metadata | ⚠️ Limited |
| App Launcher | ✅ Visual grid with icons | ❌ Not supported | ✅ Limited grid | ❌ Not supported |
| Multiple Devices | ✅ Seamless switching | ⚠️ Manual switching | ✅ Supported | ⚠️ Varies |
| Global Hotkeys | ✅ Fully customizable | ❌ Not supported | ❌ Not supported | ⚠️ Rare |
| Open Source | ✅ MIT License | ❌ Proprietary | ❌ Proprietary | ⚠️ Mixed |
| Build from Source | ✅ Full instructions | ❌ Not possible | ❌ Not possible | ⚠️ Varies |
| Performance | ✅ Native Swift, minimal CPU | ⚠️ Mixed native/web | ✅ Native | ⚠️ Often Electron-based |
Why Itsytv Wins: While Apple's Control Center remote is convenient, it's feature-poor and requires multiple clicks to access. The iOS app is powerful but forces you to switch devices, breaking workflow. Third-party apps are often Electron-based resource hogs with inconsistent UIs. Itsytv's native Swift implementation, menu bar presence, and deep protocol integration make it the only solution that truly respects macOS design principles while delivering maximum functionality.
Frequently Asked Questions
Q: Why doesn't Itsytv appear in my Dock? A: Itsytv is a menu bar-only application by design. It appears as a TV icon in your menu bar (top-right). If you don't see it, your menu bar may be crowded. Hold ⌘ and drag unnecessary icons off to reveal hidden ones, then drag Itsytv to a visible position.
Q: My Apple TV doesn't show a PIN during pairing. What's wrong? A: This is the most common issue. Your Apple TV's AirPlay access is likely restricted. Go to Settings → AirPlay and Apple Home → Allow Access, and set it to "Anyone on the same network". Also check Settings → General → Restrictions and ensure both AirPlay Settings and Remote App Pairing are set to "Allow".
Q: Can Itsytv control multiple Apple TVs simultaneously? A: Yes! Itsytv discovers all Apple TVs on your network via Bonjour. You can pair with multiple devices and switch between them instantly via the menu bar dropdown. Each device maintains separate pairing credentials and panel positions.
Q: Is Itsytv secure? How are my credentials stored? A: Extremely secure. Itsytv uses Apple's Secure Remote Password (SRP) protocol for pairing and ChaCha20-Poly1305 encryption for all communications. Credentials are stored in the macOS Keychain, protected by your user account password and hardware encryption.
Q: Why does the remote panel disappear after a few seconds? A: This indicates your Apple TV's AirPlay access setting is "Only people sharing this home". Change it to "Anyone on the same network" in Settings → AirPlay and Apple Home. This setting must remain permissive for Itsytv to maintain its connection.
Q: Can I use Itsytv with Apple TV 4K and older models? A: Itsytv requires tvOS 15 or later, which means it works with Apple TV HD (4th generation) and all Apple TV 4K models. It does not support the older Apple TV 3rd generation or earlier, which lack the necessary protocols.
Q: How do I contribute to Itsytv development? A: The project is open source on GitHub. Clone the repository, install XcodeGen, generate the project, and start coding. The modular architecture makes it easy to work on specific components like the Crypto or Protocol layers without affecting others.
Conclusion: The Remote Your Mac Has Been Missing
Itsytv isn't just another utility—it's a masterclass in native macOS development that solves a real problem with elegance and power. By reverse-engineering Apple's proprietary protocols and wrapping them in a sleek, menu bar-native interface, Nick Ustinov has created something Apple should have built years ago. The app's modular Swift architecture, robust encryption, and thoughtful UX details like per-device panel positioning demonstrate deep technical expertise and user empathy.
What truly sets Itsytv apart is its respect for your workflow. It doesn't demand attention, it doesn't clutter your screen, and it doesn't break your concentration. It simply exists, ready to serve, exactly when and where you need it. Whether you're a developer juggling multiple devices, a presenter needing discreet control, or anyone who values efficiency, Itsytv transforms your relationship with your Apple TV.
The open-source nature means you can audit the code, contribute improvements, or even fork it for custom needs. The active development and responsive maintainer ensure it stays current with macOS updates. And with both free (GitHub) and paid (App Store) options, you can choose how to support the project.
Ready to revolutionize your Apple TV experience? Download Itsytv today from the Mac App Store for automatic updates and to support development, or grab the latest release from the GitHub repository. Your workflow will thank you.