Build profile options


forc deploy [OPTIONS] [SIGNING_KEY]


<SIGNING_KEY> Set the key to be used for signing



Print the generated Sway AST (Abstract Syntax Tree)

--build-profile <BUILD_PROFILE>

Name of the build profile to use.

If unspecified, forc will use debug build profile.

--dca-graph <DCA_GRAPH>

Print the computed Sway DCA graph. DCA graph is printed to the specified path. If specified '' graph is printed to stdout

--dca-graph-url-format <DCA_GRAPH_URL_FORMAT>

Specifies the url format to be used in the generated dot file. Variables {path}, {line} {col} can be used in the provided format. An example for vscode would be: "vscode://file/{path}:{line}:{col}"


Generate a default salt (0x0000000000000000000000000000000000000000000000000000000000000000) for the contract. Useful for CI, to create reproducable deployments


Sign the transaction with default signer that is pre-funded by fuel-core. Useful for testing against local node


Treat warnings as errors


Print the finalized ASM.

This is the state of the ASM with registers allocated and optimisations applied.

-g, --output-debug <DEBUG_FILE>

If set, outputs source file mapping in JSON format

--gas-limit <LIMIT>

Gas limit for the transaction

--gas-price <PRICE>

Gas price for the transaction

-h, --help

Print help information


Print the generated ASM.

This is the state of the ASM prior to performing register allocation and other ASM optimisations.

--ipfs-node <IPFS_NODE>

The IPFS Node to use for fetching IPFS sources.

Possible values: PUBLIC, LOCAL, <GATEWAY_URL>


Print the generated Sway IR (Intermediate Representation)


By default the JSON for ABIs is formatted for human readability. By using this option JSON output will be "minified", i.e. all on one line without whitespace


Outputs json abi with callpaths instead of names for struct and enums


By default the JSON for initial storage slots is formatted for human readability. By using this option JSON output will be "minified", i.e. all on one line without whitespace


Requires that the Forc.lock file is up-to-date. If the lock file is missing, or it needs to be updated, Forc will exit with an error


Sign the deployment transaction manually

--maturity <MATURITY>

Block height until which tx cannot be included

[default: 0]

--metrics-outfile <METRICS_OUTFILE>

Output compilation metrics into file

--node-url <NODE_URL>

The URL of the Fuel node to which we're submitting the transaction. If unspecified, checks the manifest's network table, then falls back to

You can also use --target or --testnet to specify the Fuel node.


-o, --output-bin <BIN_FILE>

If set, outputs a binary file representing the script bytes


Offline mode, prevents Forc from using the network when managing dependencies. Meaning it will only try to use previously downloaded dependencies

--output-directory <OUTPUT_DIRECTORY>

The directory in which the sway compiler output artifacts are placed.

By default, this is <project-root>/out.

-p, --path <PATH>

Path to the project, if not specified, current working directory will be used


Use release build plan. If a custom release plan is not specified, it is implicitly added to the manifest file.

If --build-profile is also provided, forc omits this flag and uses provided build-profile.


Output build errors and warnings in reverse order

--salt <SALT>

Optional 256-bit hexadecimal literal(s) to redeploy contracts.

For a single contract, use --salt <SALT>, eg.: forc deploy --salt 0x0000000000000000000000000000000000000000000000000000000000000001

For a workspace with multiple contracts, use --salt <CONTRACT_NAME>:<SALT> to specify a salt for each contract, eg.:

forc deploy --salt contract_a:0x0000000000000000000000000000000000000000000000000000000000000001 --salt contract_b:0x0000000000000000000000000000000000000000000000000000000000000002

-t, --terse

Terse mode. Limited warning and error output

--target <TARGET>

Use preset configurations for deploying to a specific target.

You can also use --node-url or --testnet to specify the Fuel node.

Possible values are: [beta-1, beta-2, beta-3, beta-4, local]


Use preset configuration for the latest testnet.

You can also use --node-url or --target to specify the Fuel node.


Output the time elapsed over each part of the compilation process


Deprecated in favor of --default-signer

-V, --version

Print version information


You can use forc deploy, which triggers a contract deployment transaction and sends it to a running node.

Alternatively, you can deploy your Sway contract programmatically using fuels-rs, our Rust SDK.

You can find an example within our fuels-rs book.