CLI Commands
The waap-cli supports both EVM and Sui chains.
Global Options
--json
Force JSON output on stdout and suppress plaintext progress logs. This is highly recommended for AI agents and scripts parsing the CLI output.
waap-cli whoami --json
# → {"evmWalletAddress":"0x...","suiWalletAddress":"0x..."}Setting --chain and --rpc globally
To set default chain and RPC for the current session, use chain set command.
Setting chain and RPC globally is useful, as --chain and --rpc flags do not need to be set per each command call.
waap-cli chain set --chain evm:1 --rpc https://eth.llamarpc.com
waap-cli chain set --chain sui:mainnet --rpc https://rpc.sui.io
waap-cli chain get # show current defaultsignup
Create a new WaaP wallet account and immediately log in. Returns both your EVM and Sui wallet addresses.
waap-cli signup --email youremail+agent007@example.com --password 'S3cur3Pass!'
# optional display name:
waap-cli signup --email youremail+agent007@example.com --password 'S3cur3Pass!' --name "My Agent 007"Note: To create multiple agent accounts, use different email addresses with the + alias syntax (e.g., “youremail+agent001@example.com”, “youremail+agent002@example.com”, etc.).
faucet.testnet.sui.io) rate-limits aggressively from VPS and cloud IPs — use a browser-based faucet or fund from an exchange if you hit limits.login
Authenticate with an existing account and save a local session. Returns both your EVM and Sui wallet addresses.
waap-cli login --email youremail+agent007@example.com --password 'S3cur3Pass!'logout
Delete the local session file.
waap-cli logoutwhoami
Print the wallet addresses derived from the current session’s keyshare. The waap-cli securely generates both an EVM and a Sui address from the same underlying keyshare.
waap-cli whoami
# → evmWalletAddress: "0xAbc..."
# → suiWalletAddress: "0xDef..."session-info
Inspect the raw metadata stored in ~/.waap-cli/session.json.
waap-cli session-infosign-message
Sign an arbitrary message.
EVM — Signs using EIP-191 (personal_sign format). Accepts plain text or 0x-prefixed hex.
waap-cli sign-message --message "Hello WaaP"
waap-cli sign-message --message 0x48656c6c6f
# bypass 2FA with a privilege:
waap-cli sign-message --message "Hello" --permission-token <encoded-pt>Sui — Signs using Blake2b hashing. Returns a Base64-encoded signature and message bytes.
waap-cli sign-message --message "Hello Sui" --chain sui:mainnetsign-typed-data
Sign EIP-712 typed data (eth_signTypedData_v4). Pass the full typed-data object as a JSON string.
waap-cli sign-typed-data --data '{
"types": {
"EIP712Domain": [{"name":"name","type":"string"}],
"Mail": [{"name":"contents","type":"string"}]
},
"domain": {"name":"Ether Mail","chainId":1},
"primaryType": "Mail",
"message": {"contents":"Hello!"}
}'
# bypass 2FA with a privilege:
waap-cli sign-typed-data --data '{...}' --permission-token <encoded-pt>sign-tx
Sign a transaction and print the result without broadcasting.
EVM — Returns a raw 0x-prefixed hex string ready for eth_sendRawTransaction.
# EIP-1559 (default) — ETH transfer
waap-cli sign-tx \
--to 0xRecipientAddress \
--value 0.01 \
--chain evm:1 \
--rpc https://eth.llamarpc.com
# Specific chain (Base)
waap-cli sign-tx \
--to 0xRecipientAddress \
--value 0.001 \
--chain evm:8453 \
--rpc https://mainnet.base.org
# Legacy (Type 0)
waap-cli sign-tx \
--to 0xRecipientAddress \
--value 0.01 \
--chain evm:1 \
--legacySui — Returns a Base64-encoded signature and transaction bytes.
# Simple SUI transfer (value in MIST)
waap-cli sign-tx \
--to 0xRecipientSuiAddress \
--value 1000 \
--chain sui:mainnet
# Pre-built BCS-encoded transaction bytes
waap-cli sign-tx \
--tx-bytes "AAABA..." \
--chain sui:mainnet
# JSON-serialized TransactionBlock
waap-cli sign-tx \
--tx-json '{"version": 1, ...}' \
--chain sui:testnetsend-tx
Build, sign, and broadcast a transaction in one step.
EVM — Returns a transaction hash.
# ETH transfer on mainnet
waap-cli send-tx \
--to 0xRecipientAddress \
--value 0.01 \
--chain evm:1 \
--rpc https://eth.llamarpc.com
# Transfer on Base
waap-cli send-tx \
--to 0xRecipientAddress \
--value 0.001 \
--chain evm:8453 \
--rpc https://mainnet.base.org
# bypass 2FA with a privilege:
waap-cli send-tx --to 0xRecipient --value 0.01 --chain evm:1 --permission-token <encoded-pt>Sui — Returns a transaction digest.
# Simple SUI transfer (value in MIST)
waap-cli send-tx \
--to 0xId \
--value 1000 \
--chain sui:mainnet
# Pre-built BCS-encoded transaction bytes (Programmable Transaction Blocks)
# You can generate this using the official MystenLabs `sui` CLI:
RAW_TX_BYTES=$(sui client ptb \
--assign coin @gas \
--transfer-objects "[coin]" 0xRecipientSuiAddress \
--serialize-unsigned-transaction)
waap-cli send-tx \
--tx-bytes "$RAW_TX_BYTES" \
--chain sui:mainnet
# JSON-serialized TransactionBlock
waap-cli send-tx \
--tx-json '<json-string>' \
--chain sui:testnetchain get
Show the current default chain and RPC settings.
waap-cli chain get
# → {"chain":"evm:1","rpc":"https://..."}chain set
Set the default chain and/or RPC for the current session.
# Set default chain to Sui Mainnet
waap-cli chain set sui:mainnet
# Set default EVM chain to Polygon with a custom RPC
waap-cli chain set evm:137 --rpc https://polygon-rpc.comrequest
Generic EIP-1193 JSON-RPC interface. Takes optional params as a JSON array string.
# Get wallet address
waap-cli request eth_accounts
# Get chain ID
waap-cli request eth_chainId
# Get ETH balance
waap-cli request eth_getBalance '["0xYourAddress","latest"]' --chain evm:1 --rpc https://eth.llamarpc.com
# Sign a message (personal_sign)
waap-cli request personal_sign '["0x48656c6c6f20576161502021","0xYourAddress"]'
# EIP-712 typed data sign
waap-cli request eth_signTypedData_v4 '["0xYourAddress","{\"types\":{...},\"domain\":{...},\"primaryType\":\"Mail\",\"message\":{...}}"]'
# Send transaction via EIP-1193
waap-cli request eth_sendTransaction \
'[{"from":"0xYourAddress","to":"0xRecipient","value":"0x2386F26FC10000","chainId":"0x1"}]' \
--chain evm:1 --rpc https://eth.llamarpc.compolicy get
Show current wallet policy settings.
waap-cli policy get
# →
# Policy Settings:
# 2FA Method: EMAIL_AUTHZ
# Daily Spend Limit: $100
# Min Risk for 2FA: HighWarnThe output includes three fields:
- 2FA Method — Current authorization method:
EMAIL_AUTHZ,PHONE_AUTHZ,EXTERNAL_WALLET_AUTHZ, orDISABLED. - Daily Spend Limit — Cumulative USD cap per calendar day (default: $5,000, max: $10,000).
- Min Risk for 2FA — The risk threshold at which 2FA is triggered (default:
HighWarn). See Risk Levels.
policy set
Update wallet policy settings. Currently supports --daily-spend-limit.
# Set daily spend limit to $500 (requires 2FA approval if enabled)
waap-cli policy set --daily-spend-limit 500Valid range: 0–10,000 USD. The limit is floored to the nearest integer.
2fa status
View the current Two-Factor Authentication method configured for the wallet.
waap-cli 2fa status2fa enable
Enable 2FA using email, phone, Telegram, or an external hardware wallet.
# Email 2FA — a verification link is sent to the provided address
waap-cli 2fa enable --email agent@example.com
# Phone 2FA
waap-cli 2fa enable --phone "+1234567890"
# Telegram 2FA
waap-cli 2fa enable --telegram 7381029636
# External wallet (hardware wallet) 2FA
waap-cli 2fa enable --wallet 0xHardwareWalletAddressIf an existing 2FA method is already active, enabling a new one is a 2-step flow:
- approve with your current method, then
- verify the new method.
2fa disable
Disable 2FA, allowing autonomous signing without out-of-band approval.
waap-cli 2fa disableDisabling 2FA requires approval from the currently-configured 2FA method before taking effect.