Node RequirementsTo 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)
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