Serenade provides engine plumbing for two Wasm host lanes. Product apps own WIT worlds, guest ABIs, fixtures, and proposal gates.
| Lane | Crate | Engine | Typical use |
|---|---|---|---|
| Component Model plugins | serenade-component-host |
wasmtime | Versioned WIT guests (product supplies bindgen! world) |
| Polyglot sandboxes | serenade-sandbox |
Wasmer WASIX | Untrusted scripts / packages (stdin/stdout jobs) |
FrameworkBundle does not register Wasm hosts. Apps depend on the crates they need and wire runners themselves (same opt-in pattern as persistence adapters).
| Concern | Owner |
|---|---|
| Engine/Store/Linker helpers; load component from path | Serenade |
Package cache root, run_package / run_module, GuestOutput, JSON decode |
Serenade |
| WIT package names, commerce types, fixtures, validate-then-apply | Product |
| Cache env | SERENADE_WASMER_CACHE (product may alias its own env) |
See BUNDLES.md. In-process bundles remain the trusted DI story. Wasm guests stay sandboxed; Serenade only supplies the host runners.
- Epic #115
- Illustrative product map: RUSTASHOP.md