Skip to main content
Version: 0.96.0

Configuration

RPC Endpoints

All commands require RPC endpoints for the networks involved. The CLI accepts both http[s] and ws[s] URLs.

Where to Get RPCs

ProviderDescription
QuickNodeMulti-chain support with free tier
AlchemyEnterprise-grade with free tier
Chainlist.orgFree public RPCs for EVM networks
InfuraReliable EVM endpoints with free tier
NoderealAptos and EVM support with free tier
Tip: For quick testing, Chainlist.org provides free public RPCs. For production, use Alchemy or Infura for better rate limits.

Providing RPCs

Command line: Use --rpc or --rpcs to specify endpoints directly:

Bash
ccip-cli show 0x123... \
--rpc https://eth-sepolia.example.com \
--rpc https://arb-sepolia.example.com

You can also pass comma-separated values:

Bash
ccip-cli show 0x123... \
--rpcs "https://eth-sepolia.example.com,https://arb-sepolia.example.com"

Environment variables: Export variables prefixed with RPC_. See Environment Variables for details.

Configuration file: Use --rpcs-file to load from a file (default: ./.env):

Bash
ccip-cli show 0x123... --rpcs-file ./my-rpcs.txt

File Format

The parser extracts URLs from any format. Lines can contain prefixes, suffixes, or comments:

https://eth-sepolia.g.alchemy.com/v2/demo
ARB_SEPOLIA_RPC: https://arbitrum-sepolia.drpc.org
RPC_AVALANCHE_TESTNET=https://avalanche-fuji-c-chain-rpc.publicnode.com
https://api.devnet.solana.com # solana devnet
https://api.testnet.aptoslabs.com/v1

The CLI connects to all endpoints in parallel and uses the fastest responding RPC for each network.

Environment Variables

The CLI supports environment variables for configuration. Command-line flags override environment variables.

RPC Configuration

VariableDescriptionExample
RPC_*RPC endpoints (any suffix)RPC_SEPOLIA=https://...

Wallet Configuration

VariableDescription
USER_KEYPrivate key (EVM: hex, Solana: base58)
PRIVATE_KEYAlias for USER_KEY
USER_KEY_PASSWORDPassword for encrypted JSON keystore

Output Preferences

VariableDescriptionDefault
CCIP_FORMATOutput format (pretty, log, json)pretty
CCIP_VERBOSEEnable debug logging (true/false)false
CCIP_PAGEPagination size for getLogs queries10000

Example .env file:

Bash
# RPC Endpoints
RPC_SEPOLIA=https://eth-sepolia.example.com
RPC_ARB_SEPOLIA=https://arb-sepolia.example.com
RPC_AVALANCHE_FUJI=https://avalanche-fuji.example.com

# Wallet (for send/manualExec commands)
USER_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80

# Output preferences
CCIP_FORMAT=json
CCIP_VERBOSE=false

Use --rpcs-file to load a different file: ccip-cli show 0x... --rpcs-file ./prod.env

Wallet Configuration

Commands that send transactions require a wallet. The CLI checks these sources in order:

Auto-Detection

If --wallet is omitted, the CLI automatically looks for USER_KEY= or PRIVATE_KEY= in your --rpcs-file (default: ./.env):

Bash
# .env file
RPC_SEPOLIA=https://eth-sepolia.example.com
USER_KEY=0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80

# CLI will use USER_KEY automatically
ccip-cli send ethereum-testnet-sepolia 0x... dest --receiver 0x...

--wallet Option

Pass directly or specify a file path:

ChainAccepted Formats
EVMHex private key, or path to encrypted JSON keystore (password via USER_KEY_PASSWORD env var)
SolanaBase58 private key, or path to id.json file (default: ~/.config/solana/id.json)
AptosHex private key, or path to text file containing it

Ledger Hardware Wallet

Connect a Ledger device:

Bash
ccip-cli send ... --wallet ledger

Use a specific derivation index:

Bash
ccip-cli send ... --wallet ledger:1  # Uses m/44'/60'/1'/0/0 for EVM

Global Options

These options are available on all commands:

OptionAliasTypeDefaultDescription
--rpcs--rpcstring[]-RPC endpoint URLs
--rpcs-file-string./.envFile containing RPC endpoints
--format-fstringprettyOutput format: pretty, log, or json
--verbose-vboolean-Enable debug logging
--page-number-Pagination size for getLogs queries
--no-api-booleanfalseDisable CCIP API (full decentralization mode)
--help-hboolean-Show help
--version-Vboolean-Show version

Output formats:

FormatUse Case
prettyHuman-readable tables (default)
logConsole output with additional details
jsonMachine-readable, suitable for scripting

Network Identifiers

Networks can be specified by name or chain ID. The CLI uses chain-selectors for resolution.

Chain FamilyIdentifier FormatExample
EVMNumeric chain ID1 (Ethereum), 11155111 (Sepolia)
EVMNetwork nameethereum-mainnet, ethereum-testnet-sepolia
SolanaGenesis hash5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d
AptosPrefixed chain IDaptos:1 (mainnet), aptos:2 (testnet)
SuiPrefixed chain IDsui:1

See Also

  • show - Track cross-chain messages
  • send - Send messages with wallet configuration