Skip to content

Connection & Authentication

The mobile app connects to your self-hosted Snippbot daemon over HTTP(S). This page covers initial setup, device registration, and authentication.

When you launch the app for the first time, you’ll see the Awakening splash screen, followed by the setup flow.

  1. Enter your daemon URL

    Type the address of your running Snippbot daemon. Examples:

    • Local network: http://192.168.1.50:18781
    • Reverse proxy: https://snippbot.yourdomain.com
  2. Authenticate

    Enter your Snippbot credentials (the same ones used for the web UI or CLI).

  3. Register this device

    The app automatically registers your phone as a trusted device. You’ll see your device name and a unique device ID.

  4. Enable push notifications

    Grant notification permissions when prompted. This enables real-time alerts for approvals, task completions, and insights.

  5. Optional: Enable biometrics

    On supported devices, enable Face ID or fingerprint unlock for quick, secure access.

After setup, manage your connection in Settings > Connection.

SettingDescription
Daemon URLThe base URL of your Snippbot daemon
Auth tokenStored securely in the device keychain (Keychain on iOS, Keystore on Android)
Device IDUnique identifier for this device, generated on first registration
Device nameDisplay name shown in session participants and device lists

The mobile app uses bearer token authentication:

  1. On login, the app receives a JWT from the daemon’s /auth/login endpoint
  2. The token is stored in expo-secure-store (hardware-backed keychain)
  3. Every API request includes the token in the Authorization: Bearer <token> header
  4. Tokens are refreshed automatically before expiry

When you authenticate, the app registers your device with the daemon:

What gets registered
POST /devices/push/register
{
"device_id": "d_abc123...",
"push_token": "ExponentPushToken[...]",
"push_provider": "expo",
"platform": "ios",
"device_name": "iPhone 15 Pro",
"app_version": "0.1.0",
"os_version": "ios 18.2",
"device_model": "iPhone 15 Pro"
}

This enables:

  • Push notifications routed to your specific device
  • Device trust verification in remote sessions
  • Device fingerprinting for security gate checks

The app generates a hardware fingerprint using a SHA-256 hash of stable device attributes:

  • Device model and manufacturer
  • OS version
  • Unique device identifier

This fingerprint is sent with session join requests and verified against the daemon’s trust store. You can require fingerprint matching in session security settings.

All sensitive data is stored using expo-secure-store, which maps to:

PlatformBackend
iOSKeychain Services (hardware-encrypted)
AndroidAndroid Keystore + EncryptedSharedPreferences

Stored items:

  • Auth token
  • Device ID
  • Push token
  • Session credentials

To connect to a different Snippbot instance:

  1. Go to Settings > Connection
  2. Tap Disconnect
  3. Enter the new daemon URL
  4. Re-authenticate with credentials for the new instance
  1. Verify the daemon is running: snippbot status on your server
  2. Check the URL includes the port (default: 18781)
  3. Ensure your phone and server are on the same network (or use a reverse proxy)
  4. Try http:// if HTTPS isn’t configured

The app refreshes tokens automatically. If you see an auth error:

  1. Go to Settings > Connection
  2. Tap Re-authenticate
  3. Enter your credentials again
  1. Check Settings > Connection for the device ID
  2. On the daemon web UI, go to Devices and verify the device appears
  3. If missing, tap Re-register device in the app settings