The YesPaPa mobile app adds push notifications and one-tap approvals on top of the TOTP gate. It’s optional and always free.Documentation Index
Fetch the complete documentation index at: https://docs.yespapa.io/llms.txt
Use this file to discover all available pages before exploring further.
Download the App
Get YesPaPa for iOS and Android at get.yespapa.app
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