A nearby iPhone or iPad only offers to set up an Apple TV that is on its first-run server-setup screen. After Sign Out (keeping the server) or an expired session, the Apple TV shows its sign-in screen instead, and no phone offers to sign it back in. The only ways back are scanning the QR code, which opens the web approval page and needs a separate web sign-in, or typing a password with the remote.
Why
Expected
With Silo open on a signed-in iPhone or iPad on the same network, a signed-out Apple TV on its sign-in screen gets the same offer: sign it in, confirm the code, approve. The phone offers it only when it holds the server the TV is signed out of, and skips the server chooser.
Notes
AI disclosure
- Harness: T3 Code (Claude Code agent harness)
- Tool(s): Claude Code, GitHub CLI
- Model(s): claude-opus-5-5
- Involvement: AI-drafted at the maintainer's request, from reading the code on
main at bb4f4a5; not reproduced on a device
- Adversarial review: n/a
A nearby iPhone or iPad only offers to set up an Apple TV that is on its first-run server-setup screen. After Sign Out (keeping the server) or an expired session, the Apple TV shows its sign-in screen instead, and no phone offers to sign it back in. The only ways back are scanning the QR code, which opens the web approval page and needs a separate web sign-in, or typing a password with the remote.
Why
TVServerSetupViewruns the pairing advertiser (TVServerSetupView.swift).TVLoginViewdoesn't advertise.loginreceiver state is marked "RESERVED, NOT IMPLEMENTED" (PairingProtocol.swift)..setup(CompanionPairingCardModifier.swift)..needsLogin(sign out, expired session).Expected
With Silo open on a signed-in iPhone or iPad on the same network, a signed-out Apple TV on its sign-in screen gets the same offer: sign it in, confirm the code, approve. The phone offers it only when it holds the server the TV is signed out of, and skips the server chooser.
Notes
st=loginflow (docs/superpowers/specs/2026-06-14-companion-pairing-design.md).helloneeds to carry the server identity fromGET /api/v2/system/identity. That is an additive protocol change.setupbecause advertisingloginmade it invisible to iPhones, whose card filters to.setup. The phone side here has to acceptloginTVs before either TV starts advertising it.AI disclosure
mainat bb4f4a5; not reproduced on a device