Connect your Home Assistant Wyoming Satellites to Cloudflare Workers AI for free, cloud-based Speech-to-Text (Whisper) and Text-to-Speech (Deepgram Aura) processing.
- Free Tier: Uses Cloudflare Workers AI free tier (10,000 neurons/day = ~200-500 voice commands/day)
- Low Latency: Cloudflare's global edge network for fast AI processing
- No API Keys: Uses Cloudflare Workers AI binding (included in free plan)
- Easy Install: One-click Home Assistant add-on
From your computer:
# Install Wrangler CLI
npm install -g wrangler
# Login to Cloudflare (opens browser)
wrangler login
# Clone this repository
git clone https://github.com/KJegen149/wyoming-cloudflare-bridge
cd wyoming-cloudflare-bridge
# Deploy workers automatically
./deploy.shSave the URLs shown! You'll need them for configuration.
- Open Home Assistant
- Go to Settings → Add-ons → Add-on Store
- Click ⋮ (top right) → Repositories
- Add:
https://github.com/KJegen149/wyoming-cloudflare-bridge - Close dialog
- Scroll to find "Wyoming Cloudflare Bridge"
- Click it → Click Install
- Wait 5-10 minutes for build to complete
- Go to Configuration tab
- Enter your Cloudflare Worker URLs:
stt_url: "https://wyoming-stt.YOUR-SUBDOMAIN.workers.dev"
tts_url: "https://wyoming-tts.YOUR-SUBDOMAIN.workers.dev"
log_level: INFO- Save → Info tab → Toggle "Start on boot" → Start
- Settings → Devices & Services → + Add Integration
- Search "Wyoming Protocol"
- Enter:
- Host:
f02c1104-wyoming-cloudflare-bridge - Port:
10300
- Host:
- Settings → Voice Assistants → + Add Assistant
- Configure:
- Name: "Cloudflare Assistant"
- Speech-to-Text: cloudflare-whisper
- Text-to-Speech: cloudflare-aura
- Conversation: Home Assistant Conversation
- Create
Point your Wyoming Satellites to Home Assistant:
python3 -m wyoming_satellite \
--name "Living Room" \
--uri "tcp://YOUR_HOME_ASSISTANT_IP:10300" \
--mic-command "arecord -r 16000 -c 1 -f S16_LE -t raw" \
--snd-command "aplay -r 22050 -c 1 -f S16_LE -t raw"Say: "Hey Mycroft, what time is it?"
You should hear a response! 🎉
Wyoming Satellite → Home Assistant → Wyoming Bridge → Cloudflare Workers AI
(mic) (HA OS) (Add-on) (STT + TTS)
- 10,000 neurons per day (resets at 00:00 UTC)
- Approximately 200-500 voice commands per day
- No credit card required
- $0.011 per 1,000 neurons if you exceed (optional)
Expected latency:
- Wake word: 200-400ms (if using local wake word detection)
- STT: 500-1000ms
- Intent processing: 100-300ms
- TTS: 500-1000ms
- Total: 2-4 seconds (comparable to Google Home)
Error: "server/ not found"
The server/ directory must be inside addon/. Run the cleanup script:
./cleanup-and-restructure.sh
git add -A
git commit -m "Fix structure"
git pushThen reload add-on store and try again.
Check the Log tab for errors:
- "STT URL is not configured": Add your Cloudflare Worker URLs in Configuration tab
- "Connection refused": Make sure both URLs are correct and workers are deployed
- Use your Home Assistant's IP address (not localhost) from satellites
- Verify add-on is running: Info tab should show "Started"
- Check port 10300 is accessible
From your computer:
cd wyoming-cloudflare-bridge/workers
wrangler tail wyoming-stt # View STT logs
wrangler tail wyoming-tts # View TTS logscurl -X POST https://wyoming-stt.YOUR-SUBDOMAIN.workers.dev \
-H "Content-Type: audio/wav" \
--data-binary @test.wavShould return JSON with transcription.
Edit workers/stt-worker.js line 37:
const response = await env.AI.run('@cf/openai/whisper-tiny-en', {
audio: Array.from(new Uint8Array(audioData)),
});Redeploy:
cd workers
wrangler deploy --config wrangler-stt.tomlEdit workers/tts-worker.js line 42:
const response = await env.AI.run('@cf/deepgram/aura-2-es', {
text: text,
});Redeploy:
cd workers
wrangler deploy --config wrangler-tts.tomlUpdate the TTS URL in add-on configuration.
Add-on page → Log tab
- Cloudflare Dashboard
- Workers & Pages → Overview
- Click Workers AI to see daily neuron usage
- Issues: GitHub Issues
- Documentation: This README
- Logs: Add-on → Log tab
wyoming-cloudflare-bridge/
├── addon/ # Home Assistant Add-on
│ ├── server/ # Wyoming Protocol bridge (Python)
│ └── ...
└── workers/ # Cloudflare Workers (STT + TTS)
Pull requests welcome! Please test thoroughly before submitting.
MIT License - See LICENSE
- Wyoming Protocol - Open Home Foundation
- Cloudflare Workers AI
- Home Assistant
- OpenAI Whisper
- Deepgram Aura
Track your usage to stay within free tier:
- Cloudflare Dashboard → Workers AI
- Check daily neuron usage
- Typical usage: 20-50 neurons per voice command
- Set up alerts if approaching 10,000/day
If you consistently exceed the free tier, consider:
- Upgrading to paid plan ($0.011 per 1,000 neurons)
- Running wake word detection locally to reduce cloud calls
- Using faster models (whisper-tiny-en uses fewer neurons)