Configuration

Environment variables, CLI flags, RPC selection, built-in endpoints and the files the toolkit writes.

On this page

The CLI, TUI and MCP server read the same environment variables and flags. The SDK reads neither. Pass the same settings to runtimeLayer instead. See Effect SDK.

Environment variables#

VariableMeaningDefault
EVM_DATABASEJournal path. Wallet connections go in a wallets directory next to it.~/.local/share/bee-evm/operations.sqlite
EVM_RPC_URLOne RPC URL used for every chain the command touchesBuilt-in endpoints
EVM_RPC_URLSJSON object mapping chain IDs to arrays of RPC URLsNone
EVM_PRIVATE_KEY0x-prefixed 32-byte key for unattended signingNone
EVM_POLICYPolicy name bound to every plan and enforced at signingNone
EVM_ETHERSCAN_API_KEYKey for verified ABI discovery through the Etherscan V2 APINone
WALLETCONNECT_PROJECT_IDYour own WalletConnect project IDA built-in public project ID
EVM_SMART_WALLET_URLHosted smart-wallet page. HTTPS, or HTTP on localhost and 127.0.0.1.https://beegreat.app/evm-wallet
SOCKET_API_KEYSocket API key. Switches to the dedicated endpoint.None
SOCKET_API_URLSocket endpoint overridehttps://public-backend.socket.tech
SOCKET_AFFILIATEValue for Socket's affiliate headerNone
EVM_SAFE_RELAY_CHAIN_IDChain for sponsored Safe executionNone
EVM_SAFE_BUNDLER_URLERC-4337 bundler URL for that chainNone
EVM_SAFE_PAYMASTER_URLPaymaster URL for that chainNone
EVM_SAFE_SPONSORSHIP_POLICY_IDOptional paymaster sponsorship policy IDNone

Sponsored Safe execution is configured only when EVM_SAFE_RELAY_CHAIN_ID, EVM_SAFE_BUNDLER_URL and EVM_SAFE_PAYMASTER_URL are all set. An invalid EVM_PRIVATE_KEY or malformed EVM_RPC_URLS fails every command except discover with InvalidInput.

Flags#

FlagApplies toMeaning
--input <json>Catalog commandsInline JSON input
--file <path>Catalog commandsJSON input from a file
--stdinCatalog commandsJSON input from standard input
--rpc <url>AllOverrides EVM_RPC_URL
--database <path>AllOverrides EVM_DATABASE
--approve <fingerprint>execute, workflow-run, bridge-run, batch-run, sign-typed-dataExact approval
--yoloThe same five commandsAutonomous approval for this invocation
--browserwallet connectBrowser wallet
--smartwallet connectCrossmint smart wallet
--chain <id>wallet connectChain ID, default 8453
--name <name>wallet connect, wallet select, wallet disconnectConnection name, default main
--help, -hAllPrints the discover document

Unknown flags fail with InvalidInput.

RPC selection#

For each chain a command touches, the toolkit picks the first URL from this list:

  1. --rpc or EVM_RPC_URL.
  2. The first URL for that chain in EVM_RPC_URLS.
  3. The built-in endpoint for that chain.

The other URLs for that chain in EVM_RPC_URLS become fallbacks. Every candidate is checked with eth_chainId. A candidate that reports a different chain fails the command with ChainMismatch. Candidates that do not respond are skipped, and if none respond the command fails with RpcError. Each request times out after 15 seconds and is not retried on the same endpoint.

EVM_RPC_URL applies to every chain. If you set it to a Base endpoint and then read Ethereum, the command fails with ChainMismatch. To work across chains, use EVM_RPC_URLS:

export EVM_RPC_URLS='{"8453":["https://YOUR_BASE_RPC_URL","https://mainnet.base.org"],"1":["https://ethereum-rpc.publicnode.com"]}'

Error messages replace RPC URLs with [RPC endpoint], so keys embedded in a URL do not leak into output.

Built-in endpoints#

ChainIDRPC
Ethereum1https://ethereum-rpc.publicnode.com
Base8453https://mainnet.base.org
Sepolia11155111https://ethereum-sepolia-rpc.publicnode.com
Base Sepolia84532https://sepolia.base.org
Arbitrum One42161https://arbitrum-one-rpc.publicnode.com
OP Mainnet10https://optimism-rpc.publicnode.com
Polygon137https://polygon-bor-rpc.publicnode.com
BNB Smart Chain56https://bsc-rpc.publicnode.com
Anvil31337http://127.0.0.1:8545

Public endpoints can rate-limit or lag. Historical reads need an archive endpoint, and asset simulation needs eth_simulateV1 support. Check what an endpoint supports with capabilities.

Files#

PathContentsMode
~/.local/share/bee-evm/Journal directory0700
operations.sqliteOperations, locks, saved aliases, policies, workflows, bridges, batches, monitors and signatures0600
wallets/accounts.jsonNamed wallet connections and the selected one0600
wallets/walletconnectWalletConnect session storageInside the 0700 wallets directory

The journal holds signed transactions that can still be broadcast. Keep it out of source control and backups you share, and preserve it after an uncertain submission. See Recovery.

The journal uses SQLite with full synchronous writes and a five-second busy timeout, so several processes can share one file.