You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Every command — including every subcommand — has its own page. Most follow the same layout (Synopsis · Description · Options · Examples · Output · Exit status · See also); pages for commands that take a positional argument add an Arguments section, and a few that need no prose drop Description. Command-group pages list and link their subcommands.
Which commands run on which networks
wallet-cli supports two chain families, TRON and EVM, and --network selects one network of one family. Commands fall into these kinds:
Portable — the same command on either family, with the family-specific parts named per family: account balance / info / portfolio, block, tx send / broadcast / status / info / sign, token (all five), contract call / send / deploy, chain node / prices, message sign, typed-data sign.
TRON only — the command implements a TRON protocol feature with no EVM counterpart: account history / activate / set, chain params, contract info / clear-abi / create2 / set-origin-energy-limit / set-user-resource-percent, tx approvals / multisig, and every command in the stake, vote, reward, proposal, witness, permission, asset, exchange, gasfree, sunswap and sunpump groups. Run against an EVM network they fail with family_mismatch before any node call. sunswap and sunpump narrow further: sunpump, sunswap swap and the six sunswap market queries run on mainnet only, while sunswap position-info and the three liquidity commands run on tron and nile. Elsewhere they fail with unsupported_network_capability, and the message names the network that works. Availability is per network config, not per build: the market queries need sunswap.marketApiBaseUrl, swap needs sunswap.routerApiBaseUrl or sunpump.curve: true, sunpump buy / sell need sunpump.curve: true, the other sunpump commands need sunpump.apiBaseUrl, and the liquidity commands and position-info need sunswap.liquidity: true. Contract addresses come from the SunSwap / SunPump SDK, not from config.
Service commands — x402 and bai talk to HTTP services rather than to a chain node. The ones that pay (x402 pay / roundtrip, bai recharge) use the selected network's family; the catalog, usage, and report commands take no network. 8004 runs on both families, but only on networks with an ERC-8004 registry — not ethereum or sepolia.
Local — no network at all: create, import, use, current, list, derive, rename, backup, delete, change-password, config, networks, contact, encoding, address. Some of these still accept --network as a display selector (which family's address to print, which key a keystore export takes); no node is contacted either way.
Individual flags are family-scoped the same way. --help tags them (TRON only) / (EVM only), and using one on the other family is a usage error — invalid_option, exit 2.
The catalog is the authority on all of this: wallet-cli --json-schema reports a families array per command.
-o, --output <text|json> result format (default: config.defaultOutput, built-in text)
--network <string> network id or alias, e.g. nile, sepolia, bsc, eip155:11155111
(falls back to config.defaultNetwork)
--account <string> accountId, label, or address (wallet-bound commands; falls back to active)
an address names one chain, so use accountId or label to cross families;
an address matching several accounts that are not interchangeable
signers for the family being acted on is `ambiguous_account`
--timeout <number> per RPC/device call timeout, ms (default: config.timeoutMs, built-in 60000)
-v, --verbose extra diagnostic output
-h, --help / -V, --version
Commands whose schema allows post-broadcast polling take --wait / --wait-timeout <ms> (cap default: config waitTimeoutMs, built-in 60000). The early-exit modes are command-specific too: transaction-building commands may expose --dry-run / --sign-only / --build-only, while a submit-only command such as tx broadcast neither rebuilds nor signs and therefore has no --sign-only / --build-only.
Fee and multi-sig flags are family-scoped, so they are not global:
Flags
Family
Where
Permission group and expiry — see below
TRON
TRON transaction-building commands that sign or can emit unsigned hex; not tx broadcast, GasFree, or the sunswap and sunpump writes
--fee-limit <sun>
TRON
the commands that spend energy: tx send, contract send / deploy, sunswap swap / add-liquidity / remove-liquidity / collect-fees, and sunpump buy / sell
--permission-id selects the permission group to sign under (0=owner, 1=witness, 2-9=active) and --expiration extends the window for collecting co-signatures. An EVM transaction carries exactly one signature, so neither has a counterpart there: on a portable command they are tagged (TRON only) and refused on EVM with invalid_option.
Where all three early-exit modes exist, they are mutually exclusive, and --expiration is accepted only alongside --sign-only or --build-only. Breaking either rule is a usage error at exit 2. The code depends on where the check runs: on the account, permission, contract, proposal and witness writes it is invalid_value, and which field the message names depends on the rule. Mutual exclusion is attached to the whole object, so it reports --input rather than the flags you passed (invalid --input: choose at most one of --dry-run, --sign-only, --build-only); the --expiration rule is attached to its own field and names it (invalid --expiration: only valid with --sign-only or --build-only). Elsewhere the same conflict reports invalid_option. Branch on the exit code, not on the code string; see machine interface.