:::info Node Requirements To use the query and tx commands, your appd node must either:
  • Be fully synced with the network you’re interacting with, OR
  • Be configured to use an external RPC endpoint in ~/.appd/config/client.toml
Example client.toml configuration:
# The network chain ID
chain-id = "myapp-1"
# The keyring's backend
keyring-backend = "os"
# CLI output format
output = "text"
# <host>:<port> to CometBFT RPC interface for this chain
node = "tcp://localhost:26657"
# Transaction broadcasting mode (sync|async)
broadcast-mode = "sync"
To use an external RPC, update the node field to point to a public or private RPC endpoint. :::

Global Flags

These flags are available for all commands:
FlagDescriptionDefault
-b, --broadcast-modeTransaction broadcasting mode (sync|async)sync
--chain-idSpecify Chain ID for sending Tx
--feesFees to pay along with transaction (e.g., 10ustake)
--fromName or address of private key with which to sign
--gas-adjustmentAdjustment factor to multiply against the estimate returned by tx simulation1
--gas-pricesGas prices to determine the transaction fee (e.g., 10ustake)
--homeDirectory for config and data~/.appd
--keyring-backendSelect keyring’s backendos
--log_formatThe logging format (json|plain)plain
--log_levelThe logging levelinfo
--log_no_colorDisable colored logs
--node<host>:<port> to CometBFT RPC interfacetcp://localhost:26657
--tracePrint out full stack trace on errors

Core Commands

Node Operations

start

Run the full node.
appd start [flags]
Key flags:
  • --json-rpc.enable: Enable the JSON-RPC server
  • --json-rpc.address: JSON-RPC server address (default: 127.0.0.1:8545)
  • --json-rpc.ws-address: JSON-RPC WebSocket server address (default: 127.0.0.1:8546)
  • --json-rpc.api: API namespaces to enable (default: eth,net,web3)
  • --json-rpc.enable-indexer: Enable the custom tx indexer for json-rpc
  • --json-rpc.enable-profiling: Enable profiling in the debug namespace
  • --json-rpc.filter-cap: Sets the global cap for total number of filters (default: 200)
  • --json-rpc.gas-cap: Sets a cap on gas that can be used in eth_call/estimateGas (default: 25000000)
  • --json-rpc.txfee-cap: Sets a cap on transaction fee that can be sent via RPC APIs (default: 1)
  • --json-rpc.batch-request-limit: Maximum number of requests in a batch (default: 1000)
  • --json-rpc.evm-timeout: Sets a timeout used for eth_call (default: 5s)
  • --json-rpc.logs-cap: Sets the max number of results from eth_getLogs query (default: 10000)
  • --json-rpc.block-range-cap: Sets the max block range allowed for eth_getLogs query (default: 10000)
:::warning You should only expose the debug endpoint in non production settings as it could impact network performance and uptime under certain conditions. :::

Additional Information

For more detailed information about specific commands, simply use the --help or -h flag:
appd [command] --help
appd [command] [subcommand] --help

Initializing the client / Running a node

Creates validator consensus key, p2p address book file, genesis (replace with the relevant one for your chain), and CometBFT + application configuration files.

Initialize node

appd init mynode --chain-id my-chain-1

Start node with JSON-RPC enabled

appd start --json-rpc.enable --json-rpc.api eth,web3,net,txpool,debug

Get node status

You must be either running the client as part of a netork (or alone, for testing) or have an external RPC configured in client.toml first.
appd status
Returns:
{
  "node_info": {
    "protocol_version": {
      "p2p": "8",
      "block": "11",
      "app": "0"
    },
    "id": "f9bc9603524303b8843911c4ce7a4f12764af8dc",
    "listen_addr": "tcp://0.0.0.0:26656",
    "network": "4321",
    "version": "0.38.17",
    "channels": "40202122233038606100",
    "moniker": "devnet-1-node-0",
    "other": {
      "tx_index": "on",
      "rpc_address": "tcp://0.0.0.0:26657"
    }
  },
  "sync_info": {
    "latest_block_hash": "A6E4FDB7255B09788C5A6CB25C05060D3EA2180B4DA387CB93086691B6BEDF5E",
    "latest_app_hash": "43377D0A56BFA70643781115C388472B7DDF788398D61AE19AC1EC133862FBBF",
    "latest_block_height": "1752468",
    "latest_block_time": "2025-07-30T18:24:16.220775791Z",
    "earliest_block_hash": "65BDD3E49B82D762F7D75C1333EBF795186F604CF945A711A82353BA840070E0",
    "earliest_app_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855",
    "earliest_block_height": "1",
    "earliest_block_time": "2025-06-14T01:11:39.072887517Z",
    "catching_up": false
  },
  "validator_info": {
    "address": "E7C00E112C764B0726EBFB96905BB282FCFCA36C",
    "pub_key": {
      "type": "tendermint/PubKeyEd25519",
      "value": "IN0vx0HE22RHnnCHlfsY5nE7IDW2016TrIi1eAQsZRo="
    },
    "voting_power": "0"
  }
}
The same information can be seen by calling the /status method on any accessible Comet RPC

index-eth-tx

Index historical Ethereum transactions.
appd index-eth-tx [backward|forward] [flags]
  • backward: Index from first indexed block to earliest block
  • forward: Index from latest indexed block to latest block

Key Management

The keys command provides keyring management functionality for accounts.

keys add

Add a new key or recover from mnemonic.
appd keys add [name] [flags]
Flags:
  • --recover: Recover key from mnemonic
  • --algo: Key algorithm (eth_secp256k1)
  • --coin-type: Coin type (60 for Ethereum)

keys list

List all keys in the keyring.
appd keys list [flags]

keys list-key-types

List all supported key types.
appd keys list-key-types [flags]

keys show

Display key information.
appd keys show [name|address] [flags]

keys export

Export a private key.
appd keys export [name] [flags]

keys import

Import a private key.
appd keys import [name] [keyfile] [flags]

EVM-specific Key Commands

keys unsafe-export-eth-key
Export an Ethereum private key (UNSAFE).
appd keys unsafe-export-eth-key [name] [flags]
keys unsafe-import-eth-key
Import Ethereum private keys into the local keybase (UNSAFE).
appd keys unsafe-import-eth-key [name] [pk] [flags]

Query Commands

The query (or q) command provides read-only access to blockchain data.

EVM Module Queries

query evm account
Get account information for an address.
appd query evm account [address] [flags]
query evm balance-bank
Get bank balance for a 0x address.
appd query evm balance-bank [0x-address] [denom] [flags]
query evm balance-erc20
Get ERC20 token balance.
appd query evm balance-erc20 [0x-address] [erc20-address] [flags]
query evm code
Get smart contract code.
appd query evm code [address] [flags]
query evm storage
Get storage value at a specific key.
appd query evm storage [address] [key] [flags]
query evm config
Get EVM configuration values.
appd query evm config [flags]
query evm params
Get EVM module parameters.
appd query evm params [flags]
Address Conversion
Convert between Ethereum (0x) and Cosmos (bech32) addresses:
# 0x to bech32
appd query evm 0x-to-bech32 [0x-address] [flags]

# bech32 to 0x
appd query evm bech32-to-0x [bech32-address] [flags]

ERC20 Module Queries

query erc20 token-pairs
Get all registered token pairs.
appd query erc20 token-pairs [flags]
query erc20 token-pair
Get a specific token pair.
appd query erc20 token-pair [token-address-or-denom] [flags]
query erc20 params
Get ERC20 module parameters.
appd query erc20 params [flags]

Feemarket Module Queries

query feemarket base-fee
Get the base fee at a given height.
appd query feemarket base-fee [flags]
query feemarket block-gas
Get the block gas used at a given height.
appd query feemarket block-gas [flags]
query feemarket params
Get fee market parameters.
appd query feemarket params [flags]

Precisebank Module Queries

query precisebank remainder
Get the remainder amount in the precise bank module.
appd query precisebank remainder [flags]
query precisebank fractional-balance
Get the fractional balance of an account.
appd query precisebank fractional-balance [address] [flags]

Standard Cosmos Queries

Bank Module
# Get account balances
appd query bank balances [address] [flags]

# Get specific denom balance
appd query bank balance [address] [denom] [flags]

# Get total supply
appd query bank total [flags]
Staking Module
# Get all validators
appd query staking validators [flags]

# Get delegations for an address
appd query staking delegations [delegator-address] [flags]

# Get unbonding delegations
appd query staking unbonding-delegations [delegator-address] [flags]
Distribution Module
# Get rewards
appd query distribution rewards [delegator-address] [validator-address] [flags]

# Get commission
appd query distribution commission [validator-address] [flags]
Governance Module
# List all proposals
appd query gov proposals [flags]

# Get specific proposal
appd query gov proposal [proposal-id] [flags]

# Get votes on a proposal
appd query gov votes [proposal-id] [flags]

Transaction Commands

The tx command is used to create and broadcast transactions.

EVM Transactions

tx evm send
Send funds between accounts.
appd tx evm send [from] [to] [amount] [flags]
tx evm raw
Build a Cosmos transaction from a raw Ethereum transaction.
appd tx evm raw [hex-encoded-tx] [flags]

ERC20 Transactions

tx erc20 convert-coin
Convert native Cosmos coins to ERC20 tokens.
appd tx erc20 convert-coin [amount] [receiver] [flags]
tx erc20 convert-erc20
Convert ERC20 tokens to native Cosmos coins.
appd tx erc20 convert-erc20 [contract-address] [amount] [receiver] [flags]
tx erc20 register-erc20
Register native ERC20 tokens (governance only).
appd tx erc20 register-erc20 [contract-address...] [flags]
tx erc20 toggle-conversion
Enable or disable token pair conversion (governance only).
appd tx erc20 toggle-conversion [token] [flags]

Standard Cosmos Transactions

Bank Transactions
# Send coins
appd tx bank send [from] [to] [amount] [flags]

# Multi-send
appd tx bank multi-send [from] [to1] [amount1] [to2] [amount2] ... [flags]
Staking Transactions
# Create validator
appd tx staking create-validator [flags]

# Delegate
appd tx staking delegate [validator-address] [amount] [flags]

# Unbond
appd tx staking unbond [validator-address] [amount] [flags]

# Redelegate
appd tx staking redelegate [src-validator] [dst-validator] [amount] [flags]
Governance Transactions
# Submit proposal
appd tx gov submit-proposal [proposal-type] [flags]

# Vote on proposal
appd tx gov vote [proposal-id] [option] [flags]

# Deposit on proposal
appd tx gov deposit [proposal-id] [amount] [flags]

Advanced Commands

genesis

Genesis file manipulation commands.
# Add genesis account
appd genesis add-genesis-account [address] [coins] [flags]

# Collect genesis transactions
appd genesis collect-gentxs [flags]

# Generate genesis transaction
appd genesis gentx [key-name] [amount] [flags]

comet

CometBFT-specific commands.
# Show node ID
appd comet show-node-id [flags]

# Show validator info
appd comet show-validator [flags]

# Reset blockchain state
appd comet unsafe-reset-all [flags]

debug

Debugging utilities.
# Get raw bytes for address
appd debug addr [address] [flags]

# Decode raw hex bytes
appd debug raw-bytes [hex] [flags]

# Convert public key
appd debug pubkey [pubkey] [flags]

Examples

Setting up a new account

# Create a new account
appd keys add myaccount

# Import an Ethereum private key
appd keys unsafe-import-eth-key myethaccount 0x...

# List all accounts
appd keys list

# Show account details
appd keys show myaccount

Querying blockchain state

# Get account balance
appd query bank balances cosmos1...

# Get EVM account info
appd query evm account 0x...

# Get ERC20 balance
appd query evm balance-erc20 0xUserAddress 0xTokenAddress

# Get base fee
appd query feemarket base-fee

Sending transactions

# Send native tokens
appd tx bank send myaccount cosmos1... 100ustake --gas-prices 10ustake

# Send native tokens using EVM message
appd tx evm send myaccount 0x... 100ustake --gas-prices 10ustake

# Convert coins to ERC20
appd tx erc20 convert-coin 100ustake 0x... --from myaccount

Configuration

  • Configuration directory: ~/.appd/
  • Key storage: Managed by the keyring backend (os, file, test)
  • Node configuration: ~/.appd/config/config.toml
  • App configuration: ~/.appd/config/app.toml
If you use the --home flag upon initializing the light client, the root/config directory will be generated there