feat: Hyperlane cross-chain transfers action provider
- Dominant language
- TypeScript
- Stars
- 1.3k
- Forks
- 815
- Avg merge
- 13h 31m
- Merged PRs (30d)
- 2
Description
### Language Implementation
- [x] Python
### Feature Type
- [x] Action Provider Template
### 🚀 The feature, motivation and pitch
Add a Hyperlane action provider so AgentKit agents can send cross-chain messages and Warp Route token transfers natively, without leaving the agent loop.
Hyperlane is listed in [WISHLIST.md](https://github.com/coinbase/agentkit/blob/main/WISHLIST.md) under *Cross-Chain & Infrastructure* ("Hyperlane cross-chain transfers"), and currently has no PR open or merged.
**Why it matters.** AgentKit already supports any EVM chain via `EvmWalletProvider`, but agents have no first-class way to move value or messages between those chains. Hyperlane is the natural fit because:
1. It is permissionless — no allowlisting needed for new tokens or chains.
2. It is deployed on every chain AgentKit currently targets (Base, Optimism, Arbitrum, Polygon, BSC, Ethereum) via the same canonical `Mailbox` interface.
3. Warp Routes give a uniform interface for bridging ERC-20s (incl. USDC) across these chains.
**Implementation note.** No official Hyperlane Python SDK exists, so the provider will encode calldata directly via `web3.py` against the published Mailbox + Warp Route ABIs (the same approach the existing Aave provider in #865 takes against the Aave Pool ABI). Verified Base addresses from [hyperlane-registry](https://github.com/hyperlane-xyz/hyperlane-registry/blob/main/chains/base/addresses.yaml):
- Mailbox: `0xeA87ae93Fa0019a82A727bfd3eBd1cFCa8f64f1D`
- InterchainGasPaymaster: `0xc3F23848Ed2e04C0c6d41bd7804fa8f89F940B94`
**Proposed scope** (single Python PR following the Aave precedent in #865):
- Send a Warp Route token transfer to a recipient on a destination chain
- Quote the interchain gas payment for a given destination
- Read the delivery status of a dispatched message (`pending`/`delivered`)
- Constants for canonical Mailbox + IGP addresses on Base, Optimism, Arbitrum, Ethereum
TypeScript provider in a follow-up PR after Python lands.
File layout follows the merged Aave action provider in #865 (provider, schemas, constants, utils, README, changelog entry, unit tests with mocked `EvmWalletProvider`).
### Alternatives
- **LayerZero** — wider deployment but per-token `OFT` contracts make a generic action provider harder; not in WISHLIST.
- **Across / Stargate** — application-layer bridges with narrower asset coverage than Hyperlane Warp Routes.
- **Native canonical bridges** (Base, Optimism) — chain-pair specific; would require a separate provider per pair.
### Additional context
Happy to own this end-to-end and follow the merge pattern from #865 (Aave): clean PR, `make format && make lint && make test` green, README entry in alphabetic order, `changelog.d/` entry.
Contributor guide
Assessment
This issue has not been assessed yet.