Manifest
Generated schema reference for plugin manifests.
This page is generated from api/plugin.yaml.
The manifest is the source of truth for both supervised and external plugins.
Generated by internal/tools/rpcdocgen. Edit schema, not this page.
Related pages:
Required fields
command and args are runtime entrypoint fields used by Supervised plugins.
External plugins can provide placeholder values.
Example YAML
id: "my-plugin"
name: "My Cool Plugin"
author: "you"
description: "Reacts with a 🔥 to every reply posted."
version: "1.0.0"
command: "./myplugin.exe"
args:
- "--enable-coolness"
events_consumed:
- "EventThreadReplyCreated"
access:
handle: "example-plugin"
name: "Example Plugin"
permissions:
- "CREATE_REACTION"
configuration_schema:
fields:
- description: "Where to send event notifications."
id: "webhook_url"
label: "Webhook URL"
type: "string"Top-level fields
id
- Type:
string - Required: Yes
- Example:
my-plugin
The unique identifier of the plugin. Must match the pattern ^[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$.
(NOTE: May change in future.)
name
- Type:
string - Required: Yes
- Example:
My Cool Plugin
The name of the plugin. This is not a unique identifier and is only used for display purposes within the Plugin Registry and Storyden installation.
author
- Type:
string - Required: Yes
- Example:
you
The author of the plugin. Must match the pattern ^[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$.
(NOTE: May change in future.)
description
- Type:
string - Required: Yes
- Example:
Reacts with a 🔥 to every reply posted.
The description of the plugin. Displayed in Plugin Registries as well as in UI of Storyden installations when installed.
version
- Type:
string - Required: Yes
- Example:
1.0.0
The version of the plugin. This is not used for any versioning or compatibility purposes by the runtime and is only used for display purposes currently.
command
- Type:
string - Required: Yes
- Example:
./myplugin.exe
The executable or script used to launch your plugin. If your plugin is a binary (Go, Rust, C, etc) then this should be a path to that binary, it's best to put it in the root of your plugin archive like ./myplugin.exe or ./myplugin. If your plugin is a script (Python, Node, etc) then this should be the interpreter's $PATH executable (e.g. python or node) and you should include the script in the args field.
This field is used only for Supervised plugins. External plugins can provide a placeholder value and it will be ignored by the runtime.
Note that Storyden cannot guarantee that the runtime environment defined by the person hosting Storyden will have any language's interpreter on the $PATH. If you are running your own instance and building a custom plugin, you should FROM the Storyden base image for your deployment so that you know what runtimes are available.
If you are distributing a plugin for others to use, we highly recommend that you use a statically compiled language such as Go, Rust or Zig for your plugin so that it's guaranteed to be compatible with any runtime.
args
- Type:
array<string> - Required: No
- Example:
array[1]
Arguments passed to the "command" invocation. This field is used only for Supervised plugins. External plugins can omit it or provide placeholder values.
events_consumed
- Type:
array<object> - Required: No
- Example:
array[1]
The list of events the plugin subscribes to and will receive from the host via RPC. Events allow your plugins to react to things that humans or robots do on Storyden.
access
- Type:
object - Required: No
- Schema ref:
#/$defs/ManifestAccess - Example:
object
Optional API access configuration for this plugin. When provided, the host can provision a bot account and access key for API calls via RPC.
configuration_schema
- Type:
object - Required: No
- Schema ref:
common/plugin-configuration.yaml - Example:
object
No description provided in schema.
Nested objects
These objects are referenced by top-level fields.
ManifestAccess
bio
- Type:
string - Required: No
- Example:
This account is managed by a Storyden plugin.
Optional profile bio for the provisioned account.
handle
- Type:
string - Required: Yes
- Example:
example-plugin
The account handle to provision for this plugin's API identity.
links
- Type:
array<object> - Required: No
- Example:
array[1]
Optional profile links for the provisioned account.
metadata
- Type:
object - Required: No
- Example:
object
Optional profile metadata for the provisioned account.
name
- Type:
string - Required: Yes
- Example:
Example Plugin
The account display name to provision for this plugin's API identity.
permissions
- Type:
array<string> - Required: Yes
- Example:
array[2]
The list of permission names requested for API access. See https://storyden.org/docs/introduction/members/permissions for available values and descriptions.
ManifestAccessExternalLink
text
- Type:
string - Required: Yes
- Example:
Website
No description provided in schema.
url
- Type:
string - Required: Yes
- Example:
https://example.com
No description provided in schema.