The missing Apple TV remote app for macOS
Itsytv
A native macOS menu bar app for controlling your Apple TV. macOS has no built-in Apple TV remote โ Itsytv fills the gap: d-pad, keyboard navigation, live text input, now playing, and an app launcher, speaking the same local-network protocol the Siri Remote uses. Free and open source (MIT), installable via Homebrew.

Also on iPhone
Itsytv is now available on iOS with the same core experience plus features designed for mobile:
- TMDB lookup for what's playing โ poster art, ratings, and details for movies and TV shows
- Ergonomic design for left- and right-handed use
Features
- Menu bar remote โ control your Apple TV from a compact floating panel
- D-pad and buttons โ circular d-pad with directional navigation, select, home, menu/back, play/pause
- Keyboard navigation โ arrow keys, Return, Backspace, Escape, Space mapped to remote buttons
- Text input โ type directly into Apple TV text fields with a live keyboard
- Now playing โ artwork, title, artist, progress bar, and playback controls
- App launcher โ grid of installed apps with icons fetched from the App Store; drag to reorder
- Multiple devices โ pair and switch between multiple Apple TVs
- Global hotkeys โ assign keyboard shortcuts to instantly open the remote for specific Apple TVs
- Per-device panel position โ remembers where you placed the remote for each Apple TV
- Launch at login โ optional auto-start from the menu bar
- Unpair โ remove pairing credentials from the panel menu
- AppleScript & Shortcuts โ script play/pause from anything that runs AppleScript
AppleScript and Shortcuts automation
Itsytv exposes AppleScript commands, so the Apple TV becomes scriptable from Shortcuts, Keyboard Maestro, Hammerspoon, Raycast, or a plain shell:
osascript -e 'tell application "itsytv" to pause'
osascript -e 'tell application "itsytv" to play'
Both commands are no-ops when nothing is playing, so they are safe to fire blindly. Some ideas:
- A Shortcuts automation that pauses the Apple TV when a calendar meeting starts (Run AppleScript action)
- A Hammerspoon or Keyboard Maestro hotkey that toggles playback without touching a remote
- A cron job or
attimer that pauses playback at bedtime
Perfect companion to Itsyhome
Itsytv pairs naturally with Itsyhome โ a free macOS menu bar app for controlling your HomeKit devices. Manage lights, cameras, thermostats, locks, scenes, and 18+ accessory types without ever opening the Home app.

Install
brew install --cask itsytv
Or download the latest DMG from GitHub releases.
Troubleshooting
Apple TV doesn't show a PIN code when pairing
If you send a pairing request but no PIN appears on your TV screen, your Apple TV is likely restricting which devices can connect to it. To fix this:
- Open Settings > AirPlay and Apple Home on your Apple TV
- Set Allow access to Anyone on the same network
- Set Require Password to Off (after pairing is completed, Require Password can be turned back on)
- Go to Settings > General > Restrictions
- Set both AirPlay Settings and Remote App Pairing to Allow
Remote disappears after a few seconds
If the remote panel closes on its own shortly after connecting, your Apple TV's AirPlay access setting is likely set to Only people sharing this home. Open Settings on your Apple TV, go to AirPlay and Apple Home, and change Allow access to Anyone on the same network.
Nothing happens when I launch the app
Itsytv is a menu bar app โ it lives in the top-right area of your screen as a small TV icon, not in the Dock. On MacBooks with a notch, macOS hides menu bar icons that don't fit behind the notch โ silently, with no warning. If your menu bar is crowded, the itsytv icon may be there but invisible.
To fix this, hold Cmd and drag any icons you don't need off the menu bar. Once itsytv appears, Cmd-drag it to the right so it stays visible.
FAQ
Is it free? On the Mac, yes โ free via Homebrew or the DMG, MIT-licensed open source. The Mac App Store version is a one-time $4.99 universal purchase that also covers iPhone and iPad. No subscription, ads, or in-app purchases anywhere.
Which Apple TVs work? Apple TV 4th generation or later running tvOS 15+, on the same local network as the Mac. Older Apple TVs don't support the protocol.
Do I need the physical Siri Remote to pair? No. The Apple TV shows a four-digit PIN on the TV screen and you type it into Itsytv. Credentials are stored in the macOS Keychain and the connection is end-to-end encrypted.
How is this different from other Apple TV remote apps? Itsytv speaks Apple's native MediaRemote/Companion protocol over the local network โ the same one the Siri Remote uses โ so input is instant, with no cloud service or polling in between. Most remote apps in this category charge a subscription; Itsytv doesn't, and on the Mac you can read the source to verify what it does.
Can it change the TV volume? Yes, when the Apple TV controls volume over HDMI-CEC (Settings โ Remotes and Devices โ Volume Control on the Apple TV). Learned infrared volume codes only work from the physical remote, since Macs have no IR blaster.
More guides: control Apple TV from your Mac ยท Apple TV pairing troubleshooting ยท all Apple TV remote guides
Architecture
This app is a thin macOS UI layer on top of itsytv-core โ a Swift package that implements the Apple TV Companion Link and AirPlay protocols. The same core powers both the macOS and iOS apps.
itsytv-macos/
โโโ itsytvApp.swift # App entry point
โโโ UI/
โ โโโ AppController.swift # NSStatusItem, menu, floating panel, keyboard monitor
โ โโโ MenuBarView.swift # SwiftUI views: remote, now playing, app grid
โ โโโ AppIconLoader.swift # App icons from iTunes Lookup API
โโโ DesignSystem/
โ โโโ DesignSystem.swift # Colours, typography, spacing, sizing tokens
โ โโโ HighlightingMenuItemView.swift
โโโ AppIntents/
โ โโโ OpenRemoteIntent.swift # Shortcuts action to open the remote for a specific Apple TV
โโโ MRP/
โ โโโ Proto/ # Protobuf definitions (.proto files)
โโโ Utilities/
โโโ UpdateChecker.swift # GitHub release checker
โโโ HotkeyManager.swift # Global hotkey registration
All protocol, crypto, discovery, and device management code lives in itsytv-core.
Requirements
- macOS 14.0 or later
- Xcode 16.0 or later
- XcodeGen for project generation
- Apple TV running tvOS 15 or later on the same local network
Setup
1. Clone the repositories
git clone https://github.com/nickustinov/itsytv-macos.git
git clone https://github.com/nickustinov/itsytv-core.git
Both repositories must be side by side โ the Xcode project references ../itsytv-core as a local Swift package.
2. Install XcodeGen
brew install xcodegen
3. Generate the Xcode project
cd itsytv-macos
xcodegen generate
4. Open and run
open itsytv.xcodeproj
Select the itsytv scheme and run.
Building
The project uses XcodeGen to generate the Xcode project from project.yml. After making changes to project configuration:
xcodegen generate
Releasing
- Bump
MARKETINGVERSIONandCURRENTPROJECT_VERSIONinproject.yml - Update
CHANGELOG.md - Build, sign, and package the DMG:
bash scripts/build-release.sh
- Notarize and staple:
xcrun notarytool submit dist/Itsytv-<VERSION>.dmg \
--apple-id <APPLEID> --team-id <TEAMID> \
--password <APPSPECIFICPASSWORD> --wait
xcrun stapler staple dist/Itsytv-<VERSION>.dmg
- Create the GitHub release:
gh release create v<VERSION> dist/Itsytv-<VERSION>.dmg \
--title "v<VERSION>" --notes "Release notes here"
- Homebrew cask โ itsytv is in the official homebrew-cask repository with autobump enabled. BrewTestBot automatically detects new GitHub releases and opens a PR within ~3 hours. No manual action needed.
License
MIT License (c) 2026 Nick Ustinov โ see LICENSE for details.
Author
Nick Ustinov โ @nickustinov
Acknowledgements
Protocol implementation informed by pyatv, the comprehensive Python library for Apple TV control.