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

Terminal bash
cd mobile
bun install    # or: npm install

Starting the App

Terminal bash
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

  1. Start the Secrets Agent on your machine
  2. Launch the mobile app — it discovers the local WebSocket server
  3. The server sends an Ed25519 challenge
  4. The app signs the challenge and establishes an authenticated session
  5. You're now paired and will receive secret approval requests

Notification Cascade

The mobile app uses a multi-layer notification system for reliability:

PriorityMethodDescription
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

  1. Create a Firebase project at Firebase Console
  2. Add an Android app and download google-services.json
  3. Place it in mobile/android/app/

iOS

  1. Enable Push Notifications in your Apple Developer account
  2. Add the APN key to your Firebase project
  3. Ensure the aps-environment entitlement 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:

TabScreenDescription
DashboardDashboardScreenSystem overview — connection status, memory/plugin/task counts, recent executions
PluginsPluginListScreenView, enable/disable installed plugins with type and capability details
MemoryMemoryBrowserScreenBrowse, semantic search, and delete memory entries
TasksSchedulerScreenManage scheduled tasks — toggle, trigger immediate, view execution history
SettingsConfigScreenView 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:

FilePurpose
App.tsxMain component, bottom tab navigator (5 tabs)
src/services/websocket.tsUltraSushiTronWebSocket client with challenge-response auth
src/services/notifications.tsHybrid notification manager (WS + FCM cascade)
src/screens/DashboardScreen.tsxAdmin dashboard overview
src/screens/PluginListScreen.tsxPlugin management
src/screens/MemoryBrowserScreen.tsxMemory browsing and search
src/screens/SchedulerScreen.tsxTask scheduler management
src/screens/ConfigScreen.tsxSystem configuration
src/components/DeveloperModeGuard.tsxDeveloper mode gating