Controller-native Decky Loader plugin for controlling Discord voice channels in Gaming Mode via a local Vesktop/Vencord bridge.
Veckord allows Steam Deck and Handheld PC gamers running Steam Gaming Mode (Bazzite, SteamOS) to seamlessly view, join, mute, deafen, and manage Discord voice channels directly from the Decky QAM (Quick Access Menu) overlay all on controller.
- Controller Based UI
- Audio Controls:
- Active voice channel card showing connected server, channel, and live voice status.
- One-tap controller actions: Mute / Unmute, Deafen / Undeafen, and Disconnect.
- Favorites System: Save your most used voice channels, reorder them, and join instantly from the QAM.
- Zero Audio Overhead: Veckord controls voice state via client RPC—it does not transport audio or run a separate voice stack.
- Privacy First: Runs entirely over local Unix domain sockets (
AF_UNIX). No external servers, no token tracking, no cloud telemetry.
graph TD
subgraph "Steam Gaming Mode (Host)"
UI["Decky Plugin UI (React)"] <-->|Decky ServerAPI RPC| PY["Decky Backend (Python)"]
end
subgraph "Local IPC Bridge"
PY <-->|AF_UNIX Socket / JSON-RPC| BRIDGE["VeckordBridge (Vencord Plugin)"]
end
subgraph "Vesktop / Discord Client"
BRIDGE <-->|Webpack Stores & Actions| DISCORD["Discord Voice Engine & Flux Stores"]
end
- Hardware / OS: Steam Deck or Linux Gaming Handheld running Steam Gaming Mode (SteamOS, Bazzite, ChimeraOS).
- Decky Loader: Installed and working (decky.xyz).
- Vesktop / Vencord: Flatpak or native Vesktop / Vencord running Discord.
- Copy the
vencordBridgedirectory into your Vencord userplugins directory:- Vesktop Flatpak:
~/.var/app/dev.vencord.Vesktop/config/vesktop/vencord/src/userplugins/veckordBridge
- Vesktop Flatpak:
- Enable
VeckordBridgein Vencord Plugin Settings inside Vesktop. - Restart Vesktop.
- Download the latest
veckord.ziprelease from Releases. - Extract or install via Decky Loader plugin developer menu into
~/homebrew/plugins/Veckord. - Restart Decky Loader service (
sudo systemctl restart plugin_loader).
- Node.js 20+ &
pnpm - Python 3.10+
# Clone repository
git clone https://github.com/mattytacos/veckord.git
cd veckord
# Install dependencies
pnpm install
# Build frontend bundle
pnpm buildTo build the Vencord bridge plugin, place vencordBridge/ into a clone of Vencord under src/userplugins/veckordBridge/ and build Vencord:
git clone https://github.com/Vendicated/Vencord.git
cp -r /path/to/veckord/vencordBridge Vencord/src/userplugins/veckordBridge
cd Vencord
pnpm install
pnpm buildpython3 -m unittest discover tests| Issue | Cause | Solution |
|---|---|---|
| "Bridge unavailable" | Vesktop is not running or VeckordBridge is disabled. |
Launch Vesktop and verify VeckordBridge is enabled in Vencord plugins. |
| "Not connected to voice" | User has not joined a voice channel. | Select a voice channel from Favorites or the Channel Browser and press Join. |
| Flatpak Socket Access | Flatpak sandbox restricting socket access. | Verify /run/user/<uid>/veckord/bridge.sock permission mode is 0755. |
- Local IPC Only: All communications remain on local Unix domain stream sockets (
/run/user/<uid>/veckord/bridge.sock). - No Token Storage: Veckord does not read, request, or store your Discord account token or password.
- Log Sanitization: Logs automatically redact all personal IDs and credentials.
Important: Veckord is an independent open-source project created by mattytacos and is not affiliated with, endorsed by, or sponsored by Discord Inc., Vencord, Vesktop, Valve Corporation, or Decky Loader.
Distributed under the MIT License.