Balcony
A native Apple companion app for Claude Code. Monitor live terminal sessions, approve permissions, respond to questions, and dictate via voice - all from your iPhone, while away from your desk.
Request TestFlight AccessComing SoonStar us on GitHub↗Features
Everything you need to stay connected to your Claude Code sessions from anywhere in your home or office.
Interactions
Three types of interactive prompts, each rendered as native UI on both Mac and iOS. The first response from any surface wins - terminal, Mac panel, or iPhone.
Every prompt can be answered from three places. All responses are injected as PTY keystrokes, so the terminal is always the single source of truth.
BonjourAuto-discovers Macs on the same Wi-Fi network via mDNSBluetooth LEClose-range discovery when Wi-Fi is unavailableQR CodeScan a code from the Mac menu bar to pair instantlyAuto-reconnectRemembers last-connected device, reconnects on launchRisk levelsNormal (Read/Grep), elevated (Edit/Bash), destructive (rm/sudo)Tool previewFull command or file path shown in the prompt cardAuto-dismiss200+ bytes of new PTY output dismisses the promptIdle detectionStop + Notification hooks trigger idle prompt cardsMulti-optionWizard-style panel with selectable choices and free-text OtherLive typingCharacters appear in the terminal as you type on your phone/modelNative picker for switching Claude models/resumeSession picker for resuming previous conversations/rewindTurn picker to navigate back in conversation history@ filesProject file picker for inline file referencesArchitecture
Three native Swift components working in concert. A CLI that wraps the terminal, a Mac agent that bridges everything, and an iPhone app that puts it all in your pocket.
Unix domain sockets for local IPC, WebSocket for network transport, and end-to-end encryption for all data in transit.
Balcony integrates with Claude Code's hook system for structured event delivery. The setup wizard patches your settings automatically.
PermissionRequestTool approvals with risk classification and bidirectional responseStopSession completion detection for idle prompt triggeringNotificationIdle prompt correlation and attention indicatorsPreToolUseAsync tool use tracking for real-time status updatesHow It Works
A PTY wrapper captures terminal output, a Mac agent bridges it over encrypted WebSocket, and an iPhone app renders it natively.
Get Started
Balcony is currently in private beta. Request TestFlight access to be among the first to try it. The Mac agent includes a guided setup wizard that handles everything.
Request TestFlight AccessComing SoonNative Swift on both platforms. No Electron, no web views. Minimal resource usage with a menu bar agent that has no Dock icon.
View on GitHub↗The Mac agent includes a first-launch wizard that handles all configuration automatically.
1. Install CLIPlaces balcony wrapper in /usr/local/bin2. Hook handlerInstalls hook-handler script to ~/.balcony/3. Patch hooksAdds hook entries to ~/.claude/settings.json4. Shell aliasSets alias claude=balcony in your shell profile5. Pair iPhoneScan QR code or auto-discover via Bonjour