Skip to main content
Version: 1.0 (alpha)

wasmcloud.toml

Even with all of wasmCloud's benefits, it still has every developers' least favorite file(s) - the config file. Luckily, we've cut it down to just one file and made it as simple as possible to use.

You can think of wasmcloud.toml as the package.json or Cargo.toml of the wasmCloud ecosystem. It's the main config file for any of your wasmCloud projects. Let's look at an example:

toml
name = "http-hello-world"
language = "rust"
type = "component"
version = "0.1.0"

[component]
wit_world = "hello"
wasm_target = "wasm32-wasi-preview2"

This is a fairly minimal configuration for a wasmCloud Rust hello world component. It defines everything needed to build and sign the component, including the language toolchain to use.

wash build

The partner-in-crime to wasmcloud.toml is wash build. This command takes all the options set in the wasmcloud.toml file to build and sign the component/provider/interface.

See the build docs for more info.

wasmcloud.toml Spec

Common Config

SettingTypeDefaultDescription
namestringName of the project
versionstringSemantic version of the project
pathstring{pwd}Path to the project directory to determine where built and signed artifacts are output
languageenum[rust, tinygo]Language that component or provider is written in
typeenum[component, provider, interface ]Type of wasmcloud artifact that is being generated
wasm_bin_namestring"name" settingExpected name of the wasm module binary that will be generated

Language Config - [tinygo]

SettingTypeDefaultDescription
tinygo_pathstringwhich tinygoThe path to the tinygo binary

Language Config - [rust]

SettingTypeDefaultDescription
cargo_pathstringwhich cargoThe path to the cargo binary
target_pathstring./targetPath to cargo/rust's target directory

Type Config - [component]

SettingTypeDefaultDescription
claimslist[]The list of provider claims that this component requires. eg. ["wasmcloud:httpserver", "wasmcloud:blobstore"]
registrystringlocalhost:8080The registry to push to. eg. "localhost:8080"
push_insecurebooleanfalseWhether to push to the registry insecurely
key_directorystring~/.wash/keysThe directory to store the private signing keys in
wasm_targetstringwasm32-unknown-unknownCompile target. Can be one of: wasm32-unknown-unknown, wasm32-wasi-preview1, wasm32-wasi-preview2
call_aliasstringThe call alias of the component
build_artifactstring/path/to/project/build/{filename}.wasmOptional override path where wash can expect to find the built and unsigned WebAssembly artifact
build_commandstringLanguage specific commandOptional command to run instead of inferring the default language toolchain build command. Supports commands in the format of command ...arg. wash expects that the build command will result in an artifact under the project build folder named either {wasm_bin_name}.wasm if supplied or {name}.wasm otherwise.
destinationstring/path/to/project/build/{filename}_s.wasmFile path to output the destination WebAssembly artifact after building and signing.

Type Config - [provider]

SettingTypeDefaultDescription
capability_idstringThe capability ID of the provider
vendorstringThe vendor name of the provider

Type Config - [interface]

SettingTypeDefaultDescription
html_targetstring./htmlDirectory to output HTML
codegen_configstring.Path to codegen.toml file