SpeakEasy 0.2.19 · dual mode

One voice.One exact Codex task.

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

Exact-task map

Task identity survives every turn

Ready
1
Locked Codex task
Explain SpeakEasy’s new product story
~/dev/SpeakEasy · 019f…
⌘⌥1
exact ID stays attached
“Make the distinction clearer.”
Local transcript
The task responds in context.
Spoken in SpeakEasy
The mapping is the product

SpeakEasy never guesses where your words should go.

The task ID—not its title, recency, project folder, or current focus—is the routing authority.

Explicit lock

You choose a real Codex Desktop task. SpeakEasy accepts it only after the owning window validates the exact ID.

Persistent lanes

Map up to nine tasks to Command-Option-1…9. Every activation reopens and revalidates the assignment.

Fail closed

If ownership, protocol, task, or turn correlation cannot be proven, SpeakEasy stops instead of picking another route.

One complete turn

From your voice to the real response.

ASR and TTS meet around the same task. There is no shadow agent and no second conversation to reconcile later.

  1. 1
    Choose

    Select the Codex task that already owns the work.

  2. 2
    Lock

    SpeakEasy validates that exact task with Codex Desktop.

  3. 3
    Speak

    Press ⌃⌥Space, talk, then press again to send.

  4. 4
    Route

    The final local transcript enters that task exactly once.

  5. 5
    Hear

    Its real response returns through the native player.

Included in 0.2.19

Speak · native TTS

Responses return through the menu-bar player with queues, transport controls, speed, volume, provider voices, and the live transcript HUD.

Download SpeakEasy.dmg
Mac in 0.2.19 · secure devices in 0.2.19

Listen · local ASR

Hold 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.

  • No source checkout or developer tools
  • Nine persistent exact-task lanes
  • Full transcript remains in Codex
First run

One prompt. Codex does the rest.

Paste a pinned install task into Codex. Approve microphone and local-network access when macOS asks.

Codex install · dual-mode releasev0.2.19

Paste once.

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.

Codex handles
DownloadInspectTrust checksReplaceSetupLaunch
You handle
MicrophoneLocal network

Only macOS can grant these permissions.

Install taskPaste into a new Codex task

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.

Inspect installer

Codex is instructed to inspect before running. The installer fails closed if any release check disagrees.

Prefer the DMG?Download DMG
  1. 1
    Install

    Open the DMG and drag SpeakEasy to Applications.

  2. 2
    Allow

    Open the app and approve microphone and local-network access when macOS asks.

  3. 3
    Start & talk

    In Settings → Deck, confirm Codex, start Deck, map a task, and hold to speak.

Codex first · Claude next

A routing model we can carry back to Claude.

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.

Spoken Claude hooks today
Two-way Claude mapping next
Codex integration boundary

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.