Published: 2026-08-31

Give any coding agent a spoken reply using a CLI and a Stop hook

Chapters / key moments (click to jump — plays here on the page)

The reason this is worth ten minutes: it is harness-agnostic. Because the mechanism is just a CLI the agent invokes, the same setup works in Claude Code, Codex, OpenCode, Devin or anything else that can run a shell command — no per-tool voice feature required. The suggested reply shape is the part that makes it useful rather than a novelty: one or two sentences on what was done, then a question about the next step, which turns a finished task into a decision point instead of a notification you have to go read.

Source video

"I Gave My Agents a Voice — And It's Wildly Useful" by Developers DigestWatch on YouTube →

Step-by-Step Breakdown

  1. Install the CLI and confirm it

    Install the tool, then run its version command to confirm it is on your PATH. The install and login are separate steps.

  2. Authenticate

    The login command opens a browser to authenticate and provisions free credits, so you can test the whole flow before deciding whether it earns a place in your setup.

  3. Pick a voice you can stand hearing all day

    Run the CLI with sample text and try speakers and models until one is tolerable. This sounds trivial and is not — the whole value is that you will hear it dozens of times a day, and a voice you dislike makes you turn the feature off. The dashboard groups voices as professional, formal, casual and energetic, and supports cloning.

  4. Tell the agent to use it, and how to learn it

    The prompt pattern shown: ask for the work, then "once you are done, respond back with one or two sentences of what you did and then ask me a question about what we should do next. Use the CLI — run its --help command to learn how to use it." Pointing the agent at --help rather than documenting the flags yourself is the reusable move.

  5. Make it permanent in your agent instructions

    Rather than repeating the instruction each session, put the preference in CLAUDE.md, AGENTS.md, or the equivalent for your harness, or wrap it in a skill — so the agent does not have to rediscover the CLI at the start of every conversation.

  6. Or fire it deterministically from a Stop hook

    If you want it to speak every time rather than when the model remembers to, attach it to the harness's stop hook. That moves it from an instruction the model may skip to a deterministic side effect of a turn ending — which is the difference between a habit and a feature.

Commands & Code Shown

rhyme --version

rhyme --version

Purpose: Confirms the CLI installed correctly and is on your PATH.

When to use: Immediately after install, before wiring it into any agent instruction — a missing binary shows up as an agent silently skipping the step.

rhyme login

rhyme login

Purpose: Opens a browser to authenticate and attaches free starting credits to the CLI.

When to use: Once per machine. Do this before testing, or every invocation fails.

rhyme "Hello, this is Developers Digest"

rhyme "Hello, this is Developers Digest"

Purpose: Speaks the given text with the default voice, showing a waveform, duration and generation speed in the terminal.

When to use: To sanity-check audio output and latency before handing the command to an agent.

rhyme "..." --speaker <name> --model <name>

rhyme "..." --speaker <name> --model <name>

Purpose: Selects a specific voice and model for the utterance.

When to use: Once you have picked a voice. A useful pattern suggested in the video: a different speaker per project directory, so you know which agent is reporting before you parse the words.

Gotchas & Caveats

  • This uses a specific commercial text-to-speech service with a free credit tier. The pattern — CLI plus stop hook — is the transferable part and works with any TTS tool that ships a command-line interface.
  • Voice cloning is offered (a short instant clone, or a longer professional one). Cloning your own voice is fine; cloning anyone else's without permission is not.
  • Spoken output is additive, not a replacement — you still want the written transcript for anything you need to audit later.

Key Takeaways

  • It works across harnesses because it is just a command. Claude Code, Codex, OpenCode and Devin are all demonstrated or named — nothing about the setup is tool-specific.
  • Ask for a summary plus a question, not just a summary. Most coding agents end a turn without proposing a next step; this makes the end of a task a decision point.
  • A Stop hook makes it deterministic. Instructions in a prompt get skipped; a hook does not.
  • Put the preference in CLAUDE.md / AGENTS.md or a skill so the agent does not spend turns rediscovering the CLI.
  • A different voice per agent or per project is a real usability win once you run several at once — you identify the reporter before you parse the report.
  • The underlying problem being solved is worth naming: with several agents running, the bottleneck is you reading long threads, and a spoken two-sentence handoff shortens that loop considerably.

Weekly Digest — In Your Inbox

Get the week's top AI agent news, updates, and guides — every Friday.