Platforms also deploy Conduits as distribution channels for existing strategies. See Deploy a Conduit as a platform for the platform-focused guide.
When to use a Conduit
Use a Conduit when:- Multiple Multi-Vehicles need access to the same underlying yield source
- You want a single shared position instead of separate per-Multi-Vehicle positions
- You need ERC20 transferable shares representing a pro-rata claim on the underlying Vehicle
Prerequisites
- A deployed STEAM Vehicle (e.g., an
ERC4626Vehicle) - A deployed
CoreFactory, anAssetRegistry, and aFreezablePausableBeaconholding the Conduit implementation - The
CONDUIT_SPAWNrole on the factory’s access control —spawnis gated on it - The deposit asset authorized in the AssetRegistry — the factory reads the initial deposit size from there at spawn time
- Familiarity with the STEAM standard
Deploy a Conduit
1
Deploy the ConduitFactory
The
ConduitFactory is responsible for spawning new Conduit instances. Its constructor pins the deployment plumbing and the trusted factories used to validate the optional modules you pass to spawn.2
Configure spawn parameters
Define the Conduit’s configuration. The deposit asset is the underlying Vehicle’s own
asset() and the initial deposit amount is read from the AssetRegistry — neither is passed here.transferEnabled is a one-way latch. Deploy with false to mint and burn only, then flip it once with enableTransfers() (gated on CONDUIT_SET_TRANSFER_ENABLED); it can never be turned back off. A user-to-user transfer needs both transferEnabled and — when an accountList is set — accountList.canTransfer(from, to).3
Spawn the Conduit
Resolve the deposit asset from the Vehicle, look up the amount in the AssetRegistry, approve the factory, then spawn. The deployment salt travels inside
params, so spawn takes a single argument.The initial deposit protects against inflation attacks by bootstrapping the share supply. Once the seed query settles, the factory transfers the shares it received to the burn address, checks
totalSupply() >= initialExpectedSupply, and calls enable() on the Conduit. The registry amount also dampens cumulative rounding losses from nested vault accounting — see Asset registry for sizing guidance.Make a deposit
After deployment, deposit into the Conduit. The Conduit handles pulling assets and creating the STEAM query in the underlying Vehicle.Redeem from a Conduit
CallcreateRedeemFromConduitShares() with the amount of Conduit shares to burn. It converts that cShare amount to Vehicle shares and routes through the same create entrypoint as a deposit, so the gating and salt binding are identical. No ERC20 approval is needed — the Conduit burns your shares internally.
Next steps
Configure fees
Add fee structures to your Conduit.
Learn about Conduits
Understand Conduit architecture in depth.