This repository is a modular Stream Deck plugin monorepo.
It can host multiple plugins under plugins/, with reusable packages under packages/ when a feature should be shared across plugins.
Path: plugins/sessionmixer
SessionMixer is a Windows 11 media session mixer for Stream Deck+ / Corsair Galleon 100 SD. It normalizes Chrome tabs, YouTube, Amazon Music, Twitch, Spotify Web, Spotify Desktop, Discord, games, and Windows master audio into one controllable source list.
SessionMixer is split into four workspaces:
plugins/sessionmixer/shared: protocol, source model, controller state, and reusable types.plugins/sessionmixer/streamdeck-plugin: Stream Deck actions, displays, WebSocket hub, and hardware state.plugins/sessionmixer/chrome-extension: Manifest V3 bridge for Chrome tabs, Media Session metadata, and tab media controls.plugins/sessionmixer/windows-audio-bridge: Windows master volume, app sessions, and desktop media transport.
npm install
npm test
npm run typecheck
npm run build
npm run verifynpm run build:sessionmixer
npm run stage:sessionmixer
npm run install:sessionmixer
npm run start:sessionmixer:windowsnpm run stage:sessionmixer creates plugins/sessionmixer/streamdeck-plugin/com.patrick.sessionmixer.sdPlugin.
Chrome extension:
- Build with
npm run build -w @patrick/sessionmixer-chrome-extension. - Load
plugins/sessionmixer/chrome-extensionas an unpacked extension in Chrome.
Stream Deck plugin:
- Install locally with
npm run install:sessionmixer. - Restart Stream Deck if the plugin does not appear immediately.
Windows audio bridge:
- In normal use, the Stream Deck plugin starts it automatically.
- For debugging only, run
npm run start:sessionmixer:windows.
- Installation
- Development
- Architecture
- Control scheme
- Protocol
- Source capabilities
- Known limitations
- Publishing
See CONTRIBUTING.md before opening large pull requests.
See SECURITY.md for vulnerability reporting and localhost service notes.
MIT. See LICENSE.