Skip to content

Publish a Wago plugin

Package a reusable Wago plugin, preview exactly what will ship, then publish it to the public plugin registry.

New plugin authors should finish Write your first plugin and Test a plugin before tagging a release.

Publishing requires a public GitHub repository and a Wago registry account. The dry run works before login.

Prepare the plugin

sh
wago init --plugin

Skip this command if the plugin already exists. The wizard collects the package metadata and creates the release files.

A publishable manifest points to public source and keeps discovery metadata under package. Wago plugins are open source.

Declare every privileged Wago integration as an exact Authority with a human reason and enforceable scope. Declare package requirements separately from typed, major-versioned Contracts. Provider catalogs return values from Providers(); they never self-register from init.

Sign in

sh
wago auth login

Refresh the catalog

sh
wago plugin catalog

Run the plugin tests. Then check that no definition changed during the test run:

sh
wago plugin catalog --check

Commit and tag

sh
git add wago.json wago.providers.json register
git commit -m "Prepare plugin v0.1.0"

Tag that commit and push it:

sh
git tag v0.1.0
git push origin HEAD v0.1.0

The version in the tag, manifest, and definitions must match.

Preview publication

sh
wago plugin publish --dry-run

Publish

sh
wago plugin publish

The publish dry run only prints the planned mutation. Actual publishing first checks the local catalog against the committed snapshot, then downloads the exact tagged Go module. Its wago.json package metadata and wago.providers.json must match the local release, and its h1: checksum is sent with the request. Local code runs only for the local drift check; Wago does not execute code from the downloaded tag.

The registry independently downloads that same exact module and checksum, reads both artifacts without executing plugin code, and rejects any mismatch. Consumers later review the stored immutable definitions before plugin code is downloaded or built; linked definitions must match their reviewed digests.

Released under the Apache 2.0 License.