Skip to main content
Version: 1.0

Useful WebAssembly Tools

Beyond the wasmCloud toolchain, the WebAssembly community maintains many open source projects that are invaluable for Wasm users. This is a non-comprehensive list of tools we've found particularly useful.

WIT Syntax Highlighting

Syntax highlighting can make WIT definitions easier to read and bring a more legible WIT experience to your IDE. Here are a few options for syntax highlighting in popular editors:

VS Code WIT Syntax Highlighting

The VSCode extension maintained by the Bytecode Alliance can be installed either via the extensions marketplace or manually.

WIT syntax highlighting

VS Code Extension Manual installation

For a manual install, you will need npm. Run:

shell
git clone https://github.com/bytecodealliance/vscode-wit.git && cd vscode-wit
shell
npm ci && npm run install-plugin

Neovim WIT Syntax Highlighting

The tree-sitter-wit Tree-sitter parser maintained by liamwh can be installed with nvim-treesitter. Installation instructions can be found on either of the two linked repositories.

WIT dependency management with wit-deps

It's important to ensure consistency between the WIT dependencies defined in your deps.toml manifest and the actual files in your project. wit-deps is a simple dependency management CLI tool maintained by the Bytecode Alliance that ensures your dependencies are consistently and correctly populated.

You will need Rust and cargo. Install wit-deps by running:

shell
cargo install wit-deps-cli

Run wit-deps from the root of a wasmCloud project directory (one level above wit) to populate the deps directory with the definitions specified in deps.toml and create a deps.lock file:

shell
wit-deps

For more detail on wit-deps, see the documentation in the project README.

WebAssembly artifact manipulation with wasm-tools

Sometimes you might want to observe or manipulate a component independently of wasmCloud—perhaps to view the component's WIT interface, compose Wasm components into one, or even for more niche jobs like converting a WebAssembly module to a component. The wasm-tools CLI tool is a utility belt with a long list of options.

You will need Rust and cargo. Install wasm-tools by running:

shell
cargo install wasm-tools

A standalone WebAssembly runtime: Wasmtime

Wasmtime is the WebAssembly runtime used by the wasmCloud host. If you'd like to test a component against standalone Wasmtime or explore runtime features, you can also install Wasmtime locally and use it to run components.

To install on Linux or macOs run:

shell
curl https://wasmtime.dev/install.sh -sSf | bash

Virtualize components with WASI Virt

WASI Virt allows you to encapsulate a virtualized component within another component. This is particularly useful when you want to use potentially sensitive WASI APIs such as Sockets and Filesystem but don't want to give them access to core operating system interfaces.

WASI Virt requires the nightly release channel for Rust:

bash
rustup toolchain install nightly

Install the wasi-virt command line tool with cargo:

bash
cargo +nightly install --git https://github.com/bytecodealliance/wasi-virt

Learn more about using WASI Virt with wasmCloud on the Virtualize developer page.

Combine components with WebAssembly Compositions (WAC)

WAC is a powerful CLI tool for declaratively composing components, enabling you to link components at build. WAC uses a superset of WIT called WAC to describe component relationships. You can learn how to use the WAC language in the WAC language guide.

WAC requires Cargo. Once you've installed Cargo:

shell
cargo install wac-cli