# Configuration
The `cargo wasi` subcomand [does not have any CLI flags of its
own](cli-usage.md) but it's still not a one-size-fits-all command, so
configuration needs to go somewhere! The `cargo wasi` command supports
[TOML](https://github.com/toml-lang/toml)-based configuration stored in your
[workspace](https://doc.rust-lang.org/book/ch14-03-cargo-workspaces.html)
`Cargo.toml` in the `[package.metadata]` section:
```toml
[package.metadata]
# ...
```
The keys supported by `cargo wasi` are:
```toml
[package.metadata]
wasm-opt = true
wasm-name-section = true
wasm-producers-section = true
```
For more documentation about each key, see its section below.
## `wasm-opt`
This configuration option is a boolean value (`true` or `false`) which
indicates whether the `wasm-opt` optimization tool from the [binaryen
toolkit](https://github.com/webassembly/binaryen) might be executed to further
optimize the produced WebAssembly binaries. The default for this option is
`true`.
If this option is set to `false`, then `wasm-opt` will never be executed.
If this option is set to `true`, this does not mean `wasm-opt` will
unconditionally run for all builds. A value of `true` means that `wasm-opt`
*may* run, depending on the internal heuristics of `cargo wasi`. For more
information about these heuristics and caveats, see [the documentation about
running `wasm-opt`](wasm-opt.md).
## `wasm-name-section`
The [`name` custom
section](http://webassembly.github.io/spec/core/appendix/custom.html#name-section)
records debugging information as names for wasm functions and variables. If you
want reasonable stack traces or debug information it's recommended to have the
`name` section present. Builds optimized for size though that have other
channels of debugging may wish to disable this.
This configuration option is a boolean value (`true` or `false`) which
indicates whether the `name` section should be present or not. This option
defaults to `true`.
If this option is set to `false` then it only takes effect when a build is
produced without debuginfo. For example a `cargo wasi build` binary which has
debuginfo would still have the `name` section present. A `cargo wasi build
--release` binary, however, would not have debuginfo and would also have the
`name` section removed.
## `wasm-producers-section`
The [`producers` custom
section](https://github.com/WebAssembly/tool-conventions/blob/master/ProducersSection.md)
records tools used to produce a WebAssembly module. This is meant for metric
collection in production systems, and is generally harmless to include. Builds
micro-optimized for size, however, may wish to exclude it.
This configuration option is a boolean value (`true` or `false`) which
indicates whether the `producers` section should be present or not. This option
defaults to `true`.
If this option is set to `false` then it only takes effect when a build is
produced without debuginfo. For example a `cargo wasi build` binary which has
debuginfo would still have the `producers` section present. A `cargo wasi build
--release` binary, however, would not have debuginfo and would also have the
`producers` section removed.