Porting Stream Deck Plugins to Stream Dock M18 — A Practical Guide
One of the greatest strengths of the VSDinside Stream Dock M18 is its open software ecosystem. If you’ve previously developed Stream Deck plugins, you can easily adapt most of them for the M18 using its fully compatible SDK. This guide walks you through the entire process of porting Stream Deck plugins to Stream Dock — including key differences, required code adjustments, and practical debugging tips.
1. Understanding the Plugin Structure
The Stream Dock SDK is designed to closely mirror the Stream Deck plugin architecture. If you’ve built plugins with a JSON manifest and WebSocket-based communication, the workflow will feel instantly familiar.
-
Manifest File: Defines actions, icons, and metadata — similar to Stream Deck’s
manifest.json. - Backend: Can be implemented in JavaScript, Python, C++, or any language supporting WebSocket communication.
- Frontend (Property Inspector): Built with HTML to create a polished configuration interface.
In short: if your plugin already works with Stream Deck, you already understand 90% of what Stream Dock requires.
2. Key Differences Between Stream Deck and Stream Dock
Although highly compatible, there are a few critical differences you need to know when porting your plugin:
-
Knob controller Naming: Stream Deck uses
["Encoder"], while Stream Dock uses["Knob"]. -
No Encoder or Layout Parameters: Stream Dock knobs don’t have
Encoder(dial/touchscreen) parameters or layouts. -
No
setFeedbackorsetFeedbackLayoutEvents: UsesetImageinstead to update knob icons. (Feedback-related APIs may be added in future updates.) -
UUID Case Sensitivity: In your
manifest.json, ensure alluuidvalues are lowercase. Stream Deck converts UUIDs to lowercase automatically, while Stream Dock currently sends them as-is. Keeping them lowercase ensures future compatibility.
3. Steps to Adapt Your Plugin
To successfully port your Stream Deck plugin to Stream Dock, follow these steps:
-
Update the manifest.json — Change all
uuidfields in theActionsarray to lowercase. -
Adjust Controller Type — Replace
["Encoder"]with["Knob"]for any knob-based actions. -
Update Knob Icon Logic — Replace any
setFeedbackorsetFeedbackLayoutcalls withsetImage. - Review Event Handling — Remove unsupported events or replace them with equivalent Stream Dock logic.
💡 Tip: For JavaScript-based plugins, you can view real-time logs using the Stream Dock developer console (see Section 5). For other languages, consider writing logs to a local file for easier debugging.
4. Testing and Exploring the VSDinside SDK
The VSDinside Plugin SDK is available on GitHub, including full sample code and demonstration projects to help you get started quickly.
👉 Access it here:
https://github.com/VSDinside/VSDinside-Plugin-SDK
This SDK is largely compatible with the Stream Deck SDK, so most plugins require only minimal modification. If you encounter issues or need guidance, join the official VSDinside Discord to get real-time support directly from our engineers.
5. Debugging Your Plugin
Web Debugging Console
You can access the built-in debugging console to monitor your Property Inspector (frontend) and JavaScript backend (WebView) in real time:
Node.js Debugging
If your plugin uses Node.js, add the following configuration to your manifest.json:
"Nodejs": {
"Debug": "--inspect=127.0.0.1:9233;",
"Version": "20"
}
Then open chrome://inspect in Chrome or Edge to attach the debugger. You can modify the port number as needed.
6. Publishing and Sharing Your Plugin
Once your plugin runs correctly, you can share it on the VSDinside Space platform. After review, your plugin will become available for all Stream Dock users to download directly.
You can also publish your plugin on GitHub to collect community feedback and contributions.
7. Why Developers Love Stream Dock
The Stream Dock SDK offers unmatched freedom for developers. There are no submission fees, no restrictive approval gates, and plugin updates deploy instantly. You can integrate with AI systems, OBS, Home Assistant, or any external API — possibilities that closed ecosystems often limit.
This openness has already attracted a growing community of independent developers creating innovative tools for video, audio, and live production workflows.
Conclusion — Build, Share, and Innovate
The VSDinside Stream Dock M18 is more than just a device — it’s a platform for creativity, automation, and collaboration. With open APIs, GitHub-hosted SDK resources, and real-time engineering support, porting your Stream Deck plugin is just the beginning.
Join our Discord or Reddit communities to collaborate, get help, or showcase your plugin ideas.
Start Developing Today
Visit the VSDinside Plugin SDK on GitHub for documentation, demos, and developer tools.
Mark Ellis
You should also add the lack of support for the TapTouch event on the N4. This prevents getting two separate events from a DialDown vs a tap on the panel.
Also on the knobs, the DialUp event occurs immediately after a DialDown, although the user has not released the physical dial. This prevents the use of short-long press style gestures.