Skip to content

Multi-chain operation

Sailor targets the chains where the Sail trusted core is deployed. Because the core uses deterministic CREATE2 deployment, the kernel — and your SMA — have the same address on every supported chain.

ChainChain IDNativeType
Ethereum1ETHmainnet
Base8453ETHmainnet
Arbitrum42161ETHmainnet
Optimism10ETHmainnet
Unichain130ETHmainnet
World Chain480ETHmainnet
MegaETH4326ETHmainnet
Robinhood4663ETHmainnet
BSC56BNBmainnet
HyperEVM999HYPEmainnet
Base Sepolia84532ETHtestnet
Eth Sepolia11155111ETHtestnet

That’s 12 chains (10 mainnets + 2 testnets). The verified deployment addresses are bundled in the package and exposed via getSailDeployment(chainId) in the SDK. The canonical address list is the Protocol’s Deployment addresses. Inspect them from the CLI:

Terminal window
sailor chains # list supported chains and their SailKernel addresses
sailor chains --verify # confirm each kernel is deployed (one eth_getCode per chain)
sailor chains --json

Sailor resolves an RPC URL for a chain in this order (first match wins): a chain-specific var in .sail/.env.local, then a generic RPC_URL there, then the same two in the shell environment. Two valid patterns:

Terminal window
# Option A — a single active chain
RPC_URL=https://your-base-endpoint
CHAIN_ID=8453
Terminal window
# Option B — per-chain (multi-chain projects)
CHAIN_ID=8453
BASE_RPC_URL=https://your-base-endpoint
ARBITRUM_RPC_URL=https://your-arbitrum-endpoint
UNICHAIN_RPC_URL=https://your-unichain-endpoint
ETH_MAINNET_RPC_URL=https://your-mainnet-endpoint
ROBINHOOD_RPC_URL=https://your-robinhood-endpoint
BASE_SEPOLIA_RPC_URL=https://your-base-sepolia-endpoint
SEPOLIA_RPC_URL=https://your-sepolia-endpoint

Per-chain vars take precedence for their chain, so a multi-chain project resolves each endpoint correctly. sailor chains --verify checks every chain that has a configured RPC. Each supported chain has a per-chain env var of the form <CHAIN>_RPC_URL (e.g. ROBINHOOD_RPC_URL) and a built-in default; sailor chains lists them.

Deploy your existing SMA address on an additional chain with the same owner, manager, and salt:

Terminal window
sailor account deploy-chain --chain 42161
# --salt <n> defaults to the saltNonce stored in .sail/account.json

Predict first to confirm the address matches across chains:

Terminal window
sailor account predict --chain 42161

Run the agent against a specific chain with sailor run --chain <id> (overrides CHAIN_ID and .env.local for that run).