Mobile Setup
The UltraSushiTron mobile app (React Native/Expo) lets you approve secret requests from your phone with full context about what the AI agent wants to do.
Prerequisites
- Node.js 18+ or Bun
- Expo Go app on your iOS or Android device
- iOS 13+ or Android 10+
Installation
cd mobile
bun install # or: npm install Starting the App
bun start # or: npx expo start Scan the QR code with Expo Go (Android) or the Camera app (iOS) to open on your device.
Pairing Flow
- Start the Secrets Agent on your machine
- Launch the mobile app — it discovers the local WebSocket server
- The server sends an Ed25519 challenge
- The app signs the challenge and establishes an authenticated session
- You're now paired and will receive secret approval requests
Notification Cascade
The mobile app uses a multi-layer notification system for reliability:
| Priority | Method | Description |
|---|---|---|
| 1 (highest) | Local WebSocket | Direct connection to the Secrets Agent on local network |
| 2 | Relay WebSocket | Remote relay server for when not on local network |
| 3 (fallback) | FCM Push | Firebase Cloud Messaging for background notifications |
The system automatically falls back through these layers. If the local WebSocket is unavailable (e.g., phone is on a different network), it tries the relay server, then falls back to FCM push notifications.
Push Notification Setup (Optional)
For background notifications when the app isn't active:
Android
- Create a Firebase project at Firebase Console
- Add an Android app and download
google-services.json - Place it in
mobile/android/app/
iOS
- Enable Push Notifications in your Apple Developer account
- Add the APN key to your Firebase project
- Ensure the
aps-environmententitlement is set
Approval UI
When a secret request arrives, the app shows:
- Secret name and type (API_KEY, PASSWORD, etc.)
- Requesting tool — which tool needs the secret
- Reason — full context of why the secret is needed
- Duration — how long access is requested for
- Approve / Deny buttons
Admin Interface
The mobile app includes a full admin dashboard for managing the agent's runtime. Access is through a bottom tab navigator with 5 tabs:
| Tab | Screen | Description |
|---|---|---|
| Dashboard | DashboardScreen | System overview — connection status, memory/plugin/task counts, recent executions |
| Plugins | PluginListScreen | View, enable/disable installed plugins with type and capability details |
| Memory | MemoryBrowserScreen | Browse, semantic search, and delete memory entries |
| Tasks | SchedulerScreen | Manage scheduled tasks — toggle, trigger immediate, view execution history |
| Settings | ConfigScreen | View and update system configuration (LLM provider, scheduler settings) |
Developer Mode
Advanced features are gated behind Developer Mode, controlled by the DeveloperModeGuard component. When enabled, additional diagnostic information and destructive operations (like memory deletion) become available with biometric confirmation.
All admin operations communicate over the existing authenticated WebSocket channel using the Admin API (JSON-RPC).
Architecture
Key mobile source files:
| File | Purpose |
|---|---|
App.tsx | Main component, bottom tab navigator (5 tabs) |
src/services/websocket.ts | UltraSushiTronWebSocket client with challenge-response auth |
src/services/notifications.ts | Hybrid notification manager (WS + FCM cascade) |
src/screens/DashboardScreen.tsx | Admin dashboard overview |
src/screens/PluginListScreen.tsx | Plugin management |
src/screens/MemoryBrowserScreen.tsx | Memory browsing and search |
src/screens/SchedulerScreen.tsx | Task scheduler management |
src/screens/ConfigScreen.tsx | System configuration |
src/components/DeveloperModeGuard.tsx | Developer mode gating |