Skip to main content

Plugins

proto supports a pluggable architecture as a means for consumers to integrate and manage custom tools (languages, CLIs, etc) within proto's toolchain. It's not possible for proto to support everything in core directly, so plugins are a way for the community to extend the toolchain to their needs.

Enabling plugins

Plugins can be enabled by configuring them in .prototools files, within the [plugins] section. The map key is the plugin name in kebab-case, which is used as the binary/tool name in proto, and also the name for configuration and cache purposes. The map value is a plugin locator string that defines a protocol and source location.

.prototools
[plugins]
<id> = "<protocol>://<location>"

Creating plugins

To ease the plugin development process, proto supports 2 types of plugins, a non-WASM configuration based plugin for basic use cases, and a WASM based plugin for advanced use cases.

Publish a plugin

proto's registry is currently powered by static JSON files located in our official proto repository. View that link for information on how to publish a plugin.