This project includes a Capacitor Android shell for personal sideload use on Samsung S23 Ultra.
- APK bundles the Vue UI locally.
- The app connects to a remote
codex_xremoteserver with a mobile auth token. - Turn-complete notifications work in the foreground and while the app process remains alive in the background.
- Closed-app push notifications are intentionally out of scope for v1.
applicationId:com.opencode.codexxremoteappName:CodexU MobileminSdkVersion:29targetSdkVersion:34compileSdkVersion:34
- Node.js 18+
- Android Studio
- JDK 17 preferred
Gradle/Android builds will fail on Java 8. If java -version shows 1.8, switch to JDK 17 before building the APK.
cd C:\Users\Administrator\Desktop\opencode\codex_xremote\upstream-source
npm installnpm run buildnpm run cap:syncnpm run cap:openYou can also build from the terminal:
cd C:\Users\Administrator\Desktop\opencode\codex_xremote\upstream-source\android
.\gradlew.bat assembleDebug- Install the APK on the phone.
- Open the app.
- Enter the remote VPS
codex_xremoteURL. - Enter the
codex_xremotepassword. - Choose notification mode:
Current active turn onlyAll turn completionsOff
- Allow Android notifications.
- On Samsung One UI, set battery usage to
Unrestrictedand add the app toNever sleeping appsif needed.
- Browser web keeps same-origin cookie auth.
- Android uses
/codex-api/mobile-auth/loginto exchange password for a mobile token. - HTTP requests use
Authorization: Bearer <token>. - WebSocket and SSE use the saved mobile runtime server URL and token-aware transport helpers.
- If the server returns
401, the app reopens the mobile setup sheet and asks for the password again.
- Foreground: in-app sound and optional vibration
- Background with app still alive: Android local notification
- App force-closed: no guarantee
npm run build
npm run test:smoke
npm run cap:syncManual Android checks:
- First-run setup screen appears
- Wrong password shows an error
- Correct password connects and survives app relaunch
- Background turn completion triggers a notification
- Android back closes open settings sheets and skill detail modals before navigating away
- This shell is designed for a single remote VPS
codex_xremoteendpoint at a time. server.urlmode is not used; the APK serves local assets and only the API transport is remote.- If you change Capacitor major versions later, re-run
npm installandnpm run cap:syncbefore opening Android Studio.