Offdex: Codex mobile app.
Note: This project is currently in alpha and active development. Things may change rapidly.
Offdex is a public monorepo for a fast, polished, local-first Codex experience across phone and web.
apps/mobile: Expo + React Nativeapps/web: Next.js App Router- Bun workspaces
- Turborepo task orchestration
- UX first
- performance first
- cross-platform by default
- native modules where they earn their keep
- no paywalls
bun install
bun run dev:control-plane-worker
bun run dev:bridge
bun run dev:web
bun run dev:mobileThe intended public Mac, Linux, and Windows install path is:
npm install -g @dhruv2mars/offdex
offdexThe npm package downloads the matching native bridge runtime for the current platform from GitHub Releases.
CLI usage:
offdex
offdex help
offdex start --host 0.0.0.0 --port 42420
offdex status
offdex stopRemote pairing is enabled by default through the free Cloudflare Worker relay. For local development only, override it with OFFDEX_CONTROL_PLANE_URL.
The landing page is live at offdexapp.vercel.app. The browser Codex client is live at offdexapp.vercel.app/webui.
Public Android downloads are meant to ship through GitHub Releases.
- Website download link:
https://github.com/Dhruv2mars/offdex/releases/latest/download/offdex-android.apk - Releases page:
https://github.com/Dhruv2mars/offdex/releases - Create a release tag:
bun run release:tag
Version tag releases build a signed Android APK from the Expo app and upload:
offdex-android.apkoffdex-android.sha256
Required GitHub repository secrets:
ANDROID_KEYSTORE_BASE64ANDROID_KEYSTORE_PASSWORDANDROID_KEY_ALIASANDROID_KEY_PASSWORD
The workflow derives versionCode from the semver tag and enforces that:
apps/mobile/package.jsonversion matches the tagapps/mobile/app.jsonversion matchesapps/mobile/package.jsonpackages/npm/package.jsonversion matchesapps/mobile/package.json
The same release tag also publishes:
- npm package:
@dhruv2mars/offdex - GitHub release binaries for macOS, Linux, and Windows
Current npm target matrix:
- macOS:
arm64,x64 - Linux:
arm64,x64 - Windows:
x64
The npm installer pulls the correct release asset for the current platform when users run:
npm install -g @dhruv2mars/offdexLocal npm package smoke check:
bun run test:install-smokeWindows arm64 is not shipped yet because Bun does not currently support compiling that target.
If you want GitHub Actions to sign Android builds automatically, the repo needs these secrets:
ANDROID_KEYSTORE_BASE64ANDROID_KEYSTORE_PASSWORDANDROID_KEY_ALIASANDROID_KEY_PASSWORD
If you want the tag workflow to publish npm automatically, pick one:
- npm trusted publisher for
Dhruv2mars/offdex NPM_TOKENGitHub secret
offdex startThe QR and WebUI link embed a managed claim for that machine. Clients try the local bridge first, then fall back to the encrypted Cloudflare relay when local access is unavailable.
apps/
mobile/ Expo client
web/ Landing page now, broader web surface later
packages/ Shared protocol, bridge, relay, UI, native modules
- QR code in the browser and terminal
- pairing link saved on device until disconnect
- trusted device session saved on phone until disconnect
- local bridge first when reachable
- encrypted Cloudflare relay for away-from-home access
- relay room token derived from the machine secret, so random clients cannot attach to a room
Offdex now has a real path: phone or web app -> local bridge or encrypted remote relay -> Codex CLI.