Skip to main content

Console Mobile

A React Native mobile console built with Expo Router, covering the same operations surface as the web console: streaming console chat, integrations, autonomous sessions, and settings.

Stack

Tabs

console, integrations, autonomous, and settings.

Streaming console

Messages stream over SSE into a Zustand store, with header actions for starting a new chat and stopping a stream in progress. Behavior that matters on mobile specifically:
  • Streaming pauses automatically when the app moves to background.
  • A stream idle timeout retries and re-queues rather than hanging.
  • Grouped messages, time separators for long gaps and day changes, and an unread counter on the “Latest” button while scrolled away.
  • Per-message retry on failed user messages.
  • Markdown rendering with tool-call cards, and a detail modal for long tool payloads.
  • Long-press a bubble to share it; one-tap copy of the last assistant response.

Offline and network handling

  • SQLite-backed offline persistence for console, integrations, and autonomous data.
  • An offline send queue with retry and clear actions, auto-retrying while the app is active.
  • Network-aware queueing wired into React Query’s online manager.
  • React Query cache hydration, pull-to-refresh, and a focus manager that refetches on app resume.

Approvals

Human-in-the-loop approvals carry through to mobile: push notifications and deep links for approval requests, plus an approval history modal with pending counts.

Security

  • SecureStore-backed auth with cookie headers.
  • Biometric and PIN lock with an inactivity timeout, lockout after failed attempts, and a trusted-device toggle.
  • A sign-in guardrail that refuses a misconfigured production API base rather than silently pointing at the wrong environment.

Voice

A voice API settings section supports key entry and a connection test, so a bad key surfaces at configuration time rather than mid-call. Voice statistics and latency appear in the analytics tab. For the voice platform itself, see the StateSet Voice documentation.

Accessibility and haptics

Accessibility state, hints, and touch-slop targets are set across interactive controls, with a deep i18n parity test in CI. Haptic feedback fires on consequential flows — sign-out, account deletion, and retry actions. Locales: English and Spanish in the mobile app. (The web console additionally carries French and Italian.)

Diagnostics and support

A diagnostics panel exposes API and config visibility with copyable output, a release-readiness status, and diagnostics sharing for support handoff. A “report issue” action pre-fills diagnostics. Settings also carries support and account-deletion shortcuts, and an About & Legal screen with policy and support links.

Builds

EAS build profiles with native bundle identifiers are configured for both platforms.