[iOS] Vibe Phone times out before pairing or fetching desktop capabilities
Environment
- Vibe 3.2.2 (official macOS build)
- macOS 27.0
- MacBook Air M4, Apple Silicon / arm64
- iPhone (iOS version available on request)
Problem
Vibe Phone cannot establish a connection to the desktop after scanning the QR code.
The iPhone app displays the desktop endpoint ID as “Paired with …”, but it then shows:
TRANSPORT
failed to connect to desktop: timed out: timed out: timed outIt also reports that the desktop has not provided any languages.
What was verified
On the Mac:
- Phone handoff is enabled.
- The iroh handoff endpoint starts and restores successfully.
- The desktop endpoint ID matches the abbreviated ID displayed by Vibe Phone.
- A Whisper model is selected and loaded successfully by Vibe.
- The Vibe log shows the handoff endpoint bound/restored successfully.
- No incoming handoff transfer, successful
handoff_pairedevent, or transfer-level error is logged while the iPhone attempt times out. - The persisted desktop pairing configuration still contains no paired devices (
handoff.pairing.devicesis empty).
This suggests that the iPhone request does not reach the desktop handoff handler.
Reproduction attempts
The same failure was reproduced with:
- Safari opened from the QR code;
- Vibe Phone installed as a PWA on the iPhone home screen;
- Chrome on iPhone;
- iPhone connected through Wi-Fi;
- iPhone connected through cellular / 5G;
- Tailscale stopped on both the Mac and the iPhone;
- no other VPN enabled on either device.
Therefore this does not appear to be caused by the local Wi-Fi network, Tailscale, the selected Whisper model, or a single browser container.
Additional observation
The UI currently shows “Paired with <endpoint ID>” immediately after the QR code is parsed. However, the desktop has not recorded a paired device.
From the source, the PWA stores the QR endpoint ID and invitation token locally before the actual pair request has received a paired response containing a device ID. This can make the UI appear paired even when the desktop has never accepted the device.
Suspected area
The timeout occurs before Vibe application-level pairing or capability handling, during the browser/WASM iroh connection to the desktop endpoint.
The PWA source states that browser traffic is relay-only because browsers cannot hole-punch directly. This may indicate an iOS browser/WASM/iroh relay compatibility or transport issue.
One possible detail worth checking: the desktop lockfile currently resolves iroh to 1.0.2 while the standalone handoff WASM lockfile resolves iroh to 1.0.3. This may be harmless semver-wise, but it is in the transport layer involved in the failure.
Expected behavior
After scanning the QR code, the phone should complete the pairing handshake, appear as a paired device in Vibe on the Mac, retrieve the desktop model capabilities/languages, and allow recording transfer.
Actual behavior
The phone saves and displays the desktop endpoint ID locally, but the transport connection repeatedly times out and no device is registered on the desktop.
Source: thewh1teagle/vibe