The twak CLI provides full access to the Trust Wallet Agent SDK from the command line.
Run: npx @trustwallet/cli <command> or install globally with npm install -g @trustwallet/cli
Initialize configuration and save credentials.
twak init --api-key <key> --api-secret <secret>| Flag | Required | Description |
|---|---|---|
--api-key |
Yes | TWAK API access ID |
--api-secret |
Yes | HMAC secret |
Credentials are saved to ~/.twak/credentials.json.
twak auth setup --api-key <key> --api-secret <secret>twak auth status [--json]twak wallet create --password <pw> [--no-keychain] [--skip-password-check] [--json]twak wallet address --chain <chain> [--password <pw>] [--json]Password falls back to the OS keychain or TWAK_WALLET_PASSWORD environment variable. See Key Management for full details on key storage, password resolution, and signing permissions.
twak wallet addresses [--password <pw>] [--json]twak wallet balance [--chain <chain>] [--all] [--no-tokens] [--password <pw>] [--json]Use --all to show balances across all chains with funds. Use --no-tokens to skip token balance lookup.
Full portfolio across all chains — native balances, token holdings, and USD values.
twak wallet portfolio [--chains <list>] [--password <pw>] [--json]Default chains include all major EVM chains plus Solana and TRON.
Sign an arbitrary message with the agent wallet key.
twak wallet sign-message --chain <chain> --message <text> [--password <pw>] [--json]Save the wallet password to the OS keychain for passwordless usage.
twak wallet keychain save --password <pw>twak wallet keychain deletetwak wallet keychain checktwak wallet status [--json]twak transfer --to <address> --amount <amount> --token <token> \
[--confirm-to <address>] [--max-usd <n>] [--skip-safety-check] \
[--password <pw>] [--json]| Flag | Description |
|---|---|
--to |
Destination address or ENS name (e.g., vitalik.eth) |
--amount |
Amount in human-readable format |
--token |
Asset ID (e.g., c60 for ETH, c60_t0xA0b8... for ERC-20) |
--max-usd |
Maximum allowed transfer value in USD (default: 10000) |
--skip-safety-check |
Skip the USD-value safety check |
--confirm-to |
Pin expected resolved address — rejects if ENS resolves differently |
twak swap <amount> <from> <to> [--chain <chain>] [--to-chain <chain>] \
[--slippage <pct>] [--quote-only] [--password <pw>] [--json]| Flag | Description |
|---|---|
--chain |
Source chain (default: ethereum) |
--to-chain |
Destination chain for cross-chain swaps |
--slippage |
Slippage tolerance % (default: 1, max: 50) |
--quote-only |
Preview quote without executing |
Use --quote-only to preview without executing.
Buy crypto with fiat (onramp) or sell crypto for fiat (offramp) through third-party providers. Quotes are aggregated; the user completes KYC and payment in the provider's hosted browser flow. Available providers depend on the user's region.
Get fiat-to-crypto quotes from multiple providers.
twak onramp quote --amount <fiat> --asset <id> [--currency <code>] \
[--wallet <address>] [--password <pw>] [--json]| Flag | Description |
|---|---|
--amount |
Fiat amount, e.g. 100 |
--asset |
Asset ID, e.g. c60 for ETH |
--currency |
Fiat currency (default: USD) |
--wallet |
Override the destination address (defaults to your stored wallet's address on the asset's chain) |
Quotes are sorted lowest-spread-first; the top row is the provider giving the most crypto for the same fiat input.
Open the provider checkout URL for a chosen quote.
twak onramp buy --quote-id <id> [--asset <id>] [--wallet <address>] \
[--password <pw>] [--json]| Flag | Description |
|---|---|
--quote-id |
Quote ID from twak onramp quote |
--asset |
Crypto asset ID — required when --wallet is omitted (used to derive your destination address) |
--wallet |
Override the destination address |
Get crypto-to-fiat quotes.
twak onramp sell-quote --amount <crypto> --asset <id> [--currency <code>] \
[--method <method>] [--wallet <address>] \
[--password <pw>] [--json]| Flag | Description |
|---|---|
--amount |
Crypto amount to sell, e.g. 0.1 |
--asset |
Asset ID being sold |
--currency |
Fiat currency for the payout (default: USD) |
--method |
Payout method: ANY, card, bank_transfer (default: ANY) |
--wallet |
Override the source address (defaults to your stored wallet's address on the asset's chain) |
Sorted lowest-spread-first; the top row is the provider returning the most fiat for the same crypto input.
Open the provider checkout URL to complete KYC and reveal the deposit address.
twak onramp sell --quote-id <id> [--asset <id>] [--wallet <address>] \
[--password <pw>] [--json]| Flag | Description |
|---|---|
--quote-id |
Quote ID from twak onramp sell-quote |
--asset |
Crypto asset ID — required when --wallet is omitted (used to derive your source address) |
--wallet |
Override the source address |
Broadcast the on-chain payout to the provider's deposit address. Run this after completing KYC in the browser and copying the deposit address and exact amount the provider displayed.
twak onramp sell-confirm --asset <id> --to <deposit-address> --amount <n> \
[--memo <tag>] [--quote-id <id>] \
[--max-usd <n>] [--skip-safety-check] \
[--password <pw>] [--json]| Flag | Description |
|---|---|
--asset |
Asset being sold |
--to |
Provider's deposit address (shown after KYC) |
--amount |
Exact amount the provider displays — must match |
--memo |
Memo / destination tag (Cosmos, XRP, Stellar, BNB Beacon) — funds can be unrecoverable without it when the chain requires one |
--quote-id |
Optional. Recorded in the output for traceability; the on-chain tx is built from --to / --amount, not from this ID |
--max-usd |
USD safety cap (default: 10000) |
--skip-safety-check |
Bypass the USD cap |
The deposit address is not under your control — verify it byte-for-byte against what the provider displayed before broadcasting. Signing always happens locally; the browser flow has no access to your keys.
twak price <token> [--chain <chain>] [--json]Chain is auto-detected from native token symbols (ETH, BNB, SOL, etc.).
Get the native balance for any address using a SLIP44 coin ID.
twak balance --address <address> --coin <coinId> [--json]Common coin IDs: 60 (Ethereum), 0 (Bitcoin), 501 (Solana).
twak search <query> [--networks <ids>] [--limit <n>] [--json]twak trending [--category <cat>] [--sort <field>] [--limit <n>] [--json]Categories: ai, rwa, memes, defi, dex, bnb, eth, sol, pumpfun, bonk, launchpad, launchpool, layer1.
Sort fields: price_change (default), market_cap, volume.
Browse featured DApps and protocols.
twak dapps [--category <cat>] [--search <query>] [--categories] [--limit <n>] [--json]Categories: defi, dex, lending, nft, gaming, social. Use --categories to list all available.
twak history --address <address> [--chain <chain>] [--from <date>] \
[--to <date>] [--limit <n>] [--json]twak tx <hash> --chain <chain> [--json]twak chains [--json]twak asset <assetId> [--json]twak validate --address <address> [--asset-id <id>] [--json]Check token security and rug-risk info.
twak risk <assetId> [--json]twak erc20 approve --token <assetId> --spender <address> --amount <amount> \
[--confirm-unlimited] --password <pw> [--json]Token uses the Trust Wallet asset ID format (e.g., c60_t0xA0b8...).
twak erc20 revoke --token <assetId> --spender <address> --password <pw> [--json]twak erc20 allowance --token <assetId> --owner <address> --spender <address> [--json]twak alert create --token <token> --chain <chain> (--above <price> | --below <price>) [--json]twak alert list [--active] [--json]twak alert check [--json]twak alert delete <id> [--json]Start an MCP server (stdio) or REST API server for AI agent integrations.
twak serve [--rest] [--port <port>] [--host <host>] \
[--auto-lock <minutes>] [--password <pw>] \
[--x402] [--payment-amount <amount>] [--payment-asset <asset>] \
[--payment-chain <chain>] [--payment-recipient <address>]| Flag | Description |
|---|---|
--rest |
Start REST HTTP server instead of MCP stdio |
--port |
Port for REST server (default: 3000) |
--auto-lock |
Auto-lock wallet after N minutes of inactivity |
--x402 |
Require x402 micropayment for REST endpoints |
The REST server authenticates requests via Authorization: Bearer <HMAC_SECRET>. This is separate from the HMAC signing used by tws.trustwallet.com — the REST server runs locally and uses the raw secret as a shared token for simplicity.