agent-tts
Reference

config.json

~/.agent-tts/config.json, data directory layout, and cloud keys.

Config is shared by every host that uses the same data directory. Change it with tts / /tts rather than editing the file when you can.

{
  "enabled": false,
  "mode": "summary",
  "prose_voice": null,
  "header_voice": null,
  "wpm": 175,
  "backend": "auto",
  "cloud": {
    "provider": "elevenlabs",
    "voice": null,
    "api_key": null,
    "region": null
  }
}
KeyMeaning
enabledAutomatic speech after completed turns
modesummary, closing, brief, or full
prose_voicenull = backend default
header_voicenull = same as prose (dual-voice off)
wpmSpeaking rate
backendauto, macos, windows, linux, cloud
cloudProvider settings; ignored unless backend is cloud

There is no reset-voice command. Set prose_voice or header_voice back to null in config.json.

Data directory

~/.agent-tts/
  config.json
  last_speak.json
  daemon.log
  daemon.pid
  daemon.port
  debug.log
  audio/

Override with AGENT_TTS_DATA_DIR. The path is not derived from $CLAUDE_PLUGIN_DATA - Claude Code only injects that into hook subprocesses, not the /tts slash command, so two directories would desync enablement.

If ~/.agent-tts is missing and ~/.claude/claude-code-tts exists, the legacy dir is copied in (skipping live daemon pid/port/log). tts migrate does that explicitly. tts status prints data_dir.

The daemon exits after 30 idle minutes and starts again on the next speak.

See also

On this page