A cross-platform client for OpenAI Codex CLI — connecting to a running Codex app-server via WebSocket JSON-RPC. Includes a React Native / Expo mobile app and a Tauri desktop app, sharing a common TypeScript library.
whats-coder/
├── apps/
│ ├── mobile/ # React Native (Expo) app for iOS & Android
│ └── desktop/ # Tauri desktop app (Windows / macOS / Linux)
├── packages/
│ └── shared/ # Shared TypeScript types, WebSocket client, theme
├── scripts/ # 根目录辅助脚本(按需添加)
├── turbo.json # Turborepo task configuration
├── pnpm-workspace.yaml # pnpm monorepo workspace
└── package.json
- Node.js >= 18
- pnpm >= 9
- Rust + Cargo — for the desktop app
- Tauri CLI v2 — for the desktop app
- Expo CLI — for the mobile app
pnpm installpnpm dev:mobileThis starts the Expo development server. Use the Expo Go app or an emulator to open it.
pnpm dev:desktopThis starts the Tauri + Vite development server.
If Rust is already installed but your current terminal session does not include
cargo in PATH, the desktop scripts will automatically try the default Cargo
install location such as ~/.cargo/bin.
pnpm buildpnpm build:desktopThe apps connect to a locally running Codex CLI app-server via WebSocket using a custom JSON-RPC 2.0 protocol. The @whats-coder/shared package provides:
CodexClient— WebSocket client with automatic reconnection and request/response tracking- Types — Full TypeScript type definitions for all protocol messages
- Theme — Shared design tokens used across apps
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.