Skip to content

Android App

OpenClaw provides a native Android application that transforms your Android device into a powerful AI gateway node, enabling seamless interaction with OpenClaw from anywhere while maintaining Android’s security and privacy features.

  1. Download from Google Play Store:

    • Search “OpenClaw” in Play Store
    • Tap “Install” to download and install
    • Requires Android 7.0 (API level 24) or later
  2. Permissions Required:

    • Camera (for QR code scanning)
    • Microphone (for voice input)
    • Storage (for file sharing)
    • Notifications (for message alerts)
    • Network (for gateway communication)
Terminal window
# Add F-Droid repository
# Download from f-droid.org
# Search and install OpenClaw
Terminal window
# Download APK from GitHub releases
# Enable "Unknown sources" in settings
# Install APK manually
  • Alternative to Google Play Store
  • Privacy-focused app store
  • OpenClaw available on Aurora Store
  1. Launch OpenClaw from your app drawer
  2. Grant permissions when prompted by Android
  3. Choose setup mode:
    • Connect to gateway: Join existing OpenClaw setup
    • Cloud mode: Use OpenClaw cloud services
    • Offline mode: Limited offline functionality
  1. Generate pairing code on gateway:

    Terminal window
    openclaw pairing generate
  2. Scan QR code in Android app:

    • Tap “Scan QR Code”
    • Grant camera permission
    • Point camera at QR code
    • Confirm connection
  1. Enter gateway details:

    • IP address or hostname
    • Port number (default: 18789)
    • Pairing code
    • Connection name
  2. Test connection:

    • Verify network connectivity
    • Test message exchange
    • Save connection profile
  • Same network: Device and gateway on same Wi-Fi
  • Multiple networks: Save multiple gateway profiles
  • Auto-connect: Connect to known gateways automatically
  • VPN connection: Connect via VPN for remote access
  • Tailscale: Use Tailscale mesh network
  • Dynamic DNS: Use DDNS for remote gateways

The OpenClaw Android app uses Material Design navigation:

  • Chat: Main conversation interface
  • Channels: Messaging platform management
  • Status: Gateway and system status
  • Settings: App configuration and preferences
  • Quick access to all sections
  • Account information
  • Help and support
  • App information
  • Text input: Standard Android keyboard with autocomplete
  • Voice input: Tap microphone for voice-to-text
  • Camera integration: Take photos or videos
  • Gallery access: Select existing media
  • File picker: Access device storage
  • Location sharing: Share GPS coordinates
  • Rich text formatting: Bold, italic, code blocks
  • Mentions: @mention contacts and channels
  • Reactions: React with emojis
  • Quotes: Reply to specific messages
  • Forward: Share between conversations
  • Edit: Edit sent messages
  • Delete: Remove messages
  • Streaming responses: Real-time text streaming
  • Code highlighting: Syntax highlighting for code
  • Markdown rendering: Rich text formatting
  • Interactive elements: Clickable links and buttons
  • Voice synthesis: Text-to-speech for responses
  • Voice commands: “Hey Google, ask OpenClaw…”
  • App Actions: Launch OpenClaw via Assistant
  • Shortcuts integration: Create Assistant shortcuts
  • Voice synthesis: Assistant can read responses
  • Rich notifications: Expandable notifications with actions
  • Notification channels: Separate channels per messaging platform
  • Do Not Disturb: Respect Android DND settings
  • Notification grouping: Group related notifications
  • Quick reply: Reply directly from notifications
  • Home screen widgets: Status and quick actions
  • Lock screen widgets: Android 12+ lock screen support
  • Resizable widgets: Adaptive widget sizes
  • Widget themes: Light/dark theme support
  • Share menu: Share content to OpenClaw from any app
  • File provider: Access OpenClaw files from other apps
  • Content provider: Share OpenClaw data with other apps
  • Intent handling: Handle custom intents from other apps

Android device can act as Canvas surface:

{
"canvas": {
"enabled": true,
"resolution": "1920x1080",
"refreshRate": 60,
"touchEnabled": true,
"gestureSupport": ["tap", "swipe", "pinch", "scroll"],
"multiTouch": true,
"pressureSensitivity": true
}
}
  • Foreground service: Maintain connection when app is backgrounded
  • WorkManager: Schedule background tasks
  • JobScheduler: Optimize battery usage
  • AlarmManager: Schedule periodic tasks
  • Offline queue: Queue messages when offline
  • Local cache: Cache responses for offline access
  • Sync when online: Automatic synchronization
  • Conflict resolution: Handle sync conflicts
  • Split screen: Use alongside other apps
  • Picture-in-picture: Video chat in floating window
  • Freeform windows: Desktop-like window management
  • App pairs: Launch two apps together
{
"profiles": [
{
"name": "Home Gateway",
"host": "192.168.1.100",
"port": 18789,
"useTLS": false,
"token": "pairing-token",
"autoConnect": true,
"priority": 1
},
{
"name": "Office Gateway",
"host": "office.example.com",
"port": 18789,
"useTLS": true,
"token": "office-token",
"autoConnect": false,
"priority": 2
}
]
}
  • Wi-Fi preferences: Preferred networks for connection
  • Mobile data: Allow cellular connections
  • Roaming: Control behavior when roaming
  • VPN requirements: Require VPN for certain connections
  • DNS settings: Custom DNS configuration
  • Messages: New message notifications
  • Gateway status: Connection status changes
  • Errors: Error and warning notifications
  • System: System-level notifications
  • Sound: Custom notification sounds per channel
  • Vibration: Custom vibration patterns
  • LED: Notification LED color (if supported)
  • Pop-up: Heads-up notifications
  • Lock screen: Show on lock screen
  • Biometric lock: Fingerprint/face unlock
  • PIN protection: Custom PIN code
  • Pattern lock: Android pattern unlock
  • Auto-lock: Automatic app locking
  • Session timeout: Automatic logout
  • Local encryption: Encrypt stored data with Android Keystore
  • End-to-end encryption: Secure communication with gateway
  • Certificate pinning: Prevent MITM attacks
  • Secure storage: Use Android EncryptedSharedPreferences
  1. Open OpenClaw app
  2. Tap compose button or use voice command
  3. Select channel and recipient
  4. Compose message using text or voice
  5. Send and await AI response
  • Channel switching: Swipe between channels
  • Unified inbox: View all messages in one place
  • Channel filtering: Filter by channel or contact
  • Cross-channel operations: Forward between channels
  • Voice input: Tap microphone for voice messages
  • Voice commands: “Send message to contact”
  • Voice responses: Listen to AI responses
  • Hands-free operation: Complete voice control

When acting as Canvas surface:

  1. Enable Canvas mode in settings
  2. Gateway displays content on Android device
  3. Touch interactions: Full touch gesture support
  4. Multi-touch: Multiple simultaneous touch points
  5. Pressure sensitivity: Variable pressure input (if supported)
  • Account sync: Sync across multiple Android devices
  • Cloud backup: Backup settings and preferences
  • Device handoff: Start conversation on one device, continue on another
  • Shared preferences: Sync app settings
<!-- Tasker task to send message -->
<Task>
<Action>
<Code>openclaw.sendMessage("whatsapp", "+1234567890", "Hello from Tasker")</Code>
</Action>
</Task>
  • Triggers: Message received, gateway status change
  • Actions: Send message, change settings, start app
  • Conditions: Network status, time of day, location
# Home Assistant automation
automation:
- alias: "OpenClaw Message"
trigger:
- platform: event
event_type: openclaw_message_received
action:
- service: notify.mobile_app
data:
message: "New message from OpenClaw"
Terminal window
# Check gateway status
openclaw gateway status
# Test network connectivity
ping 192.168.1.100
# Check pairing code
openclaw pairing status
# Verify Android network settings
# Settings → Network & Internet → Wi-Fi
  • Check Wi-Fi signal strength
  • Verify mobile data stability
  • Restart Android app
  • Re-pair with gateway
  • Check battery optimization settings
  1. Check notification settings:

    • Settings → Apps → OpenClaw → Notifications
    • Ensure all notification channels are enabled
  2. Check Do Not Disturb:

    • Settings → Sound & Vibration → Do Not Disturb
    • Ensure OpenClaw is allowed
  3. Check battery optimization:

    • Settings → Battery → Battery optimization
    • Exclude OpenClaw from optimization
  • Check network connection quality
  • Verify gateway is responsive
  • Restart both gateway and app
  • Check notification delivery settings
  • Check network quality and speed
  • Close background apps
  • Clear app cache
  • Check available storage space
  • Monitor battery usage
  1. Force stop and restart:

    • Settings → Apps → OpenClaw → Force stop
    • Clear app data if necessary
    • Reinstall app
  2. Check crash logs:

    • Use Android Studio Logcat
    • Enable debug mode in app
    • Report crash with logs

The Android app provides internal APIs:

// Send message programmatically
import com.openclaw.android.sdk.OpenClawClient
val client = OpenClawClient(context)
client.sendMessage(
channel = Channel.WHATSAPP,
target = "+1234567890",
message = "Hello from Android"
) { result ->
when (result) {
is Result.Success -> Log.d("OpenClaw", "Message sent")
is Result.Error -> Log.e("OpenClaw", "Error: ${result.exception}")
}
}

Create custom app widgets:

class OpenClawWidget : AppWidgetProvider() {
override fun onUpdate(
context: Context,
appWidgetManager: AppWidgetManager,
appWidgetIds: IntArray
) {
appWidgetIds.forEach { appWidgetId ->
val views = RemoteViews(context.packageName, R.layout.widget_layout)
// Update widget with gateway status
updateWidget(context, views, appWidgetId)
appWidgetManager.updateAppWidget(appWidgetId, views)
}
}
}

Implement foreground service for background operations:

class OpenClawService : Service() {
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
startForeground(NOTIFICATION_ID, createNotification())
// Maintain gateway connection
maintainConnection()
return START_STICKY
}
private fun createNotification(): Notification {
return NotificationCompat.Builder(this, CHANNEL_ID)
.setContentTitle("OpenClaw Gateway")
.setContentText("Connected to gateway")
.setSmallIcon(R.drawable.ic_notification)
.build()
}
}
// Secure key generation and storage
val keyGenerator = KeyGenerator.getInstance(
KeyProperties.KEY_ALGORITHM_AES, "AndroidKeyStore"
)
keyGenerator.init(
KeyGenParameterSpec.Builder(
"openclaw_key",
KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT
)
.setBlockModes(KeyProperties.BLOCK_MODE_GCM)
.setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE)
.setUserAuthenticationRequired(true)
.setUserAuthenticationValidityDurationSeconds(30)
.build()
)
res/xml/network_security_config.xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="false">
<domain includeSubdomains="true">your-gateway.com</domain>
</domain-config>
<base-config cleartextTrafficPermitted="false">
<trust-anchors>
<certificates src="system"/>
</trust-anchors>
</base-config>
</network-security-config>
  • Modern storage: Use Android scoped storage
  • Permission model: Request minimal permissions
  • Data isolation: Isolate app data from other apps
  • Backup encryption: Encrypt backup data
// Biometric authentication
val promptInfo = BiometricPrompt.PromptInfo.Builder()
.setTitle("OpenClaw Authentication")
.setSubtitle("Authenticate to access OpenClaw")
.setNegativeButtonText("Cancel")
.build()
val biometricPrompt = BiometricPrompt(
fragmentActivity,
ContextCompat.getMainExecutor(fragmentActivity),
object : BiometricPrompt.AuthenticationCallback() {
override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult) {
// Authentication successful
}
}
)
biometricPrompt.authenticate(promptInfo)
  • Efficient networking: Batch network requests
  • Background limits: Respect Android background limits
  • Doze mode: Handle device Doze mode properly
  • Adaptive battery: Work with Android adaptive battery
  • Memory leaks: Prevent memory leaks with proper lifecycle management
  • Image optimization: Optimize image loading and caching
  • Database optimization: Efficient database operations
  • Garbage collection: Minimize object allocations
  • Compression: Compress data when possible
  • Caching: Implement intelligent caching
  • Offline support: Handle offline scenarios gracefully
  • Network awareness: Adapt to network conditions
  • Storage Access Framework: Access files through SAF
  • Content providers: Share content with other apps
  • Document provider: Provide OpenClaw documents to other apps
  • Calendar provider: Read/write calendar events
  • Event creation: Create events from conversations
  • Reminder integration: Set reminders from messages
  • Contacts provider: Access device contacts
  • Contact sync: Sync OpenClaw contacts
  • Caller ID: Identify incoming calls
  • Plugin development: Create Tasker plugins
  • Intent handling: Handle Tasker intents
  • Variable sharing: Share variables with Tasker
  • Android app integration: Integrate with Home Assistant app
  • Device tracking: Track device location
  • Sensor data: Provide sensor data to Home Assistant
  • In-app Help: Help → OpenClaw Help
  • Contact Support: Settings → Contact Support
  • Community Forum: discuss.openclaw.dev
  • Documentation: docs.openclaw.dev
  • Feature Requests: Help → Send Feedback
  • Bug Reports: Help → Report Bug
  • Beta Testing: Join beta testing program
  • Community: discord.gg/openclaw

Generate debug information for support:

// Collect debug information
val debugInfo = DebugInfoCollector.collect(context)
// Includes:
// - App version and build info
// - Device information
// - Network configuration
// - Recent logs
// - Crash reports

The OpenClaw Android app brings powerful AI capabilities to your Android device with deep integration into the Android ecosystem, enterprise-grade security, and seamless multi-platform messaging support. 🤖