agentvibes 2.0.17-beta.2 → 2.0.17-beta.21

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 (339) hide show
  1. package/.bmad-core/agent-teams/team-all.yaml +15 -0
  2. package/.bmad-core/agent-teams/team-fullstack.yaml +19 -0
  3. package/.bmad-core/agent-teams/team-ide-minimal.yaml +11 -0
  4. package/.bmad-core/agent-teams/team-no-ui.yaml +14 -0
  5. package/.bmad-core/agents/analyst.md +84 -0
  6. package/.bmad-core/agents/architect.md +85 -0
  7. package/.bmad-core/agents/bmad-master.md +110 -0
  8. package/.bmad-core/agents/bmad-orchestrator.md +147 -0
  9. package/.bmad-core/agents/dev.md +81 -0
  10. package/.bmad-core/agents/pm.md +84 -0
  11. package/.bmad-core/agents/po.md +79 -0
  12. package/.bmad-core/agents/qa.md +87 -0
  13. package/.bmad-core/agents/sm.md +65 -0
  14. package/.bmad-core/agents/ux-expert.md +69 -0
  15. package/.bmad-core/checklists/architect-checklist.md +440 -0
  16. package/.bmad-core/checklists/change-checklist.md +184 -0
  17. package/.bmad-core/checklists/pm-checklist.md +372 -0
  18. package/.bmad-core/checklists/po-master-checklist.md +434 -0
  19. package/.bmad-core/checklists/story-dod-checklist.md +96 -0
  20. package/.bmad-core/checklists/story-draft-checklist.md +155 -0
  21. package/.bmad-core/core-config.yaml +22 -0
  22. package/.bmad-core/data/bmad-kb.md +809 -0
  23. package/.bmad-core/data/brainstorming-techniques.md +38 -0
  24. package/.bmad-core/data/elicitation-methods.md +156 -0
  25. package/.bmad-core/data/technical-preferences.md +5 -0
  26. package/.bmad-core/data/test-levels-framework.md +148 -0
  27. package/.bmad-core/data/test-priorities-matrix.md +174 -0
  28. package/.bmad-core/enhanced-ide-development-workflow.md +248 -0
  29. package/.bmad-core/install-manifest.yaml +230 -0
  30. package/.bmad-core/tasks/advanced-elicitation.md +119 -0
  31. package/.bmad-core/tasks/apply-qa-fixes.md +150 -0
  32. package/.bmad-core/tasks/brownfield-create-epic.md +162 -0
  33. package/.bmad-core/tasks/brownfield-create-story.md +149 -0
  34. package/.bmad-core/tasks/correct-course.md +72 -0
  35. package/.bmad-core/tasks/create-brownfield-story.md +314 -0
  36. package/.bmad-core/tasks/create-deep-research-prompt.md +280 -0
  37. package/.bmad-core/tasks/create-doc.md +103 -0
  38. package/.bmad-core/tasks/create-next-story.md +114 -0
  39. package/.bmad-core/tasks/document-project.md +345 -0
  40. package/.bmad-core/tasks/execute-checklist.md +88 -0
  41. package/.bmad-core/tasks/facilitate-brainstorming-session.md +138 -0
  42. package/.bmad-core/tasks/generate-ai-frontend-prompt.md +53 -0
  43. package/.bmad-core/tasks/index-docs.md +175 -0
  44. package/.bmad-core/tasks/kb-mode-interaction.md +77 -0
  45. package/.bmad-core/tasks/nfr-assess.md +345 -0
  46. package/.bmad-core/tasks/qa-gate.md +163 -0
  47. package/.bmad-core/tasks/review-story.md +316 -0
  48. package/.bmad-core/tasks/risk-profile.md +355 -0
  49. package/.bmad-core/tasks/shard-doc.md +187 -0
  50. package/.bmad-core/tasks/test-design.md +176 -0
  51. package/.bmad-core/tasks/trace-requirements.md +266 -0
  52. package/.bmad-core/tasks/validate-next-story.md +136 -0
  53. package/.bmad-core/templates/architecture-tmpl.yaml +651 -0
  54. package/.bmad-core/templates/brainstorming-output-tmpl.yaml +156 -0
  55. package/.bmad-core/templates/brownfield-architecture-tmpl.yaml +477 -0
  56. package/.bmad-core/templates/brownfield-prd-tmpl.yaml +281 -0
  57. package/.bmad-core/templates/competitor-analysis-tmpl.yaml +307 -0
  58. package/.bmad-core/templates/front-end-architecture-tmpl.yaml +219 -0
  59. package/.bmad-core/templates/front-end-spec-tmpl.yaml +350 -0
  60. package/.bmad-core/templates/fullstack-architecture-tmpl.yaml +824 -0
  61. package/.bmad-core/templates/market-research-tmpl.yaml +253 -0
  62. package/.bmad-core/templates/prd-tmpl.yaml +203 -0
  63. package/.bmad-core/templates/project-brief-tmpl.yaml +222 -0
  64. package/.bmad-core/templates/qa-gate-tmpl.yaml +103 -0
  65. package/.bmad-core/templates/story-tmpl.yaml +138 -0
  66. package/.bmad-core/user-guide.md +577 -0
  67. package/.bmad-core/utils/bmad-doc-template.md +327 -0
  68. package/.bmad-core/utils/workflow-management.md +71 -0
  69. package/.bmad-core/workflows/brownfield-fullstack.yaml +298 -0
  70. package/.bmad-core/workflows/brownfield-service.yaml +188 -0
  71. package/.bmad-core/workflows/brownfield-ui.yaml +198 -0
  72. package/.bmad-core/workflows/greenfield-fullstack.yaml +241 -0
  73. package/.bmad-core/workflows/greenfield-service.yaml +207 -0
  74. package/.bmad-core/workflows/greenfield-ui.yaml +236 -0
  75. package/.bmad-core/working-in-the-brownfield.md +606 -0
  76. package/.claude/commands/BMad/agents/analyst.md +88 -0
  77. package/.claude/commands/BMad/agents/architect.md +89 -0
  78. package/.claude/commands/BMad/agents/bmad-master.md +114 -0
  79. package/.claude/commands/BMad/agents/bmad-orchestrator.md +151 -0
  80. package/.claude/commands/BMad/agents/dev.md +85 -0
  81. package/.claude/commands/BMad/agents/pm.md +88 -0
  82. package/.claude/commands/BMad/agents/po.md +83 -0
  83. package/.claude/commands/BMad/agents/qa.md +91 -0
  84. package/.claude/commands/BMad/agents/sm.md +69 -0
  85. package/.claude/commands/BMad/agents/ux-expert.md +73 -0
  86. package/.claude/commands/BMad/tasks/advanced-elicitation.md +123 -0
  87. package/.claude/commands/BMad/tasks/apply-qa-fixes.md +154 -0
  88. package/.claude/commands/BMad/tasks/brownfield-create-epic.md +166 -0
  89. package/.claude/commands/BMad/tasks/brownfield-create-story.md +153 -0
  90. package/.claude/commands/BMad/tasks/correct-course.md +76 -0
  91. package/.claude/commands/BMad/tasks/create-brownfield-story.md +318 -0
  92. package/.claude/commands/BMad/tasks/create-deep-research-prompt.md +284 -0
  93. package/.claude/commands/BMad/tasks/create-doc.md +107 -0
  94. package/.claude/commands/BMad/tasks/create-next-story.md +118 -0
  95. package/.claude/commands/BMad/tasks/document-project.md +349 -0
  96. package/.claude/commands/BMad/tasks/execute-checklist.md +92 -0
  97. package/.claude/commands/BMad/tasks/facilitate-brainstorming-session.md +142 -0
  98. package/.claude/commands/BMad/tasks/generate-ai-frontend-prompt.md +57 -0
  99. package/.claude/commands/BMad/tasks/index-docs.md +179 -0
  100. package/.claude/commands/BMad/tasks/kb-mode-interaction.md +81 -0
  101. package/.claude/commands/BMad/tasks/nfr-assess.md +349 -0
  102. package/.claude/commands/BMad/tasks/qa-gate.md +167 -0
  103. package/.claude/commands/BMad/tasks/review-story.md +320 -0
  104. package/.claude/commands/BMad/tasks/risk-profile.md +359 -0
  105. package/.claude/commands/BMad/tasks/shard-doc.md +191 -0
  106. package/.claude/commands/BMad/tasks/test-design.md +180 -0
  107. package/.claude/commands/BMad/tasks/trace-requirements.md +270 -0
  108. package/.claude/commands/BMad/tasks/validate-next-story.md +140 -0
  109. package/.claude/commands/agent-vibes/add.md +0 -0
  110. package/.claude/commands/agent-vibes/agent-vibes.md +0 -0
  111. package/.claude/commands/agent-vibes/bmad.md +0 -0
  112. package/.claude/commands/agent-vibes/commands.json +24 -0
  113. package/.claude/commands/agent-vibes/get.md +0 -0
  114. package/.claude/commands/agent-vibes/language.md +23 -0
  115. package/.claude/commands/agent-vibes/learn.md +67 -0
  116. package/.claude/commands/agent-vibes/list.md +0 -0
  117. package/.claude/commands/agent-vibes/personality.md +0 -0
  118. package/.claude/commands/agent-vibes/preview.md +0 -0
  119. package/.claude/commands/agent-vibes/replay-target.md +14 -0
  120. package/.claude/commands/agent-vibes/replay.md +0 -0
  121. package/.claude/commands/agent-vibes/sample.md +0 -0
  122. package/.claude/commands/agent-vibes/sentiment.md +0 -0
  123. package/.claude/commands/agent-vibes/set-language.md +0 -0
  124. package/.claude/commands/agent-vibes/set-pretext.md +0 -0
  125. package/.claude/commands/agent-vibes/set-speed.md +41 -0
  126. package/.claude/commands/agent-vibes/switch.md +0 -0
  127. package/.claude/commands/agent-vibes/target-voice.md +26 -0
  128. package/.claude/commands/agent-vibes/target.md +30 -0
  129. package/.claude/commands/agent-vibes/update.md +0 -0
  130. package/.claude/commands/agent-vibes/version.md +0 -0
  131. package/.claude/commands/agent-vibes/whoami.md +0 -0
  132. package/.claude/github-star-reminder.txt +1 -1
  133. package/.claude/hooks/language-manager.sh +167 -13
  134. package/.claude/hooks/learn-manager.sh +443 -0
  135. package/.claude/hooks/play-tts-elevenlabs.sh +52 -8
  136. package/.claude/hooks/play-tts-piper.sh +82 -8
  137. package/.claude/hooks/play-tts.sh +30 -4
  138. package/.claude/hooks/provider-commands.sh +46 -3
  139. package/.claude/hooks/provider-manager.sh +56 -4
  140. package/.claude/hooks/replay-target-audio.sh +64 -0
  141. package/.claude/hooks/speed-manager.sh +226 -0
  142. package/.claude/language-voices.yaml +0 -0
  143. package/.claude/output-styles/agent-vibes.md +0 -0
  144. package/.claude/personalities/angry.md +0 -0
  145. package/.claude/personalities/annoying.md +0 -0
  146. package/.claude/personalities/crass.md +0 -0
  147. package/.claude/personalities/dramatic.md +0 -0
  148. package/.claude/personalities/dry-humor.md +0 -0
  149. package/.claude/personalities/flirty.md +0 -0
  150. package/.claude/personalities/funny.md +0 -0
  151. package/.claude/personalities/grandpa.md +0 -0
  152. package/.claude/personalities/millennial.md +0 -0
  153. package/.claude/personalities/moody.md +0 -0
  154. package/.claude/personalities/normal.md +0 -0
  155. package/.claude/personalities/pirate.md +0 -0
  156. package/.claude/personalities/poetic.md +0 -0
  157. package/.claude/personalities/professional.md +0 -0
  158. package/.claude/personalities/robot.md +0 -0
  159. package/.claude/personalities/sarcastic.md +0 -0
  160. package/.claude/personalities/sassy.md +0 -0
  161. package/.claude/personalities/surfer-dude.md +0 -0
  162. package/.claude/personalities/zen.md +0 -0
  163. package/.claude/piper-voices/en_US-lessac-medium.onnx +0 -0
  164. package/.claude/piper-voices/en_US-lessac-medium.onnx.json +0 -0
  165. package/.claude/piper-voices-dir.txt +0 -0
  166. package/.claude/plugins/bmad-voices-enabled.flag +0 -0
  167. package/.claude/plugins/bmad-voices.md +0 -0
  168. package/.mcp-minimal.json +6 -8
  169. package/AUDIO_TUNNEL_FIX_SUMMARY.md +0 -0
  170. package/INSTALL_MCP_WINDOWS.md +120 -42
  171. package/LICENSE +0 -0
  172. package/NPM_PUBLISH_GUIDE.md +0 -0
  173. package/README.md +19 -6
  174. package/RELEASE_NOTES.md +97 -0
  175. package/RELEASE_NOTES_V2.md +136 -5
  176. package/agentvibes.org/.claude/commands/agent-vibes/add.md +21 -0
  177. package/agentvibes.org/.claude/commands/agent-vibes/agent-vibes.md +68 -0
  178. package/agentvibes.org/.claude/commands/agent-vibes/commands.json +53 -0
  179. package/agentvibes.org/.claude/commands/agent-vibes/get.md +9 -0
  180. package/agentvibes.org/.claude/commands/agent-vibes/list.md +13 -0
  181. package/agentvibes.org/.claude/commands/agent-vibes/personality.md +79 -0
  182. package/agentvibes.org/.claude/commands/agent-vibes/preview.md +16 -0
  183. package/agentvibes.org/.claude/commands/agent-vibes/provider.md +54 -0
  184. package/agentvibes.org/.claude/commands/agent-vibes/replay.md +19 -0
  185. package/agentvibes.org/.claude/commands/agent-vibes/sample.md +12 -0
  186. package/agentvibes.org/.claude/commands/agent-vibes/sentiment.md +52 -0
  187. package/agentvibes.org/.claude/commands/agent-vibes/set-language.md +47 -0
  188. package/agentvibes.org/.claude/commands/agent-vibes/set-pretext.md +65 -0
  189. package/agentvibes.org/.claude/commands/agent-vibes/switch.md +53 -0
  190. package/agentvibes.org/.claude/commands/agent-vibes/update.md +20 -0
  191. package/agentvibes.org/.claude/commands/agent-vibes/version.md +10 -0
  192. package/agentvibes.org/.claude/commands/agent-vibes/whoami.md +7 -0
  193. package/agentvibes.org/.claude/hooks/bmad-voice-manager.sh +278 -0
  194. package/agentvibes.org/.claude/hooks/language-manager.sh +190 -0
  195. package/agentvibes.org/.claude/hooks/personality-manager.sh +279 -0
  196. package/agentvibes.org/.claude/hooks/piper-download-voices.sh +133 -0
  197. package/agentvibes.org/.claude/hooks/piper-voice-manager.sh +227 -0
  198. package/agentvibes.org/.claude/hooks/play-tts-elevenlabs.sh +201 -0
  199. package/agentvibes.org/.claude/hooks/play-tts-piper.sh +175 -0
  200. package/agentvibes.org/.claude/hooks/play-tts.sh +138 -0
  201. package/agentvibes.org/.claude/hooks/provider-commands.sh +374 -0
  202. package/agentvibes.org/.claude/hooks/provider-manager.sh +196 -0
  203. package/agentvibes.org/.claude/hooks/sentiment-manager.sh +163 -0
  204. package/agentvibes.org/.claude/hooks/voice-manager.sh +349 -0
  205. package/agentvibes.org/.claude/hooks/voices-config.sh +33 -0
  206. package/agentvibes.org/.claude/journal/2025-10-07.html +373 -0
  207. package/agentvibes.org/.claude/journal/index.html +91 -0
  208. package/agentvibes.org/.claude/output-styles/agent-vibes.md +203 -0
  209. package/agentvibes.org/.claude/personalities/angry.md +16 -0
  210. package/agentvibes.org/.claude/personalities/annoying.md +16 -0
  211. package/agentvibes.org/.claude/personalities/crass.md +16 -0
  212. package/agentvibes.org/.claude/personalities/dramatic.md +16 -0
  213. package/agentvibes.org/.claude/personalities/dry-humor.md +52 -0
  214. package/agentvibes.org/.claude/personalities/flirty.md +22 -0
  215. package/agentvibes.org/.claude/personalities/funny.md +16 -0
  216. package/agentvibes.org/.claude/personalities/grandpa.md +34 -0
  217. package/agentvibes.org/.claude/personalities/millennial.md +16 -0
  218. package/agentvibes.org/.claude/personalities/moody.md +16 -0
  219. package/agentvibes.org/.claude/personalities/normal.md +18 -0
  220. package/agentvibes.org/.claude/personalities/pirate.md +16 -0
  221. package/agentvibes.org/.claude/personalities/poetic.md +16 -0
  222. package/agentvibes.org/.claude/personalities/professional.md +16 -0
  223. package/agentvibes.org/.claude/personalities/robot.md +16 -0
  224. package/agentvibes.org/.claude/personalities/sarcastic.md +40 -0
  225. package/agentvibes.org/.claude/personalities/sassy.md +16 -0
  226. package/agentvibes.org/.claude/personalities/surfer-dude.md +16 -0
  227. package/agentvibes.org/.claude/personalities/zen.md +16 -0
  228. package/agentvibes.org/.mcp-minimal.json +60 -0
  229. package/agentvibes.org/CHANGELOG.md +56 -0
  230. package/agentvibes.org/README.md +93 -0
  231. package/agentvibes.org/app/(auth)/layout.tsx +15 -0
  232. package/agentvibes.org/app/(auth)/reset-password/page.tsx +45 -0
  233. package/agentvibes.org/app/(auth)/signin/page.tsx +82 -0
  234. package/agentvibes.org/app/(auth)/signup/page.tsx +104 -0
  235. package/agentvibes.org/app/(default)/layout.tsx +31 -0
  236. package/agentvibes.org/app/(default)/page.tsx +20 -0
  237. package/agentvibes.org/app/api/hello/route.ts +3 -0
  238. package/agentvibes.org/app/css/additional-styles/theme.css +82 -0
  239. package/agentvibes.org/app/css/additional-styles/utility-patterns.css +55 -0
  240. package/agentvibes.org/app/css/style.css +100 -0
  241. package/agentvibes.org/app/layout.tsx +63 -0
  242. package/agentvibes.org/components/cta.tsx +58 -0
  243. package/agentvibes.org/components/features.tsx +256 -0
  244. package/agentvibes.org/components/hero-home.tsx +133 -0
  245. package/agentvibes.org/components/modal-video.tsx +137 -0
  246. package/agentvibes.org/components/page-illustration.tsx +55 -0
  247. package/agentvibes.org/components/spotlight.tsx +77 -0
  248. package/agentvibes.org/components/testimonials.tsx +282 -0
  249. package/agentvibes.org/components/ui/footer.tsx +82 -0
  250. package/agentvibes.org/components/ui/header.tsx +53 -0
  251. package/agentvibes.org/components/ui/logo.tsx +10 -0
  252. package/agentvibes.org/components/workflows.tsx +176 -0
  253. package/agentvibes.org/next.config.js +4 -0
  254. package/agentvibes.org/package-lock.json +1974 -0
  255. package/agentvibes.org/package.json +30 -0
  256. package/agentvibes.org/pnpm-lock.yaml +1141 -0
  257. package/agentvibes.org/postcss.config.js +5 -0
  258. package/agentvibes.org/public/audio/02-sarcastic.mp3 +0 -0
  259. package/agentvibes.org/public/audio/03-angry.mp3 +0 -0
  260. package/agentvibes.org/public/audio/04-grandpa.mp3 +0 -0
  261. package/agentvibes.org/public/audio/05-sarcastic-example2.mp3 +0 -0
  262. package/agentvibes.org/public/audio/french-rachel.mp3 +0 -0
  263. package/agentvibes.org/public/audio/spanish-antoni.mp3 +0 -0
  264. package/agentvibes.org/public/favicon.ico +0 -0
  265. package/agentvibes.org/public/fonts/nacelle-italic.woff2 +0 -0
  266. package/agentvibes.org/public/fonts/nacelle-regular.woff2 +0 -0
  267. package/agentvibes.org/public/fonts/nacelle-semibold.woff2 +0 -0
  268. package/agentvibes.org/public/fonts/nacelle-semibolditalic.woff2 +0 -0
  269. package/agentvibes.org/public/images/blurred-shape-gray.svg +1 -0
  270. package/agentvibes.org/public/images/blurred-shape.svg +1 -0
  271. package/agentvibes.org/public/images/client-logo-01.svg +1 -0
  272. package/agentvibes.org/public/images/client-logo-02.svg +1 -0
  273. package/agentvibes.org/public/images/client-logo-03.svg +1 -0
  274. package/agentvibes.org/public/images/client-logo-04.svg +1 -0
  275. package/agentvibes.org/public/images/client-logo-05.svg +1 -0
  276. package/agentvibes.org/public/images/client-logo-06.svg +1 -0
  277. package/agentvibes.org/public/images/client-logo-07.svg +1 -0
  278. package/agentvibes.org/public/images/client-logo-08.svg +1 -0
  279. package/agentvibes.org/public/images/client-logo-09.svg +1 -0
  280. package/agentvibes.org/public/images/features.png +0 -0
  281. package/agentvibes.org/public/images/footer-illustration.svg +1 -0
  282. package/agentvibes.org/public/images/hero-image-01.jpg +0 -0
  283. package/agentvibes.org/public/images/logo.svg +1 -0
  284. package/agentvibes.org/public/images/page-illustration.svg +1 -0
  285. package/agentvibes.org/public/images/secondary-illustration.svg +1 -0
  286. package/agentvibes.org/public/images/testimonial-01.jpg +0 -0
  287. package/agentvibes.org/public/images/testimonial-02.jpg +0 -0
  288. package/agentvibes.org/public/images/testimonial-03.jpg +0 -0
  289. package/agentvibes.org/public/images/testimonial-04.jpg +0 -0
  290. package/agentvibes.org/public/images/testimonial-05.jpg +0 -0
  291. package/agentvibes.org/public/images/testimonial-06.jpg +0 -0
  292. package/agentvibes.org/public/images/testimonial-07.jpg +0 -0
  293. package/agentvibes.org/public/images/testimonial-08.jpg +0 -0
  294. package/agentvibes.org/public/images/testimonial-09.jpg +0 -0
  295. package/agentvibes.org/public/images/workflow-01.png +0 -0
  296. package/agentvibes.org/public/images/workflow-02.png +0 -0
  297. package/agentvibes.org/public/images/workflow-03.png +0 -0
  298. package/agentvibes.org/public/videos/video.mp4 +0 -0
  299. package/agentvibes.org/tsconfig.json +28 -0
  300. package/agentvibes.org/utils/useMasonry.tsx +67 -0
  301. package/agentvibes.org/utils/useMousePosition.tsx +27 -0
  302. package/bin/mcp-server.js +122 -0
  303. package/docs/ai-optimized-documentation-standards.md +0 -0
  304. package/docs/architecture/provider-system.md +0 -0
  305. package/docs/remote-audio-setup.md +0 -0
  306. package/docs/voice-mapping-format.md +0 -0
  307. package/linkedin/vibe-coding-and-pulseaudio.md +121 -0
  308. package/mcp-server/QUICK_START.md +0 -0
  309. package/mcp-server/README.md +0 -0
  310. package/mcp-server/examples/claude_desktop_config.json +0 -0
  311. package/mcp-server/examples/claude_desktop_config_piper.json +0 -0
  312. package/mcp-server/examples/custom_instructions.md +0 -0
  313. package/mcp-server/pyproject.toml +0 -0
  314. package/mcp-server/requirements.txt +0 -0
  315. package/mcp-server/server.py +87 -25
  316. package/package.json +2 -2
  317. package/scripts/AUTO-MONITOR-SETUP.md +233 -0
  318. package/scripts/CHANGELOG-2025-10-16.md +268 -0
  319. package/scripts/README.md +114 -0
  320. package/scripts/TROUBLESHOOTING.md +258 -0
  321. package/scripts/audio-tunnel.config +17 -0
  322. package/scripts/audio-tunnel.config.example +18 -0
  323. package/scripts/fix-audio-tunnel-complete.sh +255 -0
  324. package/scripts/fix-audio-tunnel.sh +244 -54
  325. package/scripts/health-check-tunnel.sh +93 -0
  326. package/scripts/piper-voice/README.md +0 -0
  327. package/scripts/setup-auto-monitor.sh +86 -0
  328. package/scripts/setup-windows-audio.ps1 +0 -0
  329. package/src/commands/install-mcp.js +0 -0
  330. package/src/installer.js +18 -0
  331. package/templates/activation-instructions-bmad.md +0 -0
  332. package/templates/output-styles/agent-vibes.md +0 -0
  333. package/test/README.md +0 -0
  334. package/test/helpers/test-helper.bash +0 -0
  335. package/test/test-framework.md +0 -0
  336. package/test/unit/personality-manager.bats +0 -0
  337. package/test/unit/play-tts.bats +0 -0
  338. package/test/unit/voice-manager.bats +0 -0
  339. /package/bin/{mcp-server → mcp-server.sh} +0 -0
@@ -0,0 +1,268 @@
1
+ # Audio Tunnel Fix - October 16, 2025
2
+
3
+ ## Summary
4
+
5
+ Fixed critical audio tunnel issues where AgentVibes TTS stopped working between ubuntu-rdp and Windows WSL. The root cause was stale SSH processes holding port 14713, combined with a stopped socat bridge.
6
+
7
+ ## What Happened
8
+
9
+ ### User Report
10
+ > "Audio on this computer is not even working for Agent Vibes"
11
+ > "speaker-test -t sine -f 1000 -l 1" fails with "Connection refused"
12
+ > "This was working just yesterday"
13
+
14
+ ### Investigation
15
+
16
+ **Initial Symptoms:**
17
+ ```bash
18
+ $ speaker-test -t sine -f 1000 -l 1
19
+ ALSA lib pulse.c:242:(pulse_connect) PulseAudio: Unable to connect: Connection terminated
20
+ Playback open error: -111,Connection refused
21
+ ```
22
+
23
+ **SSH Tunnel Warnings:**
24
+ ```
25
+ Warning: remote port forwarding failed for listen port 14713
26
+ ```
27
+
28
+ ### Root Cause Analysis
29
+
30
+ **Primary Issue:** Multiple stale SSH processes on ubuntu-rdp were holding port 14713
31
+ ```bash
32
+ $ sudo lsof -i :14713
33
+ COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
34
+ sshd 2845015 administrator 7u IPv6 70604344 0t0 TCP ip6-localhost:14713 (LISTEN)
35
+ sshd 2845015 administrator 9u IPv4 70604345 0t0 TCP localhost:14713 (LISTEN)
36
+ ```
37
+
38
+ **Secondary Issue:** socat bridge on WSL had stopped running
39
+ ```bash
40
+ $ wsl ss -tlnp | grep 14713
41
+ # No output - socat not running!
42
+ ```
43
+
44
+ ### Why This Happened
45
+
46
+ 1. **Zombie SSH Sessions**: Previous SSH connections didn't terminate cleanly, leaving processes bound to port 14713
47
+ 2. **Background Job Termination**: The socat bridge PowerShell background job had ended
48
+ 3. **No Automatic Recovery**: No healthcheck or recovery mechanism existed
49
+
50
+ ## The Fix
51
+
52
+ ### Steps Performed
53
+
54
+ 1. **Identified stale processes:**
55
+ ```bash
56
+ ssh ubuntu-rdp 'sudo lsof -i :14713'
57
+ ```
58
+
59
+ 2. **Forcefully killed them:**
60
+ ```bash
61
+ ssh ubuntu-rdp 'sudo fuser -k 14713/tcp'
62
+ ```
63
+
64
+ 3. **Restarted socat bridge:**
65
+ ```powershell
66
+ wsl pkill socat
67
+ Start-Job -ScriptBlock {
68
+ wsl socat 'TCP-LISTEN:14713,fork,reuseaddr' 'UNIX-CONNECT:/mnt/wslg/PulseServer'
69
+ } -Name "SocatAudioBridge"
70
+ ```
71
+
72
+ 4. **Created fresh SSH tunnel:**
73
+ ```bash
74
+ wsl bash -c "ssh -f -N -R 14713:localhost:14713 ubuntu-rdp"
75
+ ```
76
+
77
+ 5. **Verified connection:**
78
+ ```bash
79
+ ssh ubuntu-rdp 'netstat -tlnp | grep 14713'
80
+ # Output showed tunnel was listening
81
+ ```
82
+
83
+ ### Result
84
+ ✅ Audio tunnel restored
85
+ ✅ AgentVibes TTS working through Windows speakers
86
+ ✅ speaker-test playing sound successfully
87
+
88
+ ## Improvements Made
89
+
90
+ ### 1. Updated fix-audio-tunnel.sh Script
91
+
92
+ **New Features:**
93
+ - ✅ Auto-detects environment (WSL vs ubuntu-rdp)
94
+ - ✅ Kills stale SSH processes on remote server automatically
95
+ - ✅ Restarts socat bridge if stopped
96
+ - ✅ Kills local stale SSH tunnels
97
+ - ✅ Creates fresh tunnel with verification
98
+ - ✅ Tests audio connection
99
+ - ✅ Provides clear status messages and instructions
100
+
101
+ **Script Locations:**
102
+ - `scripts/fix-audio-tunnel.sh` (main script)
103
+ - `scripts/fix-audio-tunnel-complete.sh` (backup)
104
+
105
+ ### 2. Created TROUBLESHOOTING.md
106
+
107
+ Comprehensive troubleshooting guide documenting:
108
+ - Root cause analysis of today's issue
109
+ - Audio tunnel architecture diagram
110
+ - Common symptoms and solutions
111
+ - Diagnostic command reference
112
+ - Prevention best practices
113
+ - Success indicators
114
+
115
+ ### 3. Updated scripts/README.md
116
+
117
+ Added documentation for:
118
+ - `fix-audio-tunnel.sh` usage and features
119
+ - Quick fix guide
120
+ - Common issues and their fixes
121
+ - Manual diagnostic commands
122
+ - Reference to TROUBLESHOOTING.md
123
+
124
+ ## Technical Details
125
+
126
+ ### Audio Tunnel Architecture
127
+
128
+ ```
129
+ ubuntu-rdp (Remote) WSL (Windows) Windows
130
+ │ │ │
131
+ │ Speaker-test/TTS │ │
132
+ │ ↓ │ │
133
+ │ PULSE_SERVER= │ │
134
+ │ tcp:localhost:14713 │ │
135
+ │ ↓ │ │
136
+ │ [SSH Tunnel Port 14713] ←──┴──→ [socat Bridge] │
137
+ │ │ ↓ │
138
+ │ │ TCP:14713 → │
139
+ │ │ UNIX:/mnt/wslg/ │
140
+ │ │ PulseServer │
141
+ │ │ ↓ │
142
+ │ │ [WSL PulseAudio] ───→ Speakers
143
+ ```
144
+
145
+ ### Key Commands
146
+
147
+ **Diagnostic:**
148
+ ```bash
149
+ # Check socat bridge
150
+ wsl ss -tlnp | grep 14713
151
+
152
+ # Check SSH tunnel
153
+ ssh ubuntu-rdp 'netstat -tlnp | grep 14713'
154
+
155
+ # Find stale processes
156
+ ssh ubuntu-rdp 'sudo lsof -i :14713'
157
+
158
+ # Test PulseAudio
159
+ ssh ubuntu-rdp 'export PULSE_SERVER=tcp:localhost:14713 && pactl info'
160
+ ```
161
+
162
+ **Fix:**
163
+ ```bash
164
+ # Automated fix (recommended)
165
+ ./scripts/fix-audio-tunnel.sh
166
+
167
+ # Manual fix
168
+ ssh ubuntu-rdp 'sudo fuser -k 14713/tcp'
169
+ wsl pkill socat
170
+ wsl bash -c "ssh -f -N -R 14713:localhost:14713 ubuntu-rdp"
171
+ ```
172
+
173
+ ## Prevention
174
+
175
+ ### Recommendations Implemented
176
+
177
+ 1. **Automated recovery script**: `fix-audio-tunnel.sh` handles all common failure modes
178
+ 2. **Environment detection**: Script adapts to whether it's run from WSL or ubuntu-rdp
179
+ 3. **Comprehensive diagnostics**: Script reports status at each step
180
+ 4. **Documentation**: TROUBLESHOOTING.md provides detailed incident analysis
181
+
182
+ ### Future Improvements
183
+
184
+ 1. **Healthcheck cron job**: Periodically verify tunnel status
185
+ 2. **Auto-restart on failure**: systemd service or scheduled task
186
+ 3. **Monitoring alert**: Notify when tunnel goes down
187
+ 4. **Persistent socat**: Run as systemd service instead of background job
188
+
189
+ ## Lessons Learned
190
+
191
+ 1. **Always check for stale processes first** - `sudo lsof -i :14713` should be the first diagnostic
192
+ 2. **Force kill is sometimes necessary** - Regular termination may not release port bindings
193
+ 3. **socat bridge is critical** - Even with a working tunnel, audio fails if socat isn't running
194
+ 4. **Background jobs don't persist** - Need better solution for long-running processes
195
+ 5. **Document immediately** - Capture troubleshooting steps while fresh
196
+
197
+ ## Testing Performed
198
+
199
+ ### Before Fix
200
+ ```bash
201
+ $ speaker-test -t sine -f 1000 -l 1
202
+ Playback open error: -111,Connection refused
203
+ ```
204
+
205
+ ### After Fix
206
+ ```bash
207
+ $ speaker-test -t sine -f 1000 -l 1
208
+ # Audio played through Windows speakers successfully
209
+ ```
210
+
211
+ ### Verification
212
+ ```bash
213
+ $ ssh ubuntu-rdp 'export PULSE_SERVER=tcp:localhost:14713 && pactl info | head -3'
214
+ Server String: tcp:localhost:14713
215
+ Library Protocol Version: 35
216
+ Server Protocol Version: 35
217
+ ```
218
+
219
+ ## Files Modified
220
+
221
+ - `scripts/fix-audio-tunnel.sh` - Completely rewritten with comprehensive fixes
222
+ - `scripts/fix-audio-tunnel-complete.sh` - New backup copy
223
+ - `scripts/TROUBLESHOOTING.md` - New detailed troubleshooting guide
224
+ - `scripts/README.md` - Updated with new script documentation
225
+ - `scripts/CHANGELOG-2025-10-16.md` - This file
226
+
227
+ ## Impact
228
+
229
+ ✅ **Audio tunnel restored** to working state
230
+ ✅ **Automated fix** now available for future issues
231
+ ✅ **Documentation** created for troubleshooting
232
+ ✅ **Prevention guidance** added to avoid recurrence
233
+
234
+ ## Timeline
235
+
236
+ - **10:00 AM** - User reported audio not working
237
+ - **10:05 AM** - Initial investigation, found connection refused errors
238
+ - **10:15 AM** - Discovered stale SSH processes via `lsof`
239
+ - **10:20 AM** - Killed stale processes, restarted socat bridge
240
+ - **10:25 AM** - Created fresh tunnel, verified connection
241
+ - **10:30 AM** - Audio working, user confirmed success
242
+ - **10:40 AM** - Rewrote fix-audio-tunnel.sh script
243
+ - **10:50 AM** - Created TROUBLESHOOTING.md documentation
244
+ - **11:00 AM** - Updated README.md with new information
245
+
246
+ ## User Feedback
247
+
248
+ > "its working now, what did u fix?"
249
+
250
+ User confirmed audio tunnel restored successfully.
251
+
252
+ ## Related Issues
253
+
254
+ - Previous tunnel outages (not documented)
255
+ - X2Go PulseAudio conflicts (documented in guide)
256
+ - VS Code Remote SSH tunnel issues (documented in guide)
257
+
258
+ ## References
259
+
260
+ - [TROUBLESHOOTING.md](./TROUBLESHOOTING.md) - Detailed troubleshooting guide
261
+ - [README.md](./README.md) - Scripts documentation
262
+ - [Remote Audio Setup Guide](../docs/remote-audio-setup.md) - Original setup guide
263
+
264
+ ---
265
+
266
+ **Incident resolved:** October 16, 2025
267
+ **Resolution time:** ~30 minutes
268
+ **Automated fix:** Available via `./scripts/fix-audio-tunnel.sh`
package/scripts/README.md CHANGED
@@ -82,10 +82,124 @@ Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
82
82
  For detailed information about the remote audio setup, see:
83
83
  - [Remote Audio Setup Guide](../docs/remote-audio-setup.md)
84
84
 
85
+ #### `fix-audio-tunnel.sh` (NEW - WSL or Remote Server)
86
+
87
+ **The easiest way to fix audio tunnel issues!**
88
+
89
+ Auto-detects environment and runs appropriate fixes for stale SSH processes, stopped socat bridges, and connection issues.
90
+
91
+ **Requirements:**
92
+ - Run from WSL (for complete fix) OR ubuntu-rdp (for local fix)
93
+ - SSH access configured
94
+ - sudo privileges for killing processes
95
+
96
+ **Usage:**
97
+ ```bash
98
+ # From WSL - runs complete fix
99
+ ./scripts/fix-audio-tunnel.sh
100
+
101
+ # From ubuntu-rdp - runs local fix
102
+ ./scripts/fix-audio-tunnel.sh
103
+ ```
104
+
105
+ **What it does (when run from WSL):**
106
+ 1. ✅ Kills stale SSH processes on ubuntu-rdp holding port 14713
107
+ 2. ✅ Restarts socat bridge on WSL if needed
108
+ 3. ✅ Kills local stale SSH tunnels
109
+ 4. ✅ Creates fresh SSH tunnel to ubuntu-rdp
110
+ 5. ✅ Tests audio connection
111
+ 6. ✅ Provides clear status and usage instructions
112
+
113
+ **What it does (when run from ubuntu-rdp):**
114
+ 1. ✅ Kills local processes using port 14713
115
+ 2. ✅ Waits for tunnel to be re-established
116
+ 3. ✅ Tests audio connection
117
+ 4. ✅ Plays test tone through Windows speakers
118
+
119
+ **When to use:**
120
+ - Audio stopped working suddenly
121
+ - Getting "Connection refused" errors
122
+ - SSH shows "Warning: remote port forwarding failed"
123
+ - speaker-test fails
124
+ - AgentVibes TTS not playing through Windows speakers
125
+
126
+ #### `check-audio-tunnel.sh` (Diagnostic)
127
+
128
+ Checks audio tunnel status without making changes. Useful for verifying setup or diagnosing issues.
129
+
130
+ **Usage:**
131
+ ```bash
132
+ ./scripts/check-audio-tunnel.sh
133
+ ```
134
+
85
135
  ## Troubleshooting
86
136
 
137
+ ### Quick Fix
138
+
139
+ **If audio stopped working**, run this first:
140
+ ```bash
141
+ # From WSL
142
+ ./scripts/fix-audio-tunnel.sh
143
+ ```
144
+
145
+ This will automatically fix the most common issues:
146
+ - Stale SSH processes blocking port 14713
147
+ - Stopped socat bridge
148
+ - Conflicting SSH tunnels
149
+
87
150
  ### Common Issues
88
151
 
152
+ **Issue 1: "Warning: remote port forwarding failed for listen port 14713"**
153
+
154
+ **Symptom:** SSH tunnel fails to establish
155
+ **Cause:** Old SSH sessions left zombie processes holding port 14713
156
+ **Fix:** `./scripts/fix-audio-tunnel.sh` (kills stale processes automatically)
157
+
158
+ **Issue 2: "Connection refused" / "ALSA lib pulse.c: Unable to connect"**
159
+
160
+ **Symptom:** Audio playback fails
161
+ **Cause:** socat bridge on WSL stopped running
162
+ **Fix:** `./scripts/fix-audio-tunnel.sh` (restarts socat automatically)
163
+
164
+ **Issue 3: Audio works intermittently**
165
+
166
+ **Symptom:** Audio plays sometimes but not always
167
+ **Cause:** Multiple SSH sessions creating conflicting tunnels
168
+ **Fix:** `./scripts/fix-audio-tunnel.sh` (kills all tunnels and creates one clean tunnel)
169
+
170
+ ### Manual Diagnostics
171
+
172
+ If the automated fix doesn't work, try these manual checks:
173
+
174
+ **Check socat bridge (WSL):**
175
+ ```bash
176
+ wsl ss -tlnp | grep 14713
177
+ # Expected: LISTEN 0 5 *:14713 *:* users:(("socat"...))
178
+ ```
179
+
180
+ **Check SSH tunnel (ubuntu-rdp):**
181
+ ```bash
182
+ ssh ubuntu-rdp 'netstat -tlnp | grep 14713'
183
+ # Expected: tcp 0 0 127.0.0.1:14713 0.0.0.0:* LISTEN
184
+ ```
185
+
186
+ **Find stale processes:**
187
+ ```bash
188
+ ssh ubuntu-rdp 'sudo lsof -i :14713'
189
+ # Should show only one sshd process
190
+ ```
191
+
192
+ **Test audio:**
193
+ ```bash
194
+ ssh ubuntu-rdp
195
+ export PULSE_SERVER=tcp:localhost:14713
196
+ speaker-test -t sine -f 1000 -l 1
197
+ ```
198
+
199
+ **Detailed troubleshooting guide:** See [TROUBLESHOOTING.md](./TROUBLESHOOTING.md) for in-depth analysis of recent issues and their solutions.
200
+
201
+ ### Legacy Issues
202
+
89
203
  **Audio doesn't play:**
90
204
  - Ensure WSL is updated: `wsl --update`
91
205
  - Restart WSL: `wsl --shutdown`
@@ -0,0 +1,258 @@
1
+ # Audio Tunnel Troubleshooting - 2025-10-16
2
+
3
+ ## Problem Summary
4
+
5
+ The audio tunnel that was working yesterday stopped functioning today. Users experienced:
6
+ - `speaker-test` failing with "Connection refused"
7
+ - SSH tunnel showing "Warning: remote port forwarding failed for listen port 14713"
8
+
9
+ ## Root Cause Analysis
10
+
11
+ ### Primary Issue: Stale SSH Processes
12
+ **Multiple old SSH sessions** on ubuntu-rdp (remote server) were holding port 14713, preventing new tunnels from binding to that port.
13
+
14
+ ```bash
15
+ # Investigation revealed:
16
+ $ sudo lsof -i :14713
17
+ COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
18
+ sshd 2845015 administrator 7u IPv6 70604344 0t0 TCP ip6-localhost:14713 (LISTEN)
19
+ sshd 2845015 administrator 9u IPv4 70604345 0t0 TCP localhost:14713 (LISTEN)
20
+ ```
21
+
22
+ ### Secondary Issue: Stopped socat Bridge
23
+ The socat bridge on WSL (Windows side) had stopped running, breaking the connection chain even if the tunnel worked.
24
+
25
+ ## How the Audio Tunnel Works
26
+
27
+ ```
28
+ ubuntu-rdp (Remote) WSL (Windows) Windows
29
+ │ │ │
30
+ │ Speaker-test/TTS │ │
31
+ │ ↓ │ │
32
+ │ PULSE_SERVER= │ │
33
+ │ tcp:localhost:14713 │ │
34
+ │ ↓ │ │
35
+ │ [SSH Tunnel Port 14713] ←──┴──→ [socat Bridge] │
36
+ │ │ ↓ │
37
+ │ │ TCP:14713 → │
38
+ │ │ UNIX:/mnt/wslg/ │
39
+ │ │ PulseServer │
40
+ │ │ ↓ │
41
+ │ │ [WSL PulseAudio] ───→ Speakers
42
+ ```
43
+
44
+ ## Symptoms
45
+
46
+ 1. **SSH tunnel fails to establish:**
47
+ ```
48
+ Warning: remote port forwarding failed for listen port 14713
49
+ ```
50
+
51
+ 2. **Audio playback error:**
52
+ ```
53
+ ALSA lib pulse.c:242:(pulse_connect) PulseAudio: Unable to connect: Connection terminated
54
+ Playback open error: -111,Connection refused
55
+ ```
56
+
57
+ 3. **pactl info shows local connection instead of TCP:**
58
+ ```
59
+ Server String: unix:/mnt/wslg/PulseServer
60
+ # Instead of:
61
+ Server String: tcp:localhost:14713
62
+ ```
63
+
64
+ ## The Fix
65
+
66
+ ### Step 1: Kill Stale Processes on Remote Server
67
+ ```bash
68
+ ssh ubuntu-rdp 'sudo fuser -k 14713/tcp'
69
+ ```
70
+
71
+ This forcefully kills all processes (including zombie SSH sessions) holding port 14713 on the remote server.
72
+
73
+ ### Step 2: Restart socat Bridge on WSL
74
+ ```powershell
75
+ # Kill any existing socat
76
+ wsl pkill socat
77
+
78
+ # Start fresh socat bridge
79
+ Start-Job -ScriptBlock {
80
+ wsl socat 'TCP-LISTEN:14713,fork,reuseaddr' 'UNIX-CONNECT:/mnt/wslg/PulseServer'
81
+ } -Name "SocatAudioBridge"
82
+
83
+ # Verify it's running
84
+ wsl ss -tlnp | Select-String ":14713"
85
+ ```
86
+
87
+ ### Step 3: Kill Local Stale SSH Tunnels
88
+ ```bash
89
+ wsl bash -c "pkill -f 'ssh.*ubuntu-rdp'"
90
+ ```
91
+
92
+ ### Step 4: Create Fresh SSH Tunnel
93
+ ```bash
94
+ wsl bash -c "ssh -f -N -R 14713:localhost:14713 ubuntu-rdp"
95
+ ```
96
+
97
+ ### Step 5: Verify Everything Works
98
+ ```bash
99
+ # Check tunnel exists on remote
100
+ wsl bash -c "ssh ubuntu-rdp 'netstat -tlnp | grep 14713'"
101
+
102
+ # Test audio
103
+ ssh ubuntu-rdp
104
+ export PULSE_SERVER=tcp:localhost:14713
105
+ speaker-test -t sine -f 1000 -l 1
106
+ ```
107
+
108
+ ## Prevention
109
+
110
+ ### Why This Happens
111
+ - SSH sessions don't always clean up properly when disconnected
112
+ - Network interruptions can leave zombie processes
113
+ - Multiple VS Code Remote sessions can create conflicting tunnels
114
+ - X2Go client (if enabled) can conflict with SSH audio tunnel
115
+
116
+ ### Best Practices
117
+
118
+ 1. **Always use `-f` flag for background tunnels:**
119
+ ```bash
120
+ ssh -f -N -R 14713:localhost:14713 ubuntu-rdp
121
+ ```
122
+
123
+ 2. **Check for existing tunnels before creating new ones:**
124
+ ```bash
125
+ ssh ubuntu-rdp 'sudo lsof -i :14713'
126
+ ```
127
+
128
+ 3. **Clean exit from SSH sessions:**
129
+ - Use `exit` command instead of closing terminal
130
+ - Avoid killing terminal windows with active SSH sessions
131
+
132
+ 4. **Disable X2Go PulseAudio:**
133
+ - X2Go's audio support conflicts with SSH tunnel
134
+ - Disable in X2Go session settings under "Media/Sound"
135
+
136
+ 5. **Use the automated fix script:**
137
+ ```bash
138
+ ./scripts/fix-audio-tunnel.sh
139
+ ```
140
+
141
+ ## Automated Solution
142
+
143
+ The updated `fix-audio-tunnel.sh` script now handles:
144
+ - ✅ Kills stale SSH processes on remote server
145
+ - ✅ Restarts socat bridge on WSL
146
+ - ✅ Kills local stale SSH tunnels
147
+ - ✅ Creates fresh tunnel
148
+ - ✅ Verifies connection works
149
+ - ✅ Tests audio playback
150
+
151
+ ## Future Improvements
152
+
153
+ ### 1. Healthcheck Script
154
+ Create a cron job or systemd timer that periodically checks tunnel health:
155
+ ```bash
156
+ #!/bin/bash
157
+ # /usr/local/bin/check-audio-tunnel.sh
158
+ if ! ss -tlnp | grep -q :14713; then
159
+ # Alert or auto-fix
160
+ logger "Audio tunnel down, attempting fix"
161
+ /path/to/fix-audio-tunnel.sh
162
+ fi
163
+ ```
164
+
165
+ ### 2. SSH Config Improvement
166
+ Add these to `~/.ssh/config` for more reliable connections:
167
+ ```
168
+ Host ubuntu-rdp
169
+ ServerAliveInterval 30
170
+ ServerAliveCountMax 3
171
+ ExitOnForwardFailure yes
172
+ # This makes SSH exit if tunnel can't be created
173
+ ```
174
+
175
+ ### 3. Monitoring
176
+ Add tunnel status to shell prompt or status bar:
177
+ ```bash
178
+ # In .bashrc or .zshrc
179
+ audio_tunnel_status() {
180
+ if ss -tlnp 2>/dev/null | grep -q :14713; then
181
+ echo "🔊"
182
+ else
183
+ echo "🔇"
184
+ fi
185
+ }
186
+ ```
187
+
188
+ ## Related Issues
189
+
190
+ - **VS Code Remote SSH**: May need `"remote.SSH.useExecServer": false` in settings
191
+ - **Multiple WSL instances**: Each instance needs its own socat bridge
192
+ - **Firewall rules**: Ensure UFW allows localhost connections to 14713
193
+ - **PulseAudio config**: Must have `autospawn = no` and `auth-anonymous = true`
194
+
195
+ ## Key Learnings
196
+
197
+ 1. **Always check for stale processes first** - `sudo lsof -i :14713` should be the first diagnostic command
198
+ 2. **socat bridge is critical** - Without it, even a working tunnel won't function
199
+ 3. **Force kill is necessary** - Regular process termination may not clear port bindings
200
+ 4. **Background tunnels need monitoring** - The `-f` flag creates fire-and-forget tunnels that need healthchecks
201
+ 5. **Environment variable persistence** - `PULSE_SERVER` must be set in every new shell session
202
+
203
+ ## Success Indicators
204
+
205
+ When working correctly, you should see:
206
+
207
+ 1. **On WSL:**
208
+ ```bash
209
+ wsl ss -tlnp | grep 14713
210
+ # Output: socat listening on *:14713
211
+ ```
212
+
213
+ 2. **On ubuntu-rdp:**
214
+ ```bash
215
+ netstat -tlnp | grep 14713
216
+ # Output: listening on 127.0.0.1:14713 and ::1:14713
217
+ ```
218
+
219
+ 3. **PulseAudio connection:**
220
+ ```bash
221
+ export PULSE_SERVER=tcp:localhost:14713
222
+ pactl info | head -3
223
+ # Output: Server String: tcp:localhost:14713
224
+ ```
225
+
226
+ 4. **Audio playback:**
227
+ ```bash
228
+ speaker-test -t sine -f 1000 -l 1
229
+ # Output: Sound plays through Windows speakers
230
+ ```
231
+
232
+ ## Diagnostic Commands Cheat Sheet
233
+
234
+ ```bash
235
+ # Check socat bridge (on WSL)
236
+ wsl ss -tlnp | grep 14713
237
+
238
+ # Check tunnel on remote
239
+ ssh ubuntu-rdp 'netstat -tlnp | grep 14713'
240
+
241
+ # Find processes using port
242
+ ssh ubuntu-rdp 'sudo lsof -i :14713'
243
+
244
+ # Check PulseAudio connection
245
+ ssh ubuntu-rdp 'export PULSE_SERVER=tcp:localhost:14713 && pactl info'
246
+
247
+ # Test audio
248
+ ssh ubuntu-rdp 'export PULSE_SERVER=tcp:localhost:14713 && speaker-test -t sine -f 1000 -l 1'
249
+
250
+ # Kill stale processes
251
+ ssh ubuntu-rdp 'sudo fuser -k 14713/tcp'
252
+
253
+ # Kill local SSH tunnels
254
+ wsl pkill -f 'ssh.*ubuntu-rdp'
255
+
256
+ # Create new tunnel
257
+ wsl bash -c "ssh -f -N -R 14713:localhost:14713 ubuntu-rdp"
258
+ ```
@@ -0,0 +1,17 @@
1
+ # AgentVibes Audio Tunnel Configuration
2
+ # Personal configuration - DO NOT COMMIT
3
+
4
+ # Remote server hostname (from your ~/.ssh/config)
5
+ REMOTE_HOST="ubuntu-rdp"
6
+
7
+ # Tunnel port (default: 14713)
8
+ TUNNEL_PORT="14713"
9
+
10
+ # PulseAudio socket path (WSL default)
11
+ PULSE_SOCKET="/mnt/wslg/PulseServer"
12
+
13
+ # Log file for automatic fixes
14
+ AUTO_FIX_LOG="/tmp/audio-tunnel-autofix.log"
15
+
16
+ # Healthcheck interval in minutes (for cron setup)
17
+ CHECK_INTERVAL="5"
@@ -0,0 +1,18 @@
1
+ # AgentVibes Audio Tunnel Configuration
2
+ # Copy this file to audio-tunnel.config and customize for your setup
3
+ # DO NOT commit audio-tunnel.config to git (it's in .gitignore)
4
+
5
+ # Remote server hostname (from your ~/.ssh/config)
6
+ REMOTE_HOST="your-remote-host"
7
+
8
+ # Tunnel port (default: 14713)
9
+ TUNNEL_PORT="14713"
10
+
11
+ # PulseAudio socket path (WSL default)
12
+ PULSE_SOCKET="/mnt/wslg/PulseServer"
13
+
14
+ # Log file for automatic fixes
15
+ AUTO_FIX_LOG="/tmp/audio-tunnel-autofix.log"
16
+
17
+ # Healthcheck interval in minutes (for cron setup)
18
+ CHECK_INTERVAL="5"