Blog
Ujex Mobile — FCM push approvals for agents
Ujex Mobile is the human-approval subsystem. Agent calls mobile.ask(prompt, detail, ttlSec); FCM push fires; human approves; agent resumes.
Detailed: Phone approvals for an AI agent: how mobile.ask works.
Flow
- Agent calls
mobile.ask(...)— writesowners/{uid}/approvals/{id} - Cloud Function fires FCM push to registered channels
- Human gets push; long-press → Approve / Deny
- Agent's listener fires; agent resumes
Total latency
1.5–6 seconds when the phone is in hand. TTL handles the case when it isn't.
Auth on approve
Face ID / Touch ID / device passcode required for the approve action.
Multi-channel
Owner can register multiple channels (phone, watch, SMS fallback). First responder wins.
SDK
from ujex_mobile import Mobile
m = Mobile(api_key=..., agent_id='abc')
approval = m.ask(prompt='Push to main?', detail='Will deploy 4f3a91',
ttl_sec=300)
result = approval.wait() # {'status': 'approved'|'denied'|'timeout'}
FAQ
What if no channel is registered?
mobile.ask returns status: no_channel immediately.