Codex Voice is an experimental macOS menu bar app that lets you hold Control-M, speak, and insert the transcript into the currently focused app.
It uses the same Codex desktop transcription flow as the Codex app, but works anywhere on your Mac.
Codex.Voice.demo.mp4
- Global
Control-Mhold-to-dictate hotkey - Floating HUD while listening, transcribing, and inserting
- Microphone capture while the hotkey is held
- Transcript insertion into the focused app
- Accessibility-first insertion with clipboard paste fallback
- Codex-backed transcription using your local Codex sign-in
This is a reverse-engineered experimental tool.
- It depends on Codex being installed locally.
- It depends on local Codex auth already existing on your machine.
- It may break if Codex changes its internal transcription flow.
- macOS 14+
- Xcode
- XcodeGen
- Codex installed locally
- An active local Codex sign-in
On first run, macOS may ask for:
- Microphone
- Accessibility
Accessibility is required for reliable cross-app text insertion.
cd ~/Projects/codex-voice
xcodegen generate
xcodebuild -project CodexVoice.xcodeproj -scheme CodexVoice -configuration Debug build./scripts/install-local-app.shThis installs the app to:
~/Applications/CodexVoice.appUse that installed copy when granting Accessibility permission. Do not rely on a DerivedData build path for normal use, because macOS privacy permissions can be flaky when the app identity keeps moving around.
Then hold Control-M, speak, and release in any focused text field.
- Audio is sent to the Codex transcription backend when you release the hotkey.
- The app reads local Codex auth from
~/.codex/auth.json. - If auth expires, the app tries to refresh it through the local
codexCLI. - The app looks for
codexviaCODEX_CLI_PATH, then yourPATH, then/Applications/Codex.app/Contents/Resources/codex. - Debug logging is off by default. To enable it temporarily, launch the app with
CODEX_VOICE_DEBUG_LOG=1.
MIT