.plg file is the distribution format for an Arupa plugin. It is a ZIP
archive containing the plugin manifest and the files required by the plugin at
runtime. The Kernel scans files with the .plg extension, reads the manifest,
and extracts the package into its configured temporary directory when the
plugin is started.
Package layout
A valid package hasinfo.yaml at its archive root and a Content directory:
Content is the plugin’s runtime root. The Kernel exposes its extracted path
through the $PLUGIN_ROOT placeholder in info.yaml and in resource
declarations returned during registration. A plugin should keep its executable
and all static resources under this directory.
The package must contain both info.yaml and Content/. A package that cannot
be read as a ZIP archive, does not have a root-level manifest, or does not have
the content directory cannot be loaded.
info.yaml
The manifest identifies the plugin and tells the Kernel how to start it:
Other fields are retained as plugin metadata. They can be used by the Kernel’s
plugin management features or by the application UI, but they do not replace
the required runtime fields above.
Backend and command
For a WASM plugin, setType to wasm and point Command to the module in
Content:
Type to grpc and point Command to the executable in
Content:
$PLUGIN_ROOT and provides the PLUGIN_ROOT environment variable. This lets
the executable locate resources without depending on the temporary extraction
path chosen by the Kernel.
Build and package
Build the plugin and assemble the package in the following order.1. Compile the plugin
Compile the plugin for its selected backend. The result is one runtime artifact: a WASM module for a WASM plugin or an executable for a gRPC plugin. Keep the artifact available so you can copy it into the package’sContent/
directory.
2. Create the package directory
Create a temporary directory for the package.info.yaml and Content/ must
be directly under this directory:
3. Create info.yaml
Create info.yaml at the package root. Set Command to the artifact’s path
relative to Content/ by using $PLUGIN_ROOT:
Type to grpc and point Command to the
executable, for example Command: $PLUGIN_ROOT/my-plugin.
4. Place the runtime artifact and static resources
Copy the compiled artifact intoContent/. Its location must match
info.yaml:
5. Create the ZIP archive
Create the archive from inside the staging directory. This keepsinfo.yaml
and Content/ at the archive root:
plugins/my-plugin.plg is ready to place in the Kernel’s
configured PluginDir. Scan the directory or restart the Kernel to discover
the package.
Loading a package
The Kernel’s package workflow is:- scan
PluginDirfor.plgfiles; - read and validate each package’s
info.yaml; - extract the selected package into
PluginTempDir; - start the backend described by
TypeandCommand; - call the plugin’s registration method; and
- connect the routes, static mounts, Socket.IO resources, and message handlers returned by the plugin.
Name and Version in the registration response must match the values in
info.yaml; otherwise the Kernel rejects the package.
See Plugin configuration for startup behavior,
runtime parameters, and the execution user for gRPC plugins.