How I Made Home Assistant Voice PE Work with Local Speech Recognition
The problem: HA Voice PE's built-in speech-to-text was slow (~38 seconds per clip) and kept mangling proper names.
What I did: I replaced it with a local whisper.cpp pipeline that runs entirely on my Mac Mini's GPU. The model stays loaded in memory so wake-word responses are instant (~0.5 seconds).
How it works:
A whisper.cpp server runs 24/7 on my machine, keeping the large-v3-turbo model ready
A Wyoming adapter bridges HA's native protocol to that server
I point HA Voice PE at the adapter instead of its default STT
Same model, same accuracy, zero cloud calls
The result: Sub-second wake-word responses, word-perfect transcription of names, and everything stays local. No API keys, no monthly costs, no privacy concerns.
For others wanting this: The key insight is that HA Voice PE speaks the Wyoming ASR protocol natively. You just need a Wyoming-compatible STT server running locally, and you're done. The model stays resident in memory so there's no cold-start delay on wake words.
The adapter script is open source.
Good fun. 🦞
#HA #homeassistant #nabucasa #voicepe #voice
Did someone say #zapathon?
Been a while since I had time to look at social media or nostr.
Nostrages: what clients are you using ?
Me : I like Nostur , Yakihonne, Damus. (probably in that order )
Primal looks good (I wonder if I can use a wallet from Canada yet )
Wisp has a fresh feel.
Back to poking around while I get the studio together.
Time to catch up 😁 on Nostr !
Watering the garden just got easier
This is more than a programmable tap with a timer. My own local AI oversees the watering now. It reads soil moisture from sensors in the beds, checks the weather, and decides whether each zone actually needs water. If a bed is already damp, it skips the cycle. If it’s been hot and dry, it waters longer
The setup is simple: a small home-automation hub, a two-zone smart water valve, and a few wireless soil sensors. One zone feeds the flower beds, the other feeds the vegetable garden and containers. Everything talks locally over Zigbee, so it still works even without internet
The part I like best is that it’s my own setup; local ai, opensource software, my hardware. The schedule, the data, the decisions - none of it lives in someone else’s cloud, app or platform.
It’s practical: plants stay alive, water doesn’t get wasted, and I don’t have to stand there with a hose.

What actually works in our OpenClaw setup (and the pain it fixed)
If you're spinning up OpenClaw and hitting the usual walls (context overflow, wrong model for the job, forgotten conversations, flaky pipelines), here's the stack and discipline that got us past it.
1. MRDE: route before you prompt
We built a Model Routing Decision Engine so every request hits the right model tier first, not after trial and error.
• Local private: sensitive stuff stays on-device (gemma-4-26B-MLX, ornith:9b for fast local lanes).
• Local heavy: deep reasoning when latency doesn't matter (ornith:35b, qwen3.6-35b for legal).
• Cloud coding/synthesis: complex troubleshooting (kimi-k2.7-code:cloud, kimi-k2.6:cloud, deepseek-v4-flash:cloud).
• Cloud fast fallback: quick answers when local is cold (gemma4:31b-cloud).
Pain solved: no more asking a 2.8T-parameter cloud model to grep logs, and no more running private queries through cloud APIs by accident.
2. Two-tier memory + RAG
• Immutable corpus: law sources, primary docs, transcripts. Append-only, never rewritten.
• Evolving memory: daily notes, decisions, lessons, atomic reports. Rewritten and refined.
• RAG v2: 10 corpora, ~66k chunks, all embedded. The assistant recalls before answering, then writes back compact, cited notes.
Pain solved: the system stops hallucinating continuity. It actually remembers yesterday, last week, and the source of the claim.
3. The loop: capture → recall → act → write back
Everything runs on a small, durable loop:
• Capture: drop it in the inbox (AirDrop, Telegram, share sheet, cron).
• Recall: search memory + RAG before any real work.
• Act: use the right tool/model for the task.
• Write back: one compact note with provenance (file path, source ID, or daily note).
For bigger tasks we add a gauntlet: run the output through critic models, check facts, verify file hashes, then keep or repair.
Pain solved: slop dies here. The system produces fewer, higher-quality artifacts instead of endless chat noise.
4. Scheduled pipelines (the nightshift)
A single cron at 02:00 dispatches phased jobs: I/O-bound tasks, then cloud API tasks, then local ML/vision, then reflection/audit. Local-ML concurrency is capped at 1 so vision models don't fight for the GPU.
Pain solved: long-running jobs finish overnight instead of interrupting the day, and the Mac doesn't melt.
5. Voice as default input
Whisper STT → local LLM → Kokoro TTS. Zero API cost, hands-free, and it actually gets used.
Pain solved: typing long prompts on mobile is miserable. Voice removes friction.
Advice for new OpenClaw builders
• Lock your default model before you build a dozen workflows. Routing is cheaper than re-prompting.
• Write memory back immediately after meaningful work, not at end of day.
• Use small verification loops (syntax checks, dry runs, file hashes) before trusting any autonomous edit.
• Run heavy/local-ML jobs in a single queue with concurrency caps, not in parallel cron storms.
• Prefer local TTS/STT once it's good enough. The cost and latency win is real.
The big shift: stop treating OpenClaw like a chatbot and start treating it like an operating system with memory, scheduling, and routing. The rest follows.
#OpenClaw #LocalAI #AIAgents #ai