Skip to content

Repository files navigation

Codex Voice Link

A real voice link to your desktop Codex.

Use an Android phone as the remote microphone and speaker for the existing ChatGPT desktop Codex Voice session running on your Mac. Your phone carries live audio; Codex, GPT-Live, project context, permissions, and spoken replies remain on the Mac where they belong.

Android phone and Mac linked by a bidirectional audio waveform

Codex Voice Link is an independent, unofficial project. It is not affiliated with, endorsed by, or sponsored by OpenAI.

Why this exists

The official ChatGPT Android Remote now appears to provide native Voice on current supported builds. That removes this project's commercial premise.

Codex Voice Link is retained as a private technical test build for comparing a locally controlled Android-to-desktop native Codex Voice audio path. It is not a new agent, remote shell, prompt relay, text-to-speech layer, replacement Codex UI, or a product offered for sale.

The phone does The bridge never does
Sends your live microphone audio to the paired Mac Store audio, transcripts, prompts, output, or credentials
Plays the verified Codex Voice reply Call an OpenAI API or implement STT/TTS
Starts/stops Voice and mutes/unmutes through fixed controls Execute tasks, approve actions, access files, or control a shell
Opens official ChatGPT Remote for the visual surface Send generic keyboard, pointer, or arbitrary commands

The link

flowchart LR
    A["Android microphone"] -->|"Encrypted CVL1 audio"| B["Paired Mac host"]
    B --> C["Virtual microphone input"]
    C --> D["Desktop Codex Voice"]
    D --> E["Verified Codex-only audio capture"]
    E -->|"Encrypted CVL1 audio"| F["Android speaker / headset"]
Loading

Detail illustration of bidirectional microphone and speaker paths

The visual Codex experience stays in the official ChatGPT Android app. This repository adds only the secure audio link and a deliberately small set of session controls.

Security model

  • Explicit pairing: an Android device identity is created in Android Keystore and bound locally by a single-use, five-minute pairing descriptor.
  • Authenticated encryption: fresh P-256 ECDH, transcript-bound HKDF-SHA256, directional AES-GCM media keys, and authenticated control messages protect a session.
  • Replay and expiry protection: a replay-protected media sequence space, correlated control receipts and short cryptographic liveness window fail microphone injection closed after a break. A bounded reconnect grace never replays a native Voice toggle.
  • Least privilege: the Mac host captures only the verified Codex helper's output and automates only fixed Voice start/stop actions.
  • No retained content: the bridge logs pairing/session/control/failure metadata, never raw media, transcripts, Codex content, credentials, or project data.
  • Immediate revocation: revoke an enrolled Android device locally; it cannot create or resume a session without a fresh enrollment.

Read the implementation detail in the architecture decision record and the CVL1 transport contract.

Current status

Private test build — built and tested, not a production or commercial release.

The repository contains the Kotlin/Compose Android client, Swift macOS host, versioned protocol, crypto vectors, unit tests, host checks, and a physical Android smoke test. Real-world audio quality, echo behavior, roaming, and long-duration reliability still need broader testing.

Component Status
Android 12+ companion Implemented
macOS Apple Silicon host Implemented
CVL1 pairing and encrypted datagram media Implemented
Codex-only capture and route restoration Implemented
Network deployment and signed distribution Deliberately paused

Requirements

  • Apple Silicon Mac running the ChatGPT desktop app with Codex Voice access
  • Android 12 or newer
  • A private network path between the devices (the prototype uses Tailscale)
  • A separately installed two-channel virtual audio device for the Mac input route

Warning

Deploying the prototype requires installing a virtual audio device, granting macOS/Android permissions, and starting a private listener. Review SETUP.md before changing either device.

Build and verify

Run the complete non-invasive suite from the repository root:

./scripts/check.sh

This validates protocol vectors, builds and checks the Swift host, then runs Android lint, unit tests, and a debug APK build. See SETUP.md for the separate pairing and on-device deployment steps.

Repository map

Path Purpose
android/ Kotlin/Compose phone companion and Android tests
macos/ Swift host, routing, capture, pairing, and control boundary
protocol/ Versioned control schema, CVL1 transport, fixtures, and vectors
docs/ Architecture decision record
scripts/check.sh One command for local verification

Contributing and security

This project treats the Android phone as an enrolled media client, never a trusted executor. If a change widens that boundary, it is out of scope.

Product language

The accurate short description is:

A real voice link to your desktop Codex. Speak from Android and hear replies from the same Codex Voice session on your Mac.

Avoid claims of OpenAI affiliation, any Android Voice availability guarantee, or being the only possible implementation.

About

A real voice link to your desktop Codex: use Android as the remote mic and speaker for Codex Voice on your Mac.

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages