#1566·vibe

[iOS] Vibe Phone times out before pairing or fetching desktop capabilities

Author: cognitia-MayotteCreated Sep 15, 2026Updated Sep 18, 2026

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 out

It 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_paired event, or transfer-level error is logged while the iPhone attempt times out.
  • The persisted desktop pairing configuration still contains no paired devices (handoff.pairing.devices is 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.