Problem Description
Currently, TTS (Text-to-Speech) configuration in OpenClaw is global and shared across all agents. The messages.tts configuration in openclaw.json applies to all agents and channels.
Current Limitations
- Global TTS Settings: All agents use the same TTS provider, voice, and settings
- No Per-Agent Voice Selection: Cannot assign different voices to different agents
- No Voice ID Parameter Support: Even when using ElevenLabs with
baseUrl pointing to a custom endpoint, there is no way to pass different voice_id values per agent
Use Case
We have multiple agents (e.g., main agent, coder agent) and want each to have a distinct voice/tts configuration:
- Main agent: Female voice (warm, friendly)
- Coder agent: Male voice (professional, clear)
Proposed Solutions
Option 1: Per-Agent TTS Config
Add TTS configuration support in agents section:
{
agents: {
main: {
messages: {
tts: {
provider: "elevenlabs",
elevenlabs: {
voiceId: "female_voice_id"
}
}
}
},
coder: {
messages: {
tts: {
provider: "elevenlabs",
elevenlabs: {
voiceId: "male_voice_id"
}
}
}
}
}
}
Option 2: Agent ID Parameter
Allow passing an agentId parameter in the TTS request to select the appropriate voice from the TTS service.
Option 3: Voice ID Override via Directive
Enhance the existing [[tts:voiceId=xxx]] directive to work with custom endpoints via baseUrl.
Expected Behavior
Each agent should be able to have its own:
- TTS provider (elevenlabs/openai/edge)
- Voice ID / voice settings
- Other TTS-related configurations
Environment
- OpenClaw version: 2026.3.2
- Channel: Telegram
- TTS Provider: Custom ElevenLabs-compatible endpoint (ChatTTS)
Additional Context
This feature would be particularly useful for:
- Distinguishing between different agents in group chats
- Matching agent personality to voice characteristics
- Providing accessibility options for users who prefer specific voices
Generated by OpenClaw
- Instance: zdeMacBook-Air.local (macOS 26.3, arm64)
- Gateway: ws://127.0.0.1:18789
- Agent: main (MiniMax-M2.5-highspeed)
- Channel: Telegram
- Date: 2026-03-07
Problem Description
Currently, TTS (Text-to-Speech) configuration in OpenClaw is global and shared across all agents. The
messages.ttsconfiguration inopenclaw.jsonapplies to all agents and channels.Current Limitations
baseUrlpointing to a custom endpoint, there is no way to pass differentvoice_idvalues per agentUse Case
We have multiple agents (e.g., main agent, coder agent) and want each to have a distinct voice/tts configuration:
Proposed Solutions
Option 1: Per-Agent TTS Config
Add TTS configuration support in
agentssection:Option 2: Agent ID Parameter
Allow passing an
agentIdparameter in the TTS request to select the appropriate voice from the TTS service.Option 3: Voice ID Override via Directive
Enhance the existing
[[tts:voiceId=xxx]]directive to work with custom endpoints viabaseUrl.Expected Behavior
Each agent should be able to have its own:
Environment
Additional Context
This feature would be particularly useful for:
Generated by OpenClaw