- Backend: Add chat_stream() for streaming LLM responses
- TTS: Add synthesize_stream() for progressive audio
- Server: Stream response sentence-by-sentence
- Buffer text until sentence boundary (. ! ?)
- Synthesize and send audio immediately
- User hears first sentence while rest generates
- Client: Audio queue system
- Queue chunks as they arrive
- Play sequentially without gaps
- Progressive text display
Result: ~50% faster perceived response time
- Add text_utils.py: Clean markdown/hashtags/URLs before TTS
- No more 'hash hash' or 'asterisk asterisk'
- Strips code blocks, links, emojis
- Converts bullets to spoken form
- Markdown rendering in UI: Display formatted text while speaking
- Code blocks, bold, italic, links styled
- Faster TTS: Switch to eleven_turbo_v2_5 (~2x faster than v1)
- UI styling for markdown elements
- One-liner install command for AI agents
- Lists required env vars explicitly
- Includes Tailscale Funnel hint for HTTPS
- Tells agents to ask human for API keys if needed
- Added comprehensive meta tags (title, description, keywords)
- Added Open Graph tags for Facebook/LinkedIn
- Added Twitter Card meta tags
- Added JSON-LD structured data (SoftwareApplication schema)
- Added canonical URL
- Expanded feature descriptions for better keyword coverage
- Added use cases section
- Added Miami location for local SEO
- Updated repo description and topics on GitHub
- Renamed all CLAWDBOT_* env vars to OPENCLAW_*
- Updated README to reflect ElevenLabs as primary TTS
- Fixed comments mentioning Chatterbox as primary (ElevenLabs is)
- Updated SKILL.md with correct env var names
- Updated .env.example
- All 30 tests passing
- Auto-detect CLAWDBOT_GATEWAY_URL and CLAWDBOT_GATEWAY_TOKEN
- Routes through gateway's chatCompletions endpoint
- Voice agent shares Aria's workspace and memory
- Falls back to direct OpenAI if gateway not configured
- ElevenLabs as primary TTS when API key available
- Falls back to Chatterbox/XTTS/mock
- Uses Jessica voice (cgSgspJ2msm6clMCkdW9)
- 24kHz PCM output to match server expectation
- Updated tests to recognize elevenlabs backend
All 30 tests passing.
- Toggle switch for continuous mode
- Auto-listens after AI finishes speaking
- Simple VAD (silence detection) to know when user stops
- Tap-to-talk in continuous mode (vs hold-to-talk)
- Pre-requests mic permission when enabled
- Perfect for Tesla browser / driving use case
Keyboard: Space still toggles recording