Skip to main content

Companion Surface Developers' Guide

This section describes how to develop your own surface modules for Companion — the plugins that let Companion drive a physical control surface (buttons, encoders, displays and indicators) and receive input back from it.

Surface and connection modules share most of their tooling and workflow, so these pages focus on what is specific to surfaces and link back to the Connection Development section for the common setup, packaging and release steps. If you are building a module that controls a device or piece of software instead of a control surface, you want the Connection Development section.

The authoritative, autogenerated API reference lives at bitfocus.github.io/companion-surface-api. Existing modules make good real-world references — which one fits depends on how your surface connects (see Getting Started with Surfaces).

Below is an outline of the top-level pages and folders in this section.