Skip to content

Plugin Manifest Format

Jsonschema

The plugin manifest JSON file defines the details of your plugin and how TilePad can interact with your plugin and what actions it provides.

Your plugin manifest should be placed at:

.tilepadPlugin/manifest.json


A typical PluginManifest file looks like this:

{
"plugin": { ... },
"bin": { ... },
"category": { ... },
"actions": { ... }
}

Each section is described in detail below.


Defines basic metadata about the plugin.

{
"id": "com.example.myplugin",
"name": "My Plugin",
"version": "1.0.0",
"authors": ["Your Name"],
"description": "What this plugin does",
"icon": "https://example.com/icon.png"
}
FieldTypeRequiredDescription
idstringYesUnique plugin ID in reverse domain format (e.g. com.example.plugin)
namestringYesHuman-readable name
versionstringYesPlugin version
authorsstring[]NoList of author names
descriptionstringNoBrief explanation of the plugin
iconstring (URL)NoPath to the icon to use relative to .tilepadPlugin (Must be within this directory)

Describes how your plugin is executed, either via Node.js or as a native binary.

{
"node": {
"entrypoint": "dist/index.js",
"version": "=22.18.0"
}
}
FieldTypeRequiredDescription
entrypointstringYesPath to JS entrypoint
versionstringNoNode.js version range (semver)

{
"native": [
{
"os": "windows",
"arch": "x64",
"path": "bin/windows/plugin.exe"
},
{
"os": "linux",
"arch": "x64",
"path": "bin/linux/plugin"
}
]
}
FieldTypeRequiredDescription
osstringYesTarget OS: windows, macos, linux
archstringYesCPU architecture: x86, x64, arm, arm64
pathstringYesPath to executable relative to .tilepadPlugin (Must be within this directory)

Groups the plugin’s actions under a labeled category in the UI.

{
"label": "Media",
"icon": "media-icon"
}
FieldTypeRequiredDescription
labelstringYesDisplay name in the UI
iconstringNoPath to the icon to use relative to .tilepadPlugin (Must be within this directory)

Defines one or more user-invokable actions.

{
"{action_id}": {
"label": "Action Label",
"icon": "icon-name",
"display": "ui/display.html",
"inspector": "ui/inspector.html",
"description": "Short tooltip text",
"icon_options": {
"padding": 10,
"background_color": "#202020",
"border_color": "#cccccc"
}
}
}

action_id must match the pattern [a-zA-Z_-]+ (e.g. my_action, myAction, my-action)

FieldTypeRequiredDescription
labelstringYesLabel shown in the UI
iconstringNoPath to the icon to use relative to .tilepadPlugin (Must be within this directory)
displaystringNoPath to the display HTML file to use relative to .tilepadPlugin (Must be within this directory)
inspectorstringNoPath to the inspector HTML file to use relative to .tilepadPlugin (Must be within this directory)HTML
descriptionstringNoDescription tooltip for the action
icon_optionsobjectNoDefault options for how the icon and tile is displayed

Customize how the tile icon appears in the grid.

{
"padding": 8,
"background_color": "#000000",
"border_color": "#ffffff"
}
FieldTypeDescription
paddingnumberPadding in pixels
background_colorstringTile background color
border_colorstringBorder color

{
"plugin": {
"id": "com.example.hello",
"name": "Hello Plugin",
"version": "1.0.0",
"authors": ["Dev Name"]
},
"category": {
"label": "Utilities"
},
"actions": {
"say_hello": {
"label": "Say Hello",
"icon": "images/logo.svg"
}
}
}