agentvibes 5.6.0 → 5.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/.agentvibes/config.json +3 -38
  2. package/.claude/config/audio-effects.cfg +1 -1
  3. package/.claude/config/background-music-enabled.txt +1 -1
  4. package/.claude/config/background-music-position.txt +6 -6
  5. package/.claude/github-star-reminder.txt +1 -1
  6. package/.claude/hooks/play-tts-ssh-remote.sh +119 -42
  7. package/.claude/hooks/play-tts-windows-receiver.sh +31 -0
  8. package/.claude/hooks/stop.sh +2 -27
  9. package/.claude/hooks-windows/play-tts-windows-sapi.ps1 +108 -108
  10. package/.claude/hooks-windows/play-tts.ps1 +58 -8
  11. package/.claude/piper-voices-dir.txt +1 -1
  12. package/.clawdbot/skill/README.md +326 -0
  13. package/.mcp.json +17 -27
  14. package/README.md +15 -2
  15. package/RELEASE_NOTES.md +64 -0
  16. package/bin/agent-vibes +39 -39
  17. package/package.json +1 -1
  18. package/src/bmad-detector.js +71 -71
  19. package/src/cli/list-personalities.js +110 -110
  20. package/src/cli/list-voices.js +114 -114
  21. package/src/commands/bmad-voices.js +394 -394
  22. package/src/commands/install-mcp.js +476 -476
  23. package/src/console/brand-colors.js +13 -13
  24. package/src/console/constants/personalities.js +44 -44
  25. package/src/console/modals/modal-overlay.js +247 -247
  26. package/src/console/navigation.js +5 -1
  27. package/src/console/tabs/agents-tab.js +5 -5
  28. package/src/console/tabs/help-tab.js +314 -314
  29. package/src/console/tabs/readme-tab.js +272 -272
  30. package/src/console/tabs/setup-tab.js +32 -17
  31. package/src/console/tabs/voices-tab.js +2 -2
  32. package/src/console/widgets/destroy-list.js +25 -25
  33. package/src/console/widgets/notice.js +55 -55
  34. package/src/console/widgets/personality-picker.js +213 -213
  35. package/src/console/widgets/reverb-picker.js +97 -97
  36. package/src/console/widgets/track-picker.js +1 -1
  37. package/src/i18n/de.js +202 -202
  38. package/src/i18n/es.js +202 -202
  39. package/src/i18n/fr.js +202 -202
  40. package/src/i18n/hi.js +202 -202
  41. package/src/i18n/ja.js +202 -202
  42. package/src/i18n/ko.js +202 -202
  43. package/src/i18n/pt.js +202 -202
  44. package/src/i18n/strings.js +54 -54
  45. package/src/i18n/zh-CN.js +202 -202
  46. package/src/installer/language-screen.js +31 -31
  47. package/src/installer/music-file-input.js +304 -304
  48. package/src/services/agent-voice-store.js +420 -423
  49. package/src/services/config-service.js +264 -264
  50. package/src/services/language-service.js +47 -47
  51. package/src/services/llm-provider-service.js +11 -4
  52. package/src/services/navigation-service.js +34 -10
  53. package/src/services/provider-service.js +143 -143
  54. package/src/utils/audio-duration-validator.js +298 -298
  55. package/src/utils/audio-format-validator.js +277 -277
  56. package/src/utils/dependency-checker.js +469 -469
  57. package/src/utils/file-ownership-verifier.js +358 -358
  58. package/src/utils/list-formatter.js +194 -194
  59. package/src/utils/music-file-validator.js +285 -285
  60. package/src/utils/preview-list-prompt.js +136 -136
  61. package/src/utils/secure-music-storage.js +412 -412
  62. package/.agentvibes/LITE-MODE.md +0 -236
  63. package/.agentvibes/README.md +0 -136
  64. package/.agentvibes/backup/session-start-tts.sh.20251210_212814 +0 -141
  65. package/.agentvibes/backups/agents/analyst_20260204_144958.md +0 -78
  66. package/.agentvibes/backups/agents/architect_20260204_144958.md +0 -72
  67. package/.agentvibes/backups/agents/dev_20260204_144958.md +0 -74
  68. package/.agentvibes/backups/agents/pm_20260204_144958.md +0 -72
  69. package/.agentvibes/backups/agents/quick-flow-solo-dev_20260204_144958.md +0 -64
  70. package/.agentvibes/backups/agents/sm_20260204_144958.md +0 -87
  71. package/.agentvibes/backups/agents/tea_20260204_144958.md +0 -79
  72. package/.agentvibes/backups/agents/tech-writer_20260204_144958.md +0 -82
  73. package/.agentvibes/backups/agents/ux-designer_20260204_144958.md +0 -80
  74. package/.agentvibes/config/README-personality-defaults.md +0 -162
  75. package/.agentvibes/config/agentvibes.json +0 -1
  76. package/.agentvibes/config/mode.txt +0 -1
  77. package/.agentvibes/config/personality-voice-defaults.default.json +0 -21
  78. package/.agentvibes/config/save-audio.txt +0 -1
  79. package/.agentvibes/config/voice-metadata.json +0 -160
  80. package/.agentvibes/hooks/help.sh +0 -191
  81. package/.agentvibes/hooks/post-tool-use-lite.sh +0 -111
  82. package/.agentvibes/hooks/save-audio-manager.sh +0 -162
  83. package/.agentvibes/hooks/session-start-full-optimized.sh +0 -102
  84. package/.agentvibes/hooks/session-start-full.sh +0 -142
  85. package/.agentvibes/hooks/session-start-lite-v2.sh +0 -34
  86. package/.agentvibes/hooks/session-start-lite.sh +0 -29
  87. package/.agentvibes/hooks/stop-lite.sh +0 -115
  88. package/.agentvibes/hooks/switch-mode.sh +0 -215
  89. package/.agentvibes/output-styles/audio-summary.md +0 -30
  90. package/.claude/audio/voice-samples/piper/alan.wav +0 -0
  91. package/.claude/audio/voice-samples/piper/amy.wav +0 -0
  92. package/.claude/audio/voice-samples/piper/charlotte.wav +0 -0
  93. package/.claude/audio/voice-samples/piper/joe.wav +0 -0
  94. package/.claude/audio/voice-samples/piper/john.wav +0 -0
  95. package/.claude/audio/voice-samples/piper/katherine.wav +0 -0
  96. package/.claude/audio/voice-samples/piper/kristin.wav +0 -0
  97. package/.claude/audio/voice-samples/piper/linda.wav +0 -0
  98. package/.claude/audio/voice-samples/piper/marcus.wav +0 -0
  99. package/.claude/audio/voice-samples/piper/ryan.wav +0 -0
  100. package/.claude/hooks/post-response.sh +0 -41
  101. package/bin/ensure-soprano-running.sh +0 -43
@@ -1,4 +1,4 @@
1
- #
1
+ #
2
2
  # File: .claude/hooks-windows/play-tts.ps1
3
3
  #
4
4
  # AgentVibes - Windows TTS Router
@@ -19,6 +19,18 @@ param(
19
19
  [string]$llm = ""
20
20
  )
21
21
 
22
+ # Text-file handoff: the SSH receiver watcher writes long/special-char text to
23
+ # a UTF-8 temp file and passes the sentinel "__from_file__" on the command line
24
+ # to avoid Windows CLI argument mangling. Load the real text here.
25
+ if ($Text -eq "__from_file__" -and $env:AGENTVIBES_TEXT_FILE) {
26
+ if (Test-Path $env:AGENTVIBES_TEXT_FILE) {
27
+ $Text = [System.IO.File]::ReadAllText($env:AGENTVIBES_TEXT_FILE, [System.Text.UTF8Encoding]::new($false))
28
+ } else {
29
+ Write-Error "AGENTVIBES_TEXT_FILE set to missing path: $($env:AGENTVIBES_TEXT_FILE)"
30
+ exit 1
31
+ }
32
+ }
33
+
22
34
  # Configuration paths
23
35
  # First check if we're running from a project directory with .claude
24
36
  $ScriptPath = Split-Path -Parent $MyInvocation.MyCommand.Path
@@ -53,11 +65,13 @@ if (Test-Path $ProviderFile) {
53
65
  $ProviderScript = ""
54
66
 
55
67
  switch ($ActiveProvider) {
56
- "windows-sapi" {
57
- $ProviderScript = "$HooksDir\play-tts-windows-sapi.ps1"
68
+ { $_ -in "sapi", "windows-sapi" } {
69
+ $ProviderScript = "$HooksDir\play-tts-sapi.ps1"
70
+ if (-not (Test-Path $ProviderScript)) { $ProviderScript = "$HooksDir\play-tts-windows-sapi.ps1" }
58
71
  }
59
- "windows-piper" {
60
- $ProviderScript = "$HooksDir\play-tts-windows-piper.ps1"
72
+ { $_ -in "piper", "windows-piper" } {
73
+ $ProviderScript = "$HooksDir\play-tts-piper.ps1"
74
+ if (-not (Test-Path $ProviderScript)) { $ProviderScript = "$HooksDir\play-tts-windows-piper.ps1" }
61
75
  }
62
76
  "soprano" {
63
77
  $ProviderScript = "$HooksDir\play-tts-soprano.ps1"
@@ -83,6 +97,16 @@ if (Test-Path $BgEnabledFile) {
83
97
  $BgEnabled = (Get-Content $BgEnabledFile -Raw).Trim() -eq "true"
84
98
  }
85
99
 
100
+ # Per-message overrides from SSH/remote payload (set by the queue watcher).
101
+ # These allow remote senders (Hermes, SSH remote provider) to override music,
102
+ # volume, and effects for a single message without mutating persistent config.
103
+ $OverrideMusic = if ($env:AGENTVIBES_OVERRIDE_MUSIC) { $env:AGENTVIBES_OVERRIDE_MUSIC.Trim() } else { "" }
104
+ $OverrideVolume = if ($env:AGENTVIBES_OVERRIDE_VOLUME) { $env:AGENTVIBES_OVERRIDE_VOLUME.Trim() } else { "" }
105
+ $OverrideEffects = if ($env:AGENTVIBES_OVERRIDE_EFFECTS) { $env:AGENTVIBES_OVERRIDE_EFFECTS.Trim() } else { "" }
106
+
107
+ # If a music override is set, force background music on for this message
108
+ if ($OverrideMusic -ne "") { $BgEnabled = $true }
109
+
86
110
  # Check if reverb is enabled (allowlist validation)
87
111
  $ReverbLevel = "off"
88
112
  $ReverbFile = "$ConfigDir\reverb-level.txt"
@@ -92,6 +116,12 @@ if (Test-Path $ReverbFile) {
92
116
  $ReverbLevel = $reverbVal
93
117
  }
94
118
  }
119
+ # Per-message reverb override: AGENTVIBES_OVERRIDE_EFFECTS accepts a preset name
120
+ # ("off", "light", "medium", "heavy", "cathedral") — Sox effect strings are Linux-only
121
+ # and are silently ignored on Windows.
122
+ if ($OverrideEffects -ne "" -and $OverrideEffects -in @("off", "light", "medium", "heavy", "cathedral")) {
123
+ $ReverbLevel = $OverrideEffects
124
+ }
95
125
  $HasReverb = $ReverbLevel -ne "off"
96
126
 
97
127
  # Check ffmpeg availability for background music mixing or reverb
@@ -282,12 +312,14 @@ if ($env:AGENTVIBES_VERBOSE -eq "1") {
282
312
  # ffplay uses libswresample with sinc resampling — no artefacts.
283
313
  function Invoke-AudioPlay {
284
314
  param([string]$FilePath)
285
- $fp = (Get-Command ffplay -ErrorAction SilentlyContinue)?.Source
315
+ $ffplayCmd = Get-Command ffplay -ErrorAction SilentlyContinue
316
+ $fp = if ($ffplayCmd) { $ffplayCmd.Source } else { $null }
286
317
  if (-not $fp) {
287
318
  # Watcher sessions may inherit a minimal PATH — refresh from registry
288
319
  $env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" +
289
320
  [System.Environment]::GetEnvironmentVariable("Path","User")
290
- $fp = (Get-Command ffplay -ErrorAction SilentlyContinue)?.Source
321
+ $ffplayCmd = Get-Command ffplay -ErrorAction SilentlyContinue
322
+ $fp = if ($ffplayCmd) { $ffplayCmd.Source } else { $null }
291
323
  }
292
324
  if ($fp) {
293
325
  & $fp -autoexit -nodisp -loglevel quiet $FilePath 2>$null
@@ -364,6 +396,21 @@ if (($BgEnabled -or $HasReverb) -and $HasFfmpeg) {
364
396
  $DefaultTrack = $configTrack
365
397
  }
366
398
  }
399
+ # Per-message music override from remote payload (e.g. Hermes, SSH remote)
400
+ # Accepts full filename (e.g. "agent_vibes_bachata_v1_loop.mp3") or a
401
+ # keyword (e.g. "bachata") — keyword triggers a glob search in TracksDir.
402
+ if ($OverrideMusic -ne "") {
403
+ if ($OverrideMusic -match '^[a-zA-Z0-9_\-\.]+$') {
404
+ if ($OverrideMusic -match '\.mp3$') {
405
+ # Full filename — use directly
406
+ $DefaultTrack = $OverrideMusic
407
+ } else {
408
+ # Keyword — find first matching track file
409
+ $matched = Get-ChildItem -Path $TracksDir -Filter "*$OverrideMusic*" -File -ErrorAction SilentlyContinue | Select-Object -First 1
410
+ if ($matched) { $DefaultTrack = $matched.Name }
411
+ }
412
+ }
413
+ }
367
414
  $BgTrackPath = Join-Path $TracksDir $DefaultTrack
368
415
  # Path containment: verify resolved path stays within tracks directory
369
416
  $ResolvedBgTrack = [System.IO.Path]::GetFullPath($BgTrackPath)
@@ -372,13 +419,16 @@ if (($BgEnabled -or $HasReverb) -and $HasFfmpeg) {
372
419
  $BgTrackPath = Join-Path $TracksDir "agent_vibes_bachata_v1_loop.mp3"
373
420
  }
374
421
 
375
- # Get volume (default 0.25)
422
+ # Get volume (default 0.25) — per-message override takes precedence
376
423
  $BgVolume = "0.25"
377
424
  $VolumeFile = "$ConfigDir\background-music-volume.txt"
378
425
  if (Test-Path $VolumeFile) {
379
426
  $vol = (Get-Content $VolumeFile -Raw).Trim()
380
427
  if ($vol -match '^\d+\.?\d*$') { $BgVolume = $vol }
381
428
  }
429
+ if ($OverrideVolume -ne "" -and $OverrideVolume -match '^\d+\.?\d*$') {
430
+ $BgVolume = $OverrideVolume
431
+ }
382
432
 
383
433
  if (Test-Path $BgTrackPath) {
384
434
  $MixedFile = $RecentWav.FullName -replace '\.wav$', '-mixed.wav'
@@ -1 +1 @@
1
- /home/fire/.claude/piper-voices
1
+ /home/administrator/.claude/piper-voices
@@ -0,0 +1,326 @@
1
+ # 🎤 AgentVibes OpenClaw Skill
2
+
3
+ > **Give your voiceless server a voice!** Professional text-to-speech for OpenClaw AI agents running on remote servers, VPS, Mac Minis, or isolated hardware.
4
+
5
+ [![npm version](https://img.shields.io/npm/v/agentvibes)](https://www.npmjs.com/package/agentvibes)
6
+ [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
7
+
8
+ **Published by**: Paul Preibisch ([@997Fire](https://x.com/997Fire))
9
+ **ClawHub**: https://clawhub.ai/paulpreibisch/agentvibes-openclaw-skill
10
+ **Full Documentation**: https://github.com/paulpreibisch/AgentVibes#-openclaw-integration
11
+
12
+ ---
13
+
14
+ ## 🎯 What This Skill Does
15
+
16
+ AgentVibes adds **professional voice output** to your OpenClaw AI agent using intelligent text streaming—no matter where your agent is running (Mac Mini, VPS, old PC, cloud server).
17
+
18
+ ### The Problem
19
+
20
+ You've wisely deployed OpenClaw on isolated hardware for security. But now:
21
+ - Your server has no speakers
22
+ - Your AI agent is mute
23
+ - You're stuck reading text responses
24
+ - Mobile development is clunky
25
+
26
+ ### The Solution
27
+
28
+ **Text streaming architecture**: Server sends text → Your device generates voice locally
29
+
30
+ **Benefits:**
31
+ - ✅ 99.9% less bandwidth than audio streaming (200KB vs 800MB per 100 responses)
32
+ - ✅ Works on Linux, macOS, Android
33
+ - ✅ 50+ voices in 30+ languages (free, offline)
34
+ - ✅ Maintains security isolation
35
+ - ✅ Walk, commute, or multitask while your agent talks
36
+
37
+ ---
38
+
39
+ ## 🚀 Quick Start
40
+
41
+ ### 1. Install AgentVibes on Your OpenClaw Server
42
+
43
+ ```bash
44
+ # On your remote server where OpenClaw runs
45
+ npx agentvibes install
46
+ ```
47
+
48
+ This installs:
49
+ - Piper TTS engine (free, offline)
50
+ - 50+ professional AI voices
51
+ - Voice management slash commands
52
+ - Text streaming receiver support
53
+
54
+ ### 2. Test Voice Output
55
+
56
+ ```bash
57
+ # Test that TTS works
58
+ /agent-vibes:sample
59
+ ```
60
+
61
+ You should hear audio through your device speakers!
62
+
63
+ ### 3. Customize Your Voice (Optional)
64
+
65
+ ```bash
66
+ # List available voices
67
+ /agent-vibes:list
68
+
69
+ # Preview voices before choosing
70
+ /agent-vibes:preview 5
71
+
72
+ # Switch to your preferred voice
73
+ /agent-vibes:switch en_US-amy-medium
74
+ ```
75
+
76
+ ---
77
+
78
+ ## 📱 Mobile Setup (Walk & Talk)
79
+
80
+ Want your OpenClaw agent to speak to you while walking? Set up the **AgentVibes Receiver**:
81
+
82
+ ### For Android (Termux)
83
+
84
+ ```bash
85
+ # On your Android phone
86
+ pkg install termux-api openssh python
87
+ pip install agentvibes
88
+
89
+ # On your server, configure SSH host
90
+ echo "android" > ~/.claude/ssh-remote-host.txt
91
+ ```
92
+
93
+ Now text streams to your phone, generates voice locally, and plays through headphones—no button presses needed!
94
+
95
+ **Full mobile setup**: https://github.com/paulpreibisch/AgentVibes#-openclaw-integration
96
+
97
+ ---
98
+
99
+ ## 🎭 Available Voices
100
+
101
+ ### English Voices
102
+ - `en_US-lessac-medium` - Default male (clear, professional)
103
+ - `en_US-amy-medium` - Friendly female
104
+ - `en_US-ryan-high` - High quality male
105
+ - `en_GB-alan-medium` - British male
106
+
107
+ ### Romance Languages
108
+ - `es_ES-davefx-medium` - Spanish (Spain)
109
+ - `fr_FR-siwis-medium` - French female
110
+ - `it_IT-riccardo-x_low` - Italian male
111
+ - `pt_BR-faber-medium` - Portuguese (Brazilian)
112
+
113
+ ### Asian Languages
114
+ - `ja_JP-ayanami-medium` - Japanese female
115
+ - `zh_CN-huayan-x_low` - Chinese female
116
+ - `ko_KR-kss-medium` - Korean female
117
+
118
+ **And 40+ more voices in 30+ languages!**
119
+
120
+ ---
121
+
122
+ ## 🎮 Voice Control Commands
123
+
124
+ All commands available in OpenClaw chat:
125
+
126
+ ### Voice Selection
127
+ ```bash
128
+ /agent-vibes:list # Show all voices
129
+ /agent-vibes:preview 5 # Preview first 5 voices
130
+ /agent-vibes:switch <voice> # Change voice
131
+ /agent-vibes:get # Show current voice
132
+ ```
133
+
134
+ ### Playback Control
135
+ ```bash
136
+ /agent-vibes:mute # Silence TTS
137
+ /agent-vibes:unmute # Restore voice
138
+ /agent-vibes:replay # Replay last audio
139
+ /agent-vibes:replay 2 # Replay 2nd-to-last
140
+ ```
141
+
142
+ ### Advanced
143
+ ```bash
144
+ /agent-vibes:provider list # Show TTS providers
145
+ /agent-vibes:set-speed 1.2 # Adjust speech rate
146
+ /agent-vibes:personality # Set voice personality
147
+ /agent-vibes:verbosity high # Control how much AI speaks
148
+ ```
149
+
150
+ ---
151
+
152
+ ## 🔧 Common Use Cases
153
+
154
+ ### 1. Code Reviews on the Go
155
+ Walk to a meeting while your AI agent reviews PRs and explains issues verbally.
156
+
157
+ ### 2. Hands-Free Development
158
+ Cook dinner while monitoring deployment status or test results via voice.
159
+
160
+ ### 3. Commute Learning
161
+ Study new frameworks during your commute—have your agent explain concepts aloud.
162
+
163
+ ### 4. Multi-Language Development
164
+ Switch to Spanish, French, or Japanese voices to hear code comments in native languages.
165
+
166
+ ### 5. Accessibility
167
+ Fully accessible voice interface for developers who benefit from audio feedback.
168
+
169
+ ---
170
+
171
+ ## 🔒 Security Considerations
172
+
173
+ **⚠️ CRITICAL**: If running OpenClaw on a remote server, read the security guide:
174
+
175
+ https://github.com/paulpreibisch/AgentVibes/blob/master/docs/security-hardening-guide.md
176
+
177
+ **Required security measures:**
178
+ - SSH key-only authentication
179
+ - Non-standard SSH port (e.g., 2222)
180
+ - Firewall configuration (UFW/iptables)
181
+ - Fail2ban for intrusion prevention
182
+ - VPN tunneling (Tailscale recommended)
183
+
184
+ **Never expose OpenClaw directly to the internet without hardening.**
185
+
186
+ ---
187
+
188
+ ## 🌍 Deployment Options
189
+
190
+ AgentVibes works on all isolated OpenClaw deployments:
191
+
192
+ ### Mac Mini
193
+ ```bash
194
+ # On your Mac Mini
195
+ npx agentvibes install
196
+ ```
197
+
198
+ ### VPS (AWS, DigitalOcean, Database Mart, etc.)
199
+ ```bash
200
+ # On your cloud server
201
+ npx agentvibes install
202
+ ```
203
+
204
+ ### Old PC/Laptop (Repurposed Hardware)
205
+ ```bash
206
+ # On your dedicated machine
207
+ npx agentvibes install
208
+ ```
209
+
210
+ ### Docker Container
211
+ ```bash
212
+ # Inside your OpenClaw container
213
+ npx agentvibes install
214
+ ```
215
+
216
+ ---
217
+
218
+ ## 📊 Bandwidth Comparison
219
+
220
+ **Traditional audio streaming:**
221
+ - 8MB per response
222
+ - 800MB per 100 responses
223
+ - Expensive over cellular
224
+
225
+ **AgentVibes text streaming:**
226
+ - 2KB per response
227
+ - 200KB per 100 responses
228
+ - Negligible cellular cost
229
+
230
+ **Savings: 99.975% bandwidth reduction**
231
+
232
+ ---
233
+
234
+ ## 🆘 Troubleshooting
235
+
236
+ ### No Audio Output
237
+
238
+ ```bash
239
+ # Check if Piper is installed
240
+ which piper
241
+
242
+ # Test audio directly
243
+ echo "Hello world" | piper --model en_US-lessac-medium --output_file test.wav
244
+ aplay test.wav # Linux
245
+ afplay test.wav # macOS
246
+ ```
247
+
248
+ ### Voice Not Found
249
+
250
+ ```bash
251
+ # List installed voices
252
+ /agent-vibes:list
253
+
254
+ # Download voice if missing
255
+ npx agentvibes install
256
+ ```
257
+
258
+ ### SSH Audio Issues
259
+
260
+ ```bash
261
+ # Verify SSH connection
262
+ ssh your-server "echo Connected"
263
+
264
+ # Check receiver script
265
+ ls ~/.termux/agentvibes-play.sh # Android
266
+ ls ~/.agentvibes/play-remote.sh # Linux/macOS
267
+ ```
268
+
269
+ **Full troubleshooting guide**: https://github.com/paulpreibisch/AgentVibes/blob/master/docs/troubleshooting.md
270
+
271
+ ---
272
+
273
+ ## 📚 Additional Documentation
274
+
275
+ ### Full Guides
276
+ - **Main README**: https://github.com/paulpreibisch/AgentVibes
277
+ - **OpenClaw Integration**: https://github.com/paulpreibisch/AgentVibes#-openclaw-integration
278
+ - **Security Hardening**: https://github.com/paulpreibisch/AgentVibes/blob/master/docs/security-hardening-guide.md
279
+ - **Voice Library**: https://github.com/paulpreibisch/AgentVibes/blob/master/docs/voice-library.md
280
+ - **Troubleshooting**: https://github.com/paulpreibisch/AgentVibes/blob/master/docs/troubleshooting.md
281
+
282
+ ### Community
283
+ - **GitHub Issues**: https://github.com/paulpreibisch/AgentVibes/issues
284
+ - **GitHub Discussions**: https://github.com/paulpreibisch/AgentVibes/discussions
285
+ - **Website**: https://agentvibes.org
286
+
287
+ ---
288
+
289
+ ## 🤝 Contributing
290
+
291
+ AgentVibes is open source (Apache 2.0)! Contributions welcome:
292
+
293
+ - 🐛 Report bugs
294
+ - 💡 Suggest features
295
+ - 🌍 Add voice translations
296
+ - 📝 Improve documentation
297
+ - 🔧 Submit pull requests
298
+
299
+ **Repository**: https://github.com/paulpreibisch/AgentVibes
300
+
301
+ ---
302
+
303
+ ## 📄 License
304
+
305
+ Apache License 2.0 - see [LICENSE](https://github.com/paulpreibisch/AgentVibes/blob/master/LICENSE)
306
+
307
+ ---
308
+
309
+ ## 🙏 Credits
310
+
311
+ **Created by**: Paul Preibisch
312
+ **Twitter/X**: [@997Fire](https://x.com/997Fire)
313
+ **Website**: https://agentvibes.org
314
+
315
+ **Powered by**:
316
+ - [Piper TTS](https://github.com/rhasspy/piper) - Fast, offline neural TTS
317
+ - [Hugging Face Voice Models](https://huggingface.co/rhasspy/piper-voices) - 50+ AI voices
318
+ - [OpenClaw](https://openclaw.ai) - AI assistant framework
319
+
320
+ ---
321
+
322
+ **⭐ If you find AgentVibes useful, please star the repo on GitHub!**
323
+
324
+ https://github.com/paulpreibisch/AgentVibes
325
+
326
+ Thank you for using AgentVibes! 🎤✨
package/.mcp.json CHANGED
@@ -1,38 +1,28 @@
1
1
  {
2
2
  "mcpServers": {
3
- "context7": {
3
+ "agentvibes": {
4
+ "command": "npx",
5
+ "args": [
6
+ "-y",
7
+ "--package=agentvibes",
8
+ "agentvibes-mcp-server"
9
+ ]
10
+ },
11
+ "firecrawl": {
4
12
  "command": "npx",
5
- "args": ["@upstash/context7-mcp"]
13
+ "args": [
14
+ "firecrawl-mcp"
15
+ ]
6
16
  },
7
- "sonarqube": {
8
- "command": "docker",
17
+ "context7": {
18
+ "command": "npx",
9
19
  "args": [
10
- "run",
11
- "-i",
12
- "--name",
13
- "sonarqube-mcp-server-agentvibes",
14
- "--rm",
15
- "--dns",
16
- "8.8.8.8",
17
- "--dns",
18
- "8.8.4.4",
19
- "-e",
20
- "SONARQUBE_TOKEN",
21
- "-e",
22
- "SONARQUBE_ORG",
23
- "-e",
24
- "STORAGE_PATH",
25
- "mcp/sonarqube"
20
+ "-y",
21
+ "@upstash/context7-mcp"
26
22
  ],
27
23
  "env": {
28
- "SONARQUBE_TOKEN": "${SONARQUBE_TOKEN}",
29
- "SONARQUBE_ORG": "${SONARQUBE_ORG}",
30
- "STORAGE_PATH": "${STORAGE_PATH}"
24
+ "CONTEXT7_API_KEY": "${CONTEXT7_API_KEY}"
31
25
  }
32
- },
33
- "vercel": {
34
- "type": "sse",
35
- "url": "https://mcp.vercel.com"
36
26
  }
37
27
  }
38
28
  }
package/README.md CHANGED
@@ -11,7 +11,7 @@
11
11
  [![Publish](https://github.com/paulpreibisch/AgentVibes/actions/workflows/publish.yml/badge.svg)](https://github.com/paulpreibisch/AgentVibes/actions/workflows/publish.yml)
12
12
  [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
13
13
 
14
- **Author**: Paul Preibisch ([@997Fire](https://x.com/997Fire)) | **Version**: v5.6
14
+ **Author**: Paul Preibisch ([@997Fire](https://x.com/997Fire)) | **Version**: v5.6.2
15
15
 
16
16
  ---
17
17
 
@@ -40,7 +40,20 @@ Whether you're coding in Claude Code, chatting in Claude Desktop, using Warp Ter
40
40
 
41
41
  ---
42
42
 
43
- ## 🌟 NEW IN v5.5 — Per-LLM Audio Routing
43
+ ## 🌟 NEW IN v5.6.2 — Per-Message Audio Control
44
+
45
+ Remote senders (Hermes, SSH remote provider) can now control **voice, music, reverb, and volume per message** — no persistent config changes needed. Pass any field in the JSON payload and the Windows receiver applies it for that message only.
46
+
47
+ ## v5.6.1 — Hermes Agent Integration
48
+
49
+ AgentVibes now speaks for **[Hermes Agent](https://github.com/NousResearch/hermes-agent)** — the self-hosted, self-improving AI assistant. Two production-ready skills ship in `docs/hermes/skills/`:
50
+
51
+ - **`hermes-agentvibes-hook`** — Auto-speaks every Hermes response via AgentVibes TTS. Fires on `agent:end`, strips markdown, rate-limits, and ships with full SSH MITM protection
52
+ - **`agentvibes-target`** — Teaches Hermes to send any text to your speakers on demand, supporting laptop and Android targets
53
+
54
+ Also in this release: Windows PS5.1 compatibility fixes for `play-tts.ps1`, modal/hotkey repairs, and BMAD tab now shows all agents.
55
+
56
+ ## v5.5 — Per-LLM Audio Routing
44
57
 
45
58
  Give **each LLM its own voice, pretext, and music** — Claude Code, Copilot, and Codex can all sound different without touching global settings.
46
59
 
package/RELEASE_NOTES.md CHANGED
@@ -1,5 +1,69 @@
1
1
  # AgentVibes Release Notes
2
2
 
3
+ ## 🎛️ v5.6.2 — Per-Message Audio Control for Remote Providers
4
+
5
+ **Released:** 2026-05-02
6
+
7
+ ### 🎉 Per-Message Override: Voice, Music, Reverb, Volume
8
+
9
+ Remote senders (Hermes, SSH remote provider) can now control every audio parameter **per message** without touching the receiver's persistent config:
10
+
11
+ - **Music** — pass `"music": "bachata"` (keyword) or full filename to switch background track for that message
12
+ - **Volume** — pass `"volume": "0.35"` to adjust music volume for that message
13
+ - **Reverb** — pass `"effects": "medium"` (`off`/`light`/`medium`/`heavy`/`cathedral`) to set reverb per message
14
+ - **Voice** — already worked; now documented with full field reference
15
+ - **Pretext** — pass `"pretext": ""` to suppress the intro prefix for a single message
16
+
17
+ Previously these fields were parsed by the receiver and queued but **never applied** — `play-tts.ps1` didn't read the `AGENTVIBES_OVERRIDE_*` env vars the watcher set. Fixed.
18
+
19
+ ### 📚 Hermes Skill: Full Payload Field Reference
20
+
21
+ `agentvibes-target` SKILL.md now documents all 9 JSON payload fields with examples so Hermes (or any AI agent) can say "switch to chillwave", "add reverb", "use a female voice", "remove the intro prefix" — and it just works.
22
+
23
+ ### 🐛 Hermes Hook: handler.py + HOOK.yaml now ship in the package
24
+
25
+ `docs/hermes/skills/tts/hermes-agentvibes-hook/` was missing `handler.py` and `HOOK.yaml` — only `SKILL.md` was included. Both files now ship. `handler.py` also reads `AGENTVIBES_MUSIC` from the environment so the default background music is configurable without editing the file.
26
+
27
+ ---
28
+
29
+ ## 🤖 v5.6.1 — Hermes Agent Integration & Windows PS5.1 Fixes
30
+
31
+ **Released:** 2026-05-01
32
+
33
+ ### 🎉 Hermes Agent Integration (New!)
34
+
35
+ AgentVibes now officially supports **[Hermes Agent](https://github.com/NousResearch/hermes-agent)** — the self-hosted, self-improving AI assistant. Two production-ready Hermes skills ship in `docs/hermes/skills/`:
36
+
37
+ **`hermes-agentvibes-hook`** — Auto-speaks every Hermes response via AgentVibes
38
+ - Fires on every `agent:end` event (Telegram, Discord, CLI, etc.)
39
+ - Strips markdown, code blocks, emoji before speaking
40
+ - Truncates at word boundaries, rate-limits to prevent queue flooding
41
+ - MITM-safe SSH with `StrictHostKeyChecking=accept-new` + persistent `known_hosts`
42
+ - Full logging to `tts-hook.log` for debugging
43
+
44
+ **`agentvibes-target`** — Teaches Hermes to send any text to your speakers on demand
45
+ - Base64 JSON payload over SSH (same ForceCommand architecture as the Windows receiver)
46
+ - Supports Windows and Android targets
47
+ - Detailed troubleshooting guide included
48
+
49
+ **Install:** Copy the skill to your Hermes home and restart the gateway:
50
+ ```bash
51
+ cp -r docs/hermes/skills/tts/hermes-agentvibes-hook ~/.hermes/skills/tts/
52
+ hermes gateway restart
53
+ ```
54
+
55
+ ### 🐛 Windows PS5.1 Bug Fixes
56
+
57
+ - **play-tts.ps1 PS5.1 compatibility** — Fixed three regressions from v5.6.0 rebase:
58
+ replaced PS7 null-conditional (`?.`) with PS5.1-compatible if/else, added UTF-8 BOM so
59
+ em-dash literals aren't mangled by CP1252, restored piper provider alias and
60
+ `AGENTVIBES_TEXT_FILE` sentinel lost in merge
61
+ - **Modal & hotkey fixes** — Modal escape key, navigation hotkeys, Q+Caps Lock, and voice
62
+ preview error handling all repaired
63
+ - **BMAD tab** — Now shows all agents regardless of module
64
+
65
+ ---
66
+
3
67
  ## 📸 v5.6.0 — TUI Screenshots & Documentation Cleanup
4
68
 
5
69
  **Released:** 2026-04-28