About this project

Wago is a WebAssembly runtime written entirely in Go. Rather than interpreting Wasm, it compiles modules directly to native machine code, so it can be embedded into Go programs without CGO, keeping ordinary Go builds and cross-compilation straightforward. The project presents itself as quick, compact and extensible, and states that it is still in beta, meaning APIs and generated .wago artifacts may change. Characteristics the project highlights: - Pure Go: embedding does not require a C toolchain. - Standards focused: the runtime is said to pass the official WebAssembly test suite, plus fuzzing and real-world corpora. - Extensible: WASI, the Component Model and other host capabilities live outside the core runtime as plugins. - Standalone executables: a .wasm file can be compiled into a small native binary, which the README suggests is useful for CLI tools. - Platforms: Linux, macOS and Windows on amd64 and arm64, with WebAssembly feature coverage varying by backend. A feature matrix file documents exact coverage. Installation On macOS and Linux the documented one-liner downloads an installer script and pipes it to sh; on Windows, PowerShell users run an equivalent irm command. These install a manager, which then installs a runtime. The documentation site covers alternative installation methods, release channels and source builds. Running modules After installation a module can be executed directly: running a small Fibonacci Wasm file with an argument prints the expected result. To create a standalone binary, the compile subcommand takes a .wasm input and an output path, and the resulting executable accepts the same arguments. Using Wago from Go Go developers add the module with go get github.com/wago-org/wago. The repository ships numbered examples, including a typed runtime example that compiles a module, creates an instance and calls an exported function. A separate documentation guide covers embedding Wago in Go. Host capabilities and plugins Host integrations are deliberately kept outside the core runtime. A project can be initialised with the init command, and plugins such as a WASI implementation are added by name, for example wago-org/wasi. A plugin registry site is provided for browsing what is available. Performance The README states that Wago uses a few kilobytes of RAM and claims compile times roughly three times faster and execution around 40 percent faster than wazero. The project links to a benchmarks page and a benchmark directory in the repository. Those figures are the maintainers' own measurements and should be checked against your own workloads before relying on them. Project status and licensing Wago is released under the Apache License 2.0 and developed free of charge, with sponsorship encouraged. The repository includes documentation, examples, a feature matrix, an architecture document, a roadmap, contribution guidelines and an issue tracker. Overall, Wago targets Go developers who want to run or embed WebAssembly without a C dependency, and who prefer a small runtime core whose host features are added through plugins. Its beta status and the fact that the benchmark numbers come from the project itself are the main points to weigh before adopting it.