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.
Supported chains
Section titled “Supported chains”| Chain | Chain ID | Native | Type |
|---|---|---|---|
| Ethereum | 1 | ETH | mainnet |
| Base | 8453 | ETH | mainnet |
| Arbitrum | 42161 | ETH | mainnet |
| Optimism | 10 | ETH | mainnet |
| Unichain | 130 | ETH | mainnet |
| World Chain | 480 | ETH | mainnet |
| MegaETH | 4326 | ETH | mainnet |
| Robinhood | 4663 | ETH | mainnet |
| BSC | 56 | BNB | mainnet |
| HyperEVM | 999 | HYPE | mainnet |
| Base Sepolia | 84532 | ETH | testnet |
| Eth Sepolia | 11155111 | ETH | testnet |
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:
sailor chains # list supported chains and their SailKernel addressessailor chains --verify # confirm each kernel is deployed (one eth_getCode per chain)sailor chains --jsonConfiguring RPCs per chain
Section titled “Configuring RPCs per chain”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:
# Option A — a single active chainRPC_URL=https://your-base-endpointCHAIN_ID=8453# Option B — per-chain (multi-chain projects)CHAIN_ID=8453BASE_RPC_URL=https://your-base-endpointARBITRUM_RPC_URL=https://your-arbitrum-endpointUNICHAIN_RPC_URL=https://your-unichain-endpointETH_MAINNET_RPC_URL=https://your-mainnet-endpointROBINHOOD_RPC_URL=https://your-robinhood-endpointBASE_SEPOLIA_RPC_URL=https://your-base-sepolia-endpointSEPOLIA_RPC_URL=https://your-sepolia-endpointPer-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.
The same SMA on another chain
Section titled “The same SMA on another chain”Deploy your existing SMA address on an additional chain with the same owner, manager, and salt:
sailor account deploy-chain --chain 42161# --salt <n> defaults to the saltNonce stored in .sail/account.jsonPredict first to confirm the address matches across chains:
sailor account predict --chain 42161Run the agent against a specific chain with sailor run --chain <id> (overrides CHAIN_ID and .env.local for that run).