Explicit lock
You choose a real Codex Desktop task. SpeakEasy accepts it only after the owning window validates the exact ID.
SpeakEasy maps an explicit utterance to the conversation you choose—not whichever window happens to be focused—then speaks that conversation’s real answer back to you.
Developer ID signed and Apple-notarized · Apple silicon · macOS 14 or newer
Task identity survives every turn
The task ID—not its title, recency, project folder, or current focus—is the routing authority.
You choose a real Codex Desktop task. SpeakEasy accepts it only after the owning window validates the exact ID.
Map up to nine tasks to Command-Option-1…9. Every activation reopens and revalidates the assignment.
If ownership, protocol, task, or turn correlation cannot be proven, SpeakEasy stops instead of picking another route.
ASR and TTS meet around the same task. There is no shadow agent and no second conversation to reconcile later.
Select the Codex task that already owns the work.
SpeakEasy validates that exact task with Codex Desktop.
Press ⌃⌥Space, talk, then press again to send.
The final local transcript enters that task exactly once.
Its real response returns through the native player.
Responses return through the menu-bar player with queues, transport controls, speed, volume, provider voices, and the live transcript HUD.
Download SpeakEasy.dmgHold to speak from the Mac, browser, or iPad. SpeakEasy transcribes locally and sends the final dictation into the real Codex task assigned to that lane.
Paste a pinned install task into Codex. Approve microphone and local-network access when macOS asks.
Codex downloads the pinned release, inspects it, verifies every trust boundary, replaces the app safely, finishes setup, and launches SpeakEasy with the paired browser/iPad Deck.
Only macOS can grant these permissions.
Install SpeakEasy 0.2.19 on this Mac. Download and inspect https://github.com/arach/SpeakEasy/releases/download/v0.2.19/install-speakeasy.sh, then run it. Do not build from source or bypass Gatekeeper. Use the installer’s checksum, Developer ID, notarization, and exact-version checks. When SpeakEasy opens Settings → Deck, tell me which human-only permissions or setup steps remain.
Codex is instructed to inspect before running. The installer fails closed if any release check disagrees.
Open the DMG and drag SpeakEasy to Applications.
Open the app and approve microphone and local-network access when macOS asks.
In Settings → Deck, confirm Codex, start Deck, map a task, and hold to speak.
Claude hooks already speak permission and waiting notifications. The next step is to adapt this same explicit conversation contract—not invent a looser voice-command layer.
The current bridge uses private, version-checked Codex Desktop IPC and fails closed on incompatibility. It is not presented as a supported public Codex API.