Work on Mac. Stay in flow.
Website · 简体中文 · Install · Releases
Turn an iPhone into a native Codex session deck. Keep it beside your keyboard, glance at task status and remaining usage, and tap a large key to open that session on your Mac.
- One to three keys. Adapts to portrait and landscape. New sessions join without filling empty keys with historical tasks.
- Desktop names. Uses Codex's sidebar name, including manual renames.
- Clear states. Blue for running, green for done and STOP. Output silence never implies a stopped task.
- A personal deck. Hide inactive sessions; choices survive restarts and address changes for the same paired Mac.
- Real usage. Shows the core Codex quota windows actually returned by the account, with reset times.
- Keep your iPhone awake. On by default in the foreground; the sun button toggles it with haptic feedback. It does not keep the Mac awake. Reconnects after network loss and preserves the last deck while disconnected.
- A menu-bar companion. QR pairing, optional launch at login, and no terminal window during normal use.
- Local HTTPS. Bearer pairing token, certificate pinning and an allowlist of session IDs. No relay service.
See the installation guide.
- iPhone: iOS 17+, built and signed with your own Apple ID in Xcode.
- Mac: macOS 14+, Python 3.10+ and a signed-in Codex desktop installation. The prebuilt companion targets Apple Silicon.
- There is no App Store/TestFlight release yet. The Mac binary is ad-hoc signed, not notarized.
Session status is a read-only projection of local Codex records, not a liveness guarantee. Local desktop/extension main sessions are supported; SSH hosts and subagents are not.
Pending questions and approvals are not reliably detected. Do not use the absence of an orange state as evidence that no input is waiting. The internal desktop socket is not accessed or bypassed. These limitations are also visible in the app's status help.
A successful tap means macOS accepted the codex://threads/<id> link. The app does not send prompts or answers.
| Path | Purpose |
|---|---|
iOS/ |
Native SwiftUI iPhone/iPad app and Xcode project |
macOS/ |
Menu-bar companion and build script |
Bridge/ |
Read-only history adapter, quota reader and HTTPS server |
Tests/ |
Bridge and session-selection regression tests |
Brand/ |
Original SVG identity and generated app icons |
docs/ |
Static, bilingual GitHub Pages website |
python3 -m unittest discover -s Tests -v
swiftc iOS/CodexDeck/SessionSelection.swift Tests/SelectionTests.swift -o /tmp/deck-tests
/tmp/deck-tests
python3 macOS/build.pyThe generated Xcode project is committed. XcodeGen is only needed after editing iOS/project.yml.
See CONTRIBUTING.md, TESTING.md and SECURITY.md. Never commit pairing tokens, certificates, account details, personal screenshots, provisioning profiles or signed iPhone builds.
MIT licensed. Inspired by herdr's session deck interaction; no herdr code is included. Website direction references SwiftNote, with original implementation and assets.
Codex Deck is an independent project by flaricy and is not affiliated with or endorsed by OpenAI.
