Prerequisites
Before you begin, ensure you have:- Hyperlane CLI installed.
- Funded wallets on both the EVM and Cosmos chains.
- Cosmos signer keys must be raw hex private keys (64 hex chars, optional
0x). If you use mnemonics, derive/export the hex key first.
- Cosmos signer keys must be raw hex private keys (64 hex chars, optional
- Hyperlane core components (Mailbox, etc.) already deployed on both chains.
- For Cosmos, see Deploy to a Cosmos Chain.
- For EVM, see Deploy Hyperlane.
Walkthrough
Step 1: Create the Warp Route Config
Create a YAML file (e.g.,warp-route-config.yaml) that defines the token and connection details for both chains.
Key Fields
type: Usecollateralfor the chain where the original token exists, andsyntheticfor the chain where the new token will be minted.token: On EVM, this is the ERC20 contract address. On Cosmos, if usingcollateral, this would be the native denom (e.g.,uatom).foreignDeployment: This field is used to link to an existing Warp Route deployment on the remote chain. If you have already deployed the Cosmos side, provide its address here to enroll it in the EVM deployment.interchainSecurityModule: Set to0x0000000000000000000000000000000000000000to use the default ISM configured in the destination Mailbox.gas: In the EVM config,gassets the Cosmos-side compute unit ceiling for message delivery. Start conservative and increase if messages run out of gas.
Step 2: Deploy the Warp Route
Run the deployment command using the Hyperlane CLI:Private key format: Both EVM and Cosmos keys should be provided in hex format (64 characters, with or without You can also pass protocol-specific flags directly (
0x prefix). The CLI handles bech32 derivation for Cosmos automatically.To avoid prompts, set both env vars before running deploy:--key for EVM and --key.cosmosnative for Cosmos).Step 3: Verify the Deployment
After the deployment completes, you can verify the state of your Warp Route on both sides:SYMBOL/<synthetic_chain_name> (for this example, typically USDC/yourcosmoschain).
This will output the current configuration and addresses for the route.
Step 4: Transfer Ownership for Production (Recommended)
If you deployed with hot deployer keys, update the route owners and re-apply before production:- Update
ownerfields inwarp-route-config.yamlto your production owner addresses. - Re-apply with the generated core config:
When
--config points to a local deploy config file, you must also pass the matching core config with --warp.Step 5: Test a Transfer
hyperlane warp send does not currently support Cosmos SDK chains.- Run a relayer between both chains.
- Initiate transfers from EVM using the deployed HypERC20 contract.
- From Cosmos, submit
/hyperlane.warp.v1.MsgRemoteTransferwith your chain’s nativetxtooling. - Before Cosmos-side transfer submission, quote required gas payment via
QueryQuoteRemoteTransfer(hyperlane.warp.v1.Query/QuoteRemoteTransfer). - Optionally use the Hyperlane Warp UI template for manual end-to-end testing (see Bridge UI Guide).
Production Handoff
For ecosystem discoverability:- Open a PR to hyperlane-registry with your route artifacts.
- Add
logoURIon route tokens andcoinGeckoIdwhere applicable. - If you want listing in Hyperlane-hosted bridge surfaces (such as Nexus), contact the Hyperlane team after your registry PR is merged.
Important Considerations
Address Formats
EVM chains use hex addresses (starting with0x), while Cosmos chains use bech32 addresses (e.g., cosmos1...). The Hyperlane CLI handles the conversion between these formats automatically when interacting with the different protocols.
Gas and Fees
When sending a message from EVM to Cosmos, you must specify a sufficientgas limit in your config. This represents the compute units on the Cosmos side. Set this as a ceiling based on expected execution and raise it if delivery fails due to out-of-gas. Ensure your EVM wallet has enough native tokens to pay for the interchain gas fees.