GLaSSIST v3.6 - the Windows voice satellite for HA now with Linux Revolution🐧

Quick reminder of what this thing is, for anyone landing here first:

GLaSSIST turns your desktop PC into a full voice satellite for Home Assistant. Not a companion app, not a remote - an actual satellite your HA instance talks to.

  • Connects over WebSocket or as a native ESPHome satellite - your PC shows up in HA like any other voice device

  • 100+ bundled wake word models - Alexa, Jarvis, Scarlett, GLaDOS, Computer, and a lot more

  • Works with any conversation agent HA supports - Claude, GPT, Gemini, Ollama, or plain native Assist

  • Trigger by wake word, global hotkey, or system tray

  • Three.js overlay with real-time FFT audio visualization

  • Optional response text on screen

  • Optional media player volume ducking while you’re talking

  • Modern settings UI - no config file editing, ever

  • HTTP prompt API so HA automations can start the conversation instead of you


The occasion

GLaSSIST just passed 50 stars on GitHub and well over 1,700 downloads. A big chunk of the people showing up were on Linux, staring at a 900-line install script and hoping for the best. So that’s what got fixed.


:penguin: 3.5.0 - Linux Revolution

Linux went from ā€œtechnically supportedā€ to a first-class citizen.

Flatpak


flatpak install --user GLaSSIST.flatpak

flatpak run io.github.SmolinskiP.GLaSSIST

One command, any distro - Ubuntu, Fedora, Arch, whatever you run. Everything is bundled:

GNOME 49 runtime with WebKitGTK, ffmpeg/libmpv, PortAudio, all Python dependencies. No install script roulette, no hunting for the right -dev package for your distro.

The bundle is attached to every release and built automatically in CI. Config lives in ~/.var/app/io.github.SmolinskiP.GLaSSIST/config/glasssist/.env, custom sounds go in the matching data/ directory.

On Flathub: not happening, at least not in this form - Flathub doesn’t accept tray-resident applications, and the tray is how GLaSSIST is meant to live. So grab the bundle from GitHub Releases. The built-in update check (see below) will tell you when there’s a new one.

Native desktop experience

  • Overlay behaves like it does on Windows - click-through so mouse events reach the windows underneath, skips the taskbar, stays on top, sits bottom-center. Pure GTK, works inside the sandbox, no wmctrl or xdotool needed.

  • System tray is back on Linux via AppIndicator/StatusNotifier - it used to be disabled entirely.

  • WebKitGTK rendering fix - the orb no longer freezes its last frame on screen after a session ends.

  • Wake word on Python 3.13 - automatic ONNX fallback when the TFLite runtime isn’t there. 3.5.2 followed up with a Flatpak-specific fix: openWakeWord wants to download its default models on first run, which is impossible in a read-only sandbox, so a fresh install crashed on startup. Those models now ship inside the package and wake word works immediately after install.


:sparkles: 3.6.0 - Conversation memory & update checks

Follow-ups actually work now. GLaSSIST never sent Home Assistant’s conversation_id back, so every command started a brand-new conversation with no history. Say ā€œturn the desk light onā€, then ā€œturn it off againā€ - you’d get ā€œwhich device did you mean?ā€ instead of the obvious answer. Now the conversation ID round-trips properly.

New HA_CONVERSATION_TIMEOUT setting (slider in Settings) controls how long context is kept - default 300 s, 0 disables it. Only matters if you’re running an LLM conversation agent.

Built-in update checking. On startup GLaSSIST checks GitHub for a newer release and shows a brief cyan ā€œUpdate availableā€ animation. Your current version and a one-click Update link now sit in a bar at the top of Settings. HA_UPDATE_CHECK=false turns it off if you’d rather not.


:adhesive_bandage: 3.6.1 - Input audio delay fix

The mic buffer wasn’t being flushed before recording started, so GLaSSIST replayed 1-2 seconds of stale audio - it picked up speech from before you triggered it, and cut off the end of what you actually said. Some people found they had to start talking before the wake word for it to work. It now records from the live edge.

Most noticeable on Linux, which is exactly why it took a Linux user to pin it down.


:warning: Known limitations on Linux

  • Global hotkey is X11 only - on Wayland, use wake word activation

  • x86_64 builds only for now


:megaphone: Linux users - please break it

This is where I need you. The Linux support is new, the Flatpak is newer, and I can’t test every distro / desktop / audio stack combination myself. Wayland vs X11, PipeWire vs PulseAudio, KDE vs GNOME vs XFCE, whatever weird USB microphone you have - if it misbehaves, I want to hear about it.

The last two releases both came directly from Linux users filing detailed reports, so this genuinely works.

Download: Release 🩹 GLaSSIST 3.6.1 — Input audio delay fix Ā· SmolinskiP/GLaSSIST Ā· GitHub

Issues: Issues Ā· SmolinskiP/GLaSSIST Ā· GitHub

Debug logs help enormously - Settings → Advanced → Debug logging, then attach the output. 3.6.1 also added greppable ā±ļø TIMING lines so activation latency can be measured straight from a submitted log.


Previous threads