Stream Deck plugins and Companion

PerritoDeck can run many plugins made for the Elgato Stream Deck, and a tablet can be a button surface for Bitfocus Companion. Both are experimental. This page says exactly what works and what doesn't yet.

Plugins made for the Stream Deck

Most current Stream Deck plugins are JavaScript programs written against Elgato's published plugin SDK. PerritoDeck starts them with Node.js and speaks the same messages the Stream Deck software does, so their actions can go on a tablet key. It's built from Elgato's public documentation; no code from other projects.

To add one, open Plugins → Stream Deck plugins in PerritoDeck and choose Add a plugin file… (a .streamDeckPlugin file) or From a folder… (a .sdPlugin folder). Its actions then appear in the key editor. You need Node.js 20 or newer on the computer. Step by step in the guide

Works

  • Key actions: press and release
  • Titles and images the plugin draws (PNG, JPEG, GIF, BMP, WebP, SVG), and its states
  • The ✓ and ⚠ flashes on a key
  • Settings saved per key, and the plugin's global settings
  • The action's own settings page (its "property inspector"), shown in the key editor
  • Opening web addresses for you
  • Node.js plugins everywhere; compiled plugins on Windows and macOS

Not yet

  • Dials and touch strips (those actions are hidden)
  • Multi-actions, and plugins switching profiles
  • Watching which apps are running, and a few rarer events
  • Older plugins written as web pages, which need a browser engine
  • Compiled plugins on Linux

How far it's been tested

Elgato's open-source sample plugins install, run, draw their keys and show their settings pages on Windows 11, and a small test plugin is part of PerritoDeck's automated tests. It hasn't been tried with a wide range of published plugins yet. If one doesn't work, please report it with the plugin's name.

Two things to know. On Windows, a program a Stream Deck plugin starts by itself closes when the plugin stops (web pages it opens stay open). And each plugin keeps its own licence and terms; running it in PerritoDeck doesn't change them.

Bitfocus Companion

Companion drives broadcast and AV equipment through thousands of modules. Through its Satellite API, PerritoDeck connects to Companion as a remote surface: Companion draws the buttons and gets the presses, and nothing needs installing on the Companion side.

To set it up, add Companion's address in PerritoDeck's Settings → Integrations and make a profile with Companion ticked. Each tablet showing that profile appears in Companion as its own surface, named "PerritoDeck" and the tablet's name, and sized to its grid. Step by step in the guide

Works

  • Companion's button images (PNG from Satellite API 1.12; older versions' raw images are converted), text and colours
  • Press and release, so Companion's press and release actions both work
  • Several tablets, each its own surface; switching profiles adds and removes them
  • Reconnecting by itself, with "Companion offline" on the tablet meanwhile

Not yet

  • Rotary encoders and LED rings (Companion's advanced layouts)
  • Showing single Companion buttons on an ordinary PerritoDeck page
  • The WebSocket connection; the TCP one works with every Companion since 2.x

How far it's been tested

Against a simulated Companion that follows the published Satellite API, in automated tests. It hasn't been checked against a real Companion 3 or 4 yet, so reports are very welcome.

About the names

Stream Deck is a trademark of Corsair Memory, Inc. Companion is made by Bitfocus. PerritoDeck isn't affiliated with, endorsed by or sponsored by Elgato, Corsair or Bitfocus; their names appear here only to say what PerritoDeck works with. PerritoDeck can't use Stream Deck hardware as a panel.