Developers Digest · v0.1.0 · Updated July 14, 2026
One background player speaks your agents' updates aloud through Rime TTS, one at a time, so notifications never overlap. Hooks speak on their own when Claude needs you or finishes a task, and it reads out the actual question when a turn ends asking for input.
Add the marketplace once, then install. Restart Claude Code so the skill, commands, and hooks load, then run setup.
/plugin marketplace add https://www.developersdigest.tech/dd-plugins.git/plugin install agentvoice@developers-digest/agentvoice-setupThis plugin installs hooks. Hooks run shell commands on your machine with your permissions, without asking each time. Here is every hook it registers, the exact script it runs, and when. Read the scripts themselves further down before you install.
| Event | Runs when | Command |
|---|---|---|
| Notification | Claude needs your attention or approval | ~/.claude/plugins/agentvoice/scripts/hook-notify.sh |
| Stop | a turn finishes, including when it ends on a question | ~/.claude/plugins/agentvoice/scripts/hook-stop.sh |
| SubagentStop | a spawned subagent finishes | ~/.claude/plugins/agentvoice/scripts/hook-subagent.sh |
Generated from the plugin's own hooks.json, so it cannot drift from the shipped code.
Messages arrive from many agents at once. One player speaks them in order, so nothing ever overlaps. This runs live, right here.
Opens on the README, the plugin instructions. Browse the tree to read any file rendered or raw, and copy anything before you install.
12 files
Description
AgentVoice - README and every file in the plugin.
Give your AI agents a voice. AgentVoice runs one background player that speaks queued updates aloud through Rime TTS, one at a time, so notifications never overlap even when several agents run at once.
launchd + afplay)rime) installed and signed in.
Verify with: rime tts hello -m arcana -s astra/plugin marketplace add developersdigest/claude-marketplace
/plugin install agentvoice
/agentvoice-setup
/agentvoice-setup checks Rime, installs the shared queue and background player
(a launchd daemon that starts at login and auto-restarts), writes a default
config, and plays a test line so you hear it work.
Automatic (via hooks): AgentVoice speaks when Claude needs you, and gives a brief line when a substantial task finishes.
Intentional (via the agentvoice skill or directly):
~/.agentvoice/bin/agentvoice enqueue "Deploy finished, all healthy." -t deploy
~/.agentvoice/bin/agentvoice enqueue "Need your approval to continue." -t alert -p 10
~/.agentvoice/bin/agentvoice status
Priority is -p 0..100, lower plays first (default 50).
Edit ~/.agentvoice/config:
| Key | Default | Meaning |
|---|---|---|
AV_VOICE | astra | Rime speaker |
AV_MODEL | arcana | Rime model |
AV_MUTE | 0 | 1 = synthesize and archive but never play |
AV_HOOK_NOTIFY | 1 | speak when Claude needs input |
AV_HOOK_STOP | 1 | speak a brief line when a substantial task finishes |
AV_STOP_MIN_CHARS | 400 | min reply length to announce on Stop |
AV_HOOK_SUBAGENT | 0 | speak when a subagent finishes |
Agents drop a message file into ~/.agentvoice/queue/. A single player claims the
oldest item (atomic mv), synthesizes it with Rime (content-hash cached so
repeated lines are instant), plays it with afplay, then archives it to done/.
Directories act as the state machine: queue/ -> playing/ -> done/. Because
one player consumes serially, nothing ever overlaps.
MIT