taiko-bridge-cli
Use bridge-cli for Taiko bridge send/wait/claim flows in both directions (L1->L2, L2->L1).
Install
Preferred (remote install):
go install github.com/davidcai/taiko-bridge-cli/cmd/bridge-cli@latest
Local source build:
cd /path/to/taiko-bridge-cligo build -o bridge-cli ./cmd/bridge-cli
Download binary (if release artifact is available):
curl -L -o bridge-cli <release-binary-url>chmod +x bridge-cli
Quick sanity check:
./bridge-cli --help./bridge-cli schema
Environment
Set RPC and key vars once, then reuse in commands.
export BRIDGE_CLI_PRIVATE_KEY=0x...
# Direction A: L1 -> L2
export L1_RPC=https://l1-rpc
export L2_RPC=https://l2-rpc
Base flags template:
COMMON_FLAGS=(
--src-rpc "$SRC_RPC"
--dst-rpc "$DST_RPC"
--private-key "$BRIDGE_CLI_PRIVATE_KEY"
)
Address override flags are optional and only needed for custom deployments.
Missing env behavior (for agents)
Before running bridge commands, verify these required envs exist:
BRIDGE_CLI_PRIVATE_KEYSRC_RPCDST_RPC
If any are missing, do not run the command. Ask the user for the missing values first.
Example prompt:
I’m missing required env vars: SRC_RPC, DST_RPC. Please provide them so I can continue.
Recommended flows
Pipeline (fastest for agents):
- ETH:
./bridge-cli claim-eth "${COMMON_FLAGS[@]}" --to 0x... --value 1 --fee 0 --gas-limit 1000000 - ERC20:
./bridge-cli claim-erc20 "${COMMON_FLAGS[@]}" --token 0x... --amount 100 --to 0x... --fee 0 - ERC721:
./bridge-cli claim-erc721 "${COMMON_FLAGS[@]}" --token 0x... --token-ids 1 --to 0x... --fee 0 - ERC1155:
./bridge-cli claim-erc1155 "${COMMON_FLAGS[@]}" --token 0x... --token-ids 1 --amounts 1 --to 0x... --fee 0
Low-level explicit (debuggable):
send-*wait-ready --tx-hash <send_tx_hash>claim --tx-hash <send_tx_hash>
Example ETH low-level:
SEND_JSON=$(./bridge-cli send-eth "${COMMON_FLAGS[@]}" \
--to 0xRecipient \
--value 1 \
--fee 0 \
--gas-limit 1000000)
TX_HASH=$(echo "$SEND_JSON" | jq -r '.tx_hash')
./bridge-cli wait-ready "${COMMON_FLAGS[@]}" \
--tx-hash "$TX_HASH" \
--timeout 20m \
--poll-interval 5s
./bridge-cli claim "${COMMON_FLAGS[@]}" \
--tx-hash "$TX_HASH" \
--timeout 20m \
--poll-interval 5s
Direction switch
For L2->L1, swap source and destination values:
SRC_* = L2 valuesDST_* = L1 values
Then run the exact same commands.
Agent notes
- Default output is JSON; prefer parsing with
jq. - ETH gas limit safety:
bridge-cliauto-checksgetMessageMinGasLimit(len(data)).- If
--gas-limitis too low, it auto-bumps and returns:requested_gas_limitmin_gas_limiteffective_gas_limitgas_limit_adjusted
bridge-*commands are legacy aliases ofclaim-*.- If
claimreverts butstatusshowsdest_message_status=2, message was already processed (usually relayer race).
Troubleshooting
wait-readynever progresses:- verify you are using
signal_serviceaddresses, not inbox/anchor addresses.
- verify you are using
execution revertedon send:- check
effective_gas_limitand bridge destination config.
- check
- Timeouts:
- keep polling with larger
--timeout, then retryclaim.
- keep polling with larger