37bb8bfe7297a5647a4a998f5708d44951d30172
- Added 'send' action type that uses uiautomator XML to find the rightmost clickable element in the bottom input bar (the send button) - Added screen resolution (1080x2400) to LLM context for better coordinate estimation - Updated system prompt to instruct model to use 'send' action instead of manual tap - Updated scenarios with clearer step-by-step instructions - Both send_message and multi_turn scenarios pass reliably
OpenCode Mobile
A React Native / Expo app for connecting to OpenCode servers from your phone.
Features
- Multiple Connection Types: Connect via local network, tunnels (Cloudflare/ngrok), or cloud-hosted instances
- Secure Authentication: Biometric authentication (Face ID/Touch ID) support
- Session Management: View, create, and manage coding sessions
- Real-time Chat: Stream responses from your AI assistant
- File Diff Viewer: See what changes were made to your code
Getting Started
Prerequisites
- Node.js 18+
- Bun (recommended) or npm
- Expo Go app on your phone (for development)
Installation
# From the monorepo root
cd packages/mobile
bun install
# Start the development server
bun start
Connecting to OpenCode
-
Start OpenCode in server mode on your machine:
OPENCODE_SERVER_PASSWORD=yourpassword opencode serve --hostname 0.0.0.0 --port 4096 -
Open the app and add a connection:
- Local Network: Use your machine's local IP (e.g.,
http://192.168.1.100:4096) - Tunnel: Set up a Cloudflare Tunnel or ngrok and use the tunnel URL
- Cloud: Connect to a hosted OpenCode instance
- Local Network: Use your machine's local IP (e.g.,
Building for Production
iOS
bun run ios
# or
eas build --platform ios
Android
bun run android
# or
eas build --platform android
Security
- Credentials are stored securely using
expo-secure-store(iOS Keychain / Android Keystore) - Optional biometric authentication for app access
- Optional biometric confirmation for sending messages
- All traffic should use HTTPS for non-local connections
Architecture
packages/mobile/
├── app/ # Expo Router screens
│ ├── (tabs)/ # Tab navigation
│ ├── session/ # Session screens
│ └── connection/ # Connection management
├── src/
│ ├── components/ # Reusable components
│ ├── hooks/ # Custom hooks
│ ├── lib/ # SDK client & types
│ └── stores/ # Zustand state stores
└── assets/ # App icons & images
Contributing
This is part of the OpenCode monorepo. See the root README for contribution guidelines.
Description
Languages
TypeScript
49%
Python
20.5%
HTML
18.9%
JavaScript
8.8%
Kotlin
1.2%
Other
1.6%