Files
alfred-mobile/DEPLOYMENT_LOG.md
jknapp 6d4ae2e5c3 Initial commit: Alfred Mobile - AI Assistant Android App
- OAuth authentication via Authentik
- WebSocket connection to OpenClaw gateway
- Configurable gateway URL with first-run setup
- User preferences sync across devices
- Multi-user support with custom assistant names
- ElevenLabs TTS integration (local + remote)
- FCM push notifications for alarms
- Voice input via Google Speech API
- No hardcoded secrets or internal IPs in tracked files
2026-02-09 11:12:51 -08:00

4.8 KiB

Alfred Mobile - Deployment Log

Deployment Successful - February 2, 2025 07:52 PST

Deployment Summary

  • Target Device: Samsung Galaxy Tab (adb-R52R30ASB4Y-BIkpas)
  • Connection Method: Wireless ADB over WiFi
  • Device IP: 192.168.1.180
  • APK Size: 17 MB
  • Package: com.openclaw.alfred

Deployment Timeline

1. Build Phase (07:12 - 07:40 PST)

  • Fixed Gradle build script imports
  • Created OAuth configuration
  • Generated launcher icons
  • Compiled APK successfully

2. Initial Connection Attempts (07:46 - 07:50 PST)

Challenge: WSL adb pairing protocol issues

  • Attempted multiple pairing methods (stdin, python script, pty)
  • Encountered protocol faults and timeouts
  • Root cause: ADB wireless pairing requires interactive TTY

3. Successful Pairing (07:51 PST)

Pairing Details:

  • Pairing Port: 45047
  • Pairing Code: 919435
  • Command: adb pair 192.168.1.180:45047 (interactive PTY)
  • Result: Successfully paired to 192.168.1.180:45047 [guid=adb-R52R30ASB4Y-BIkpas]

4. Device Connection (07:51 PST)

Connection Status:

List of devices attached
adb-R52R30ASB4Y-BIkpas._adb-tls-connect._tcp	device
  • Auto-connected after pairing
  • No manual adb connect needed

5. APK Installation (07:52 PST)

Install Command:

adb install ~/.openclaw/workspace/alfred-mobile/app/build/outputs/apk/debug/app-debug.apk

Result:

Performing Streamed Install
Success

Verification:

adb shell pm list packages | grep alfred
# Output: package:com.openclaw.alfred

Technical Details

ADB Version

Android Debug Bridge version 1.0.41
Version 36.0.2-14143358
Platform: Linux 5.15.167.4-microsoft-standard-WSL2 (x86_64)
Location: ~/android-dev/android-sdk/platform-tools/adb

Network Details

  • Desktop IP: 192.168.1.169 (WSL bridged mode)
  • Tablet IP: 192.168.1.180
  • Ping latency: 126-206ms (WiFi)
  • No firewall ports needed (outbound connection)

Wireless Debugging Configuration

Android's Wireless Debugging shows two types of ports:

  1. Pairing Port (changes each time)

    • Used only for initial device pairing
    • Requires 6-digit pairing code (expires quickly)
    • Example: 45047
  2. Connection Port (persistent)

    • Shown at top of Wireless Debugging screen
    • Used for actual ADB connection after pairing
    • Example: 35529 (not needed in our case - auto-connected)

PTY Requirement

ADB wireless pairing requires interactive terminal:

  • exec(..., pty=true, background=true) + process:send-keys
  • Piping stdin (echo "code" | adb pair)
  • Python subprocess with stdin.write()
  • Reason: ADB reads pairing code directly from TTY, not stdin

Lessons Learned

1. WSL ADB Wireless Pairing

  • Challenge: Protocol requires interactive terminal
  • Solution: Use pty=true with process send-keys
  • Alternative: Windows ADB (direct, no WSL complexity)

2. Pairing vs Connection Ports

  • Pairing port is one-time use with code
  • After pairing, device auto-connects via mDNS/TLS
  • Connection port shown in UI may not be needed

3. Device GUID

  • Format: adb-{SERIAL}-{GUID}
  • Persistent identifier after pairing
  • Uses _adb-tls-connect._tcp service

4. Installation Over WiFi

  • Works identically to USB
  • Slightly slower due to network latency
  • No special configuration needed

Current App Status

Installed & Runnable

  • App package: com.openclaw.alfred
  • Can launch from app drawer
  • UI will load skeleton interface

Not Yet Functional

Missing implementations:

  1. OAuth authentication flow (OAUTH_SETUP.md)
  2. WebSocket connection (WEBSOCKET_INTEGRATION.md)
  3. Wake word detection (Porcupine SDK)
  4. Voice input/output
  5. Chat UI features

Next Development Steps

  1. Implement OAuth code (AuthManager, LoginScreen, etc.)
  2. Test OAuth flow with Authentik
  3. Implement WebSocket connection to alfred-app.dnspegasus.net
  4. Add voice features
  5. Build out UI

Quick Reference Commands

Check Connected Devices

export PATH=~/android-dev/android-sdk/platform-tools:$PATH
adb devices

Reinstall After Changes

cd ~/.openclaw/workspace/alfred-mobile
export JAVA_HOME=~/android-dev/jdk-17.0.2
export ANDROID_HOME=~/android-dev/android-sdk
export PATH=$JAVA_HOME/bin:$ANDROID_HOME/platform-tools:$PATH
./gradlew assembleDebug
adb install -r app/build/outputs/apk/debug/app-debug.apk

View Logs

adb logcat | grep -i alfred

Uninstall

adb uninstall com.openclaw.alfred

Launch App

adb shell am start -n com.openclaw.alfred/.MainActivity

Firewall Notes

No Windows Firewall changes needed for wireless ADB

  • Outbound connections work by default
  • Only inbound server ports need firewall rules
  • Already configured: 18789 (OpenClaw), 18790 (OAuth proxy)

🤵 Deployment complete! App ready for OAuth implementation.