Mobile Pairing (Beta)
Mobile pairing is in beta. The relay is a dumb frame router — it forwards ciphertext and nothing else. No Tempest server ever sees plaintext.
@tempest/core RPC surface:
The server pushes events back:
session.updated, agent.output, permission.pending, and session.controllerYielded.
Pairing
1
Open Settings → Mobile on the desktop app
The Mobile settings page is the pairing home.
2
Scan the QR code with the Tempest mobile app
The QR expires after 60 seconds, so scan it while it is fresh.
3
Verify the fingerprint
The handshake exchanges X25519 keypairs. Check that the fingerprint shown on the phone matches the one on the desktop before confirming.
4
Manage the device
Paired devices appear in a list where you can rename or forget them.
Transport modes
Set theTEMPEST_MOBILE_TRANSPORT environment variable to choose how the phone reaches the desktop:
LAN mode requires the phone and desktop to be on the same network. Tunnel mode needs internet access and spawns a cloudflared sidecar process.
Security model
- End-to-end encrypted with NaCl secretbox. The session key is derived from the X25519 handshake via
box.before. - Every frame is
{ n, c }— a nonce plus the boxed ciphertext. - The relay only ever sees ciphertext.
- One laptop and one phone per session.
- Protocol version 1.
- While a phone drives a session, the desktop pane’s stdin is gated.
start_pairing_relay and stop_pairing_relay. The mobile app is Expo-based and lives in apps/mobile.