Projects
Projects I Run and Publish
Software I publish and the Home Assistant setup I use at home.
Public code
The articles explain the implementation and the bugs. Use the repositories for installation instructions, releases, and issue reports.
Claude Desktop Buddy firmware
An M5StickC Plus desk display, the radio and watchdog failures behind its battery work, and the source-only build that reached about 12 hours. Claude Desktop Buddy on GitHub.
Buddy Bridge
A multi-machine bridge to an ESP32 approval device, and the idle-stream bug that kept tearing down a healthy Bluetooth link. Buddy Bridge on GitHub.
MySQL MCP
A source audit that separated query-prefix validation from database grants, inherited option-file credentials, and raw result caching. MySQL MCP on GitHub.
BookStack MCP
A TypeScript MCP server for searching, reading, creating, and organizing BookStack documentation from an assistant. BookStack MCP on GitHub.
GitLab MCP
A recursive shutdown and stale-session restart failure that pushed the HTTP transport toward stateless requests. GitLab MCP on GitHub.
MediaWiki MCP
An expired login that still permitted reads, plus a container port that was published but unreachable. MediaWiki MCP on GitHub.
Snap-DNS
Why TSIG secrets left the browser and every split-DNS operation now carries an explicit key and view. Snap-DNS on GitHub.
DisplayCue
A reversible handoff for two computers and two monitors, with the DDC/CI and hardware-KVM limits left visible. DisplayCue on GitHub.
tad
A tmux cockpit that became more useful after I removed permanent screens and made live agent state the center of the interface. tad on GitHub.
The full stack
Why I mix Caséta, ESPHome, Matter, and Eufy
One coordinator does not require one ecosystem. Permanent controls, custom lighting, loose lamps, appliances, and security each have different failure modes.
Lighting
Caséta versus Matter bulbs
I use Caséta for the house and save smart bulbs for lamps without a Lutron-controlled load.
Six WLED controllers, one kitchen light
The grouping, state handling, and Home Assistant template that make separate controllers feel like one fixture.
A power-switched WLED cove
Normal off leaves the controller awake. Full off cuts power and requires a startup sequence.
The ceiling-fan power mistake
Five tracking automations could not repair a receiver that kept losing power.
Appliances and local AI
Eufy Omni S2 through Matter
What Home Assistant gets, what stays inside Eufy, and why a rescue alert matters more than another start button.
Ollama on an RTX 5070 Ti
Measured Qwen3 speed, the Home Assistant setup trap, and the false-success test that changed how I expose controls.
Automations that fail gracefully
The common rule behind the fan, cove, and vacuum fixes.
Calculators
The calculators stay separate from product recommendations. They are for checking whether an always-on device, replacement, smart plug, or long backup is worth the trouble.