Pairing
QR Scan (Recommended)
Duringyespapa init, choose to pair with the mobile app. Two QR codes are displayed:
- TOTP QR — Standard
otpauth://QR scannable by any authenticator app (Google Authenticator, Authy, 1Password). This sets up the TOTP seed for the Inner Ring. - Pairing QR — A deep-link URL (
yespapa://pair?data=...) that opens the YesPaPa app and pairs automatically. Contains the remote server config, host ID, pairing token, and TOTP seed.
Deep-Link Pairing
If you receive a pairing URL (e.g.,https://yespapa.app/pair?data=...), opening it on your phone will:
- Launch the YesPaPa app if installed
- Show install instructions if not installed
- Preserve pairing data for manual paste after installing
Manual Pairing
If QR scanning isn’t available, you can manually enter the pairing JSON shown during init:Command Queue
The Command Queue screen shows intercepted commands waiting for approval.Viewing Commands
Each pending command shows:- Command — what the agent or user is trying to run (e.g.,
rm -rf ./dist) - Justification — why the command is needed (if the agent provided one)
- Host — which machine the command is from
- Time — when the command was intercepted
Approve
Tap Approve to allow the command. The app automatically:- Generates a TOTP code from the stored seed
- Sends the code to the remote server
- The daemon validates the code locally and executes the command
Deny
Tap Deny to block the command. The command is rejected and the agent sees a denial in the terminal.Approve with Message
Tap Approve with Message to approve the command and send feedback to the agent. For example:- “ok but only delete dist, not src”
- “approved — next time use a safer pattern”
- “fine, but check the backup first”
message field in JSON events.
Push Notifications
When a command is intercepted, you receive a push notification on your phone:Requirements
- Physical device (push notifications don’t work on simulators)
- Notification permissions enabled for the YesPaPa app
- Valid push token uploaded to the remote server (happens automatically during pairing)
Troubleshooting
If notifications aren’t arriving:- Check notification permissions in your device settings
- Verify
yespapa statusshows “Remote: configured” - Check the
hosts.push_tokencolumn in your remote database - Review Edge Function logs:
npx supabase functions logs push_notification
Grace Periods (Auto-Bypass)
Activate auto-bypass from the Grace Control screen to temporarily skip TOTP prompts.Activate
- Select a scope:
all,destructive,git-rewrite,privilege,network, orprocess - Select a duration: 1 hour, 24 hours, or 7 days
- The app generates an HMAC-signed grace token and syncs it to the remote server
- The daemon picks it up and auto-approves matching commands
View Active Bypasses
Active grace periods show:- Scope (which command bundles are bypassed)
- Remaining time
- When it was created
Revoke
Tap Revoke to immediately expire a grace period. The daemon stops auto-approving commands for that scope.Multi-Host Support
Pair multiple machines to a single phone. Each host has:- Its own TOTP seed
- Its own command queue
- Its own grace periods
Security
- TOTP seed is stored in the device’s secure enclave (iOS Keychain / Android Keystore) via
expo-secure-store - Pairing tokens are one-time use — once consumed, they cannot be reused
- TOTP codes in approvals are validated by the daemon locally — the remote server cannot forge approvals
- Grace tokens are HMAC-signed with the TOTP seed — cannot be created without the seed
- If you lose your phone, commands still work via terminal TOTP entry with any authenticator app