Appearance
Using plugins
Wago keeps host capabilities outside the core runtime. Plugins add the capabilities a module needs without putting every integration into Wago itself.
In this guide, you will add WASI Preview 1 support to a local project and run a module that writes to standard output.

Before you begin
You need:
- Wago installed with a runtime selected. Complete Getting started first if
wago --versiondoes not show an active runtime. - Go 1.22 or newer. Wago plugins are Go modules compiled into your runtime.
Check both tools from your terminal:
sh
wago --version
go versionCreate a local Wago project
Create or enter a directory for the example, then initialize it:
sh
mkdir wasi-example
cd wasi-example
wago init --runThis creates a wago.json manifest. Keeping the plugin local makes the project's dependencies and reviewed access reproducible instead of changing the runtime used by every project on your machine.
Add WASI
WASI defines system-style interfaces that WebAssembly modules can import. Wago provides those interfaces through the official wago-org/wasi plugin:
sh
wago add wago-org/wasiKeep Preview 1 selected for this example. Review the source, dependencies, and requested Authorities before accepting them. Plugins are native Go dependencies; grants control access to privileged Wago integration APIs, but they do not sandbox arbitrary plugin code.
Now, check to make sure it is installed:
sh
wago plugins listA lot of the subcommands have aliases so that it reads naturally. For example,
wago pluginandwago pluginsboth work the same way.
The command updates wago.json, writes the complete resolved graph and reviewed grants to wago-lock.json, and builds a project runtime. Commit both JSON files with your project.
Download a WASI module
This small module imports WASI Preview 1's fd_write function and calls it from _start:
sh
curl -fsSL https://wago.sh/corpora/wasi-hello.wasm -o wasi-hello.wasmYou can see the import before executing the module:
sh
wago module imports wasi-hello.wasmRun it
sh
wago run wasi-hello.wasmYou should see:
text
hello from wasiYou can even compile it to a standalone executable:
bash
wago compile wasi-hello.wasm -o wasi-hello
./wasi-hellopowershell
wago compile wasi-hello.wasm -o wasi-hello.exe
.\wasi-hello.exeWago finds the nearest wago.json, selects its project runtime, and uses the WASI plugin to satisfy the module's import.
Where to go next
Install and choose scope
Learn when to use local, global, or bare plugin selection.
Review grants and lockfiles
Understand Authorities, guest capabilities, dependency graphs, and reproducible builds.
Write your own plugin
Scaffold a Go module and add a host import from definition to catalog.
Browse plugins
Find published host capabilities and runtime extensions.
Troubleshoot a build
Fix missing Go tools, denied grants, stale lockfiles, and plugin build failures.
