Appearance
Author Wago plugins
A Wago plugin is a Go package linked into a generated runtime. It can define host imports, observe or intercept runtime work, manage instances, transform modules, extend the compiler, or provide a typed service to another plugin.
Start small. One definition, one provider, and one useful registration are enough for a real plugin.
Start here
Write your first plugin →
Scaffold a module, define one host import, generate its catalog, and test it.
Definitions and providers →
Describe what the plugin is, what it needs, and how Wago creates it.
Testing →
Check definitions, registration, catalog drift, and clean installation.
Publish →
Tag an open-source module and send its verified snapshot to the registry.
Before you begin
Complete Getting started to install the manager and select a standard runtime. The first-plugin walkthrough also needs Go 1.22 or newer on PATH. It starts from an empty directory; you do not need to clone Wago or publish a package to run its tests.
The later pages show focused code fragments, rather than cumulative edits to the answer plugin. The runnable examples on later pages include commands pinned to the public revision tested for this walkthrough. Those go run ...@revision commands work outside a Wago checkout and do not install plugins into your selected CLI runtime. The examples include their compiled Wasm guests.
Pick one next step
- To give Wasm a function, read Host imports.
- To call it from a guest, compare WAT, AssemblyScript, and TinyGo.
- To own work or observe calls, read Lifecycle and hooks.
- To accept settings, read Configuration.
- To connect plugins, read Contracts and dependencies.
- To host a WIT interface or a Preview 2 command, read Component Model.
- To extend compilation, start with Custom instructions, then Custom types.
Each privileged handle needs an exact publisher-authored Authority request and a consumer-reviewed grant. If your plugin only needs a host import, do not ask for instance management or runtime hooks.
Trust boundary
Plugins run as native Go code in the host process. Authorities limit access to Wago's privileged integration APIs; they do not sandbox file access, network access, process state, or other Go behavior. Keep the source public, keep dependencies narrow, and review plugins as native dependencies.
The complete runnable set lives in Wago's examples directory.
