Add a Rust Crate Dependency
Important constraints
- The compilation target is
wasm32-wasip2— only crates that support this target will work. - Crates that use threads, native system calls,
mmap, networking viastd::net, or platform-specific C libraries will not compile. - Pure Rust crates and crates that support
wasm32-wasigenerally work. - If unsure whether a crate compiles for WASM, add it and run
golem buildto find out.
Steps
-
Add the dependency to
Cargo.tomlIn the component’s
Cargo.toml(not a workspaceCargo.toml), add the crate under[dependencies]:[dependencies] my-crate = "1.0"If the project has a Cargo workspace with
[workspace.dependencies], add the version there and reference it withmy-crate = { workspace = true }in the component crate. -
Build to verify
golem buildDo NOT run
cargo builddirectly — always usegolem build. -
If the build fails
- Check the error for unsupported target or missing C dependencies — these crates are incompatible with
wasm32-wasip1. - Try enabling a
wasmorwasifeature flag if the crate provides one. - Look for an alternative crate that supports WASM.
- Check the error for unsupported target or missing C dependencies — these crates are incompatible with
Already available crates
These crates are already in the project’s Cargo.toml — do NOT add them again:
golem-rust— Golem agent framework, durability, transactionswstd— WASI standard library (HTTP client, async I/O)log— loggingserde/serde_json— serialization
HTTP and networking
Use wstd::http for HTTP requests. The standard std::net module is not available on WASM.
AI / LLM features
To add AI capabilities, add the relevant golem-ai-* provider crate (e.g., golem-ai-llm-openai) and configure the provider in the component’s golem.yaml dependencies section.
Last updated on