Plugins are defined by a manifest file and contain at least a server or web app component, or both.
The Plugin Starter Template is a starting point and illustrates the different components of a Mattermost plugin.
A more detailed example is the Demo Plugin, which showcases many of the features of plugins.
See the manifest reference for more information.
The server component of a plugin is written in Go and runs as a subprocess of the Mattermost server process. The Go code extends the MattermostPlugin struct that contains an API and allows for the implementation of Hook methods that enable the plugin to interact with the Mattermost server.
Read more about the server-side of plugins here.
The desktop app is a shim of the web app, meaning any plugin that works in the web app will also work in the desktop app.
Read more about the web app component of plugins here.
Currently there is no mobile app component of plugins but it is planned for the near term.
If you’d like to better understand how plugins work, see the contributor documentation on plugins.