manifest.json Config
Starting with Companion 3.0, Companion looks at the companion/manifest.json file for module information (before 3.0 it looked at package.json) This provides a companion specific and programming language agnostic manifest about your module. In the future this will allow us to do more powerful things!
Read the auto-generated documentation for manifest.json for more details.
Tip: At any point you can validate your manifest.json by running yarn companion-module-check.
Format
If you are comfortable reading or working with JSON Schema, you can find the formal definition in the module-base repo
A full manifest definition is:
{
"id": "fake-module",
"name": "fake module",
"shortname": "fake",
"description": "Fake Module",
"manufacturer": "Fake Module",
"products": ["Fake"],
"keywords": ["Fake"],
"version": "0.0.0",
"license": "MIT",
"repository": "git+https://github.com/bitfocus/companion-module-fake-module.git",
"bugs": "https://github.com/bitfocus/companion-module-fake-module/issues",
"maintainers": [
{
"name": "Your name",
"email": "your.email@example.com"
}
],
"legacyIds": [],
"runtime": {
"type": "node22",
"api": "nodejs-ipc",
"apiVersion": "0.0.0",
"entrypoint": "../dist/index.js"
}
}
Properties
idunique id of your module. This has to match the repository name excluding thecompanion-module-name???shortname???description???manufacturer???productsAn array of strings with the names of the products supported by your module. Often there is only a single product or sometimes the name of a series of products is better known than the products itself, then it is also good to give the series name. Your module will be listed with all associated product names.keywordsKeywords to allow users to more easily find your module by searching, please do not repeat the manufacturer or product names here.versionVersion of your module. This should be left as0.0.0, the build process populates with the value in yourpackage.jsonlicenseLicense of your module code. This needs to be something MIT compatible to be allowed to be distributed with the official buildsrepositoryGit URL to the repositorybugsURL to the issue tracker. Users can follow this link to report bugsmaintainersList of maintainers of this module.legacyIds(Optional) List of old module ids. If the module has been renamed, the old names should be listed here to allow for seamless upgrading of old configsruntimeThis defines the runtime requirements of your module. Described more below
The runtime block is defined as:
typeThis can be eithernode18ornode22, depending on the required version of Node.js. In the future this may allow for other languages to be used.apiThis must benodejs-ipc. It defines the protocol used between your module and Companion. In the future more options will be possible, to allow for other languages.apiVersionThis should be left as0.0.0, the build process populates with the correct valueentrypointThe main JavaScript file for your module. This is what companion will execute to start your module.