Tools

CLI

@cowlprotocol/cli puts Cowl in your terminal — a local encrypted wallet, one-time stealth addresses, view keys for selective disclosure, balances, transfers, and the fee schedule. It is testnet-first: everything that can be real today is real; shielded-pool operations light up as the protocol contracts deploy.

Install

npm install -g @cowlprotocol/cli

Requires Node.js 18+. The command is cowl.

Quick start

cowl init        # create a wallet + view key, pick a network
cowl balance     # read your on-chain balance
cowl address     # fresh stealth address to receive privately
cowl fees        # protocol fee schedule
cowl ping        # RPC connectivity check

Everything lives in ~/.cowl/ (private, mode 0600). Keys are encrypted with a passphrase (scrypt + AES-256-GCM) and never leave your machine.

Wallet

cowl init                 # guided setup (new or import + passphrase + network)
cowl wallet new           # create a new wallet
cowl wallet import [0x…]  # import a private key
cowl wallet address       # print your address
cowl wallet export        # reveal your private key (asks to confirm)

Stealth addresses

Every deposit can land on a fresh, unlinkable stealth address that only you can spend from. Spending and viewing keys derive from your wallet, so addresses are always recoverable.

cowl address          # generate a one-time stealth address
cowl address --meta   # show your shareable stealth meta-address

View keys

A view key is what you hand an auditor for read-only, scoped disclosure. The public half is shareable; the private half stays in ~/.cowl/.

cowl viewkey show   # print your public view key
cowl viewkey new    # generate a new view key

Balances & transfers

cowl balance                    # native balance
cowl balance --token 0x…        # ERC-20 balance

cowl send 0.01 ETH 0xRecipient…       # native transfer (a stealth address works)
cowl send 100 0xToken… 0xRecipient…   # ERC-20 transfer

Networks & config

Robinhood Chain is an Arbitrum-based L2. Until its public testnet ships, Arbitrum Sepolia is the working default, so reads and connectivity are real today. Everything is overridable.

cowl network              # list networks (active is marked)
cowl network use <key>    # switch active network

cowl config show          # resolved network + contract addresses
cowl config set rpcUrl <url>            # override the RPC
cowl config set contracts.pool 0x…      # point at a deployment once live

Global flags --network <key>, --rpc <url>, and --json work on any command.

Fees

cowl fees   # protocol fee schedule + where fees go

See fee structure and fee collector for the detail.

Shielded pool

Deposits, private trades, withdrawals, and staking run against the on-chain Cowl contracts. Until those are deployed on a public network these commands report their status and the config needed to point them at a deployment.

cowl shield <amount> [token]      # deposit into the shielded pool
cowl unshield <amount> [token]    # withdraw
cowl trade <side> <amount> <market>
cowl stake <amount>               # stake $COWL

Command reference

CommandWhat it doesStatus
cowl initSet up wallet, view key, and networkLive
cowl walletnew · import · address · exportLive
cowl balanceNative or ERC-20 balanceLive
cowl addressOne-time stealth addressLive
cowl viewkeySelective-disclosure view keysLive
cowl sendTransfer native or ERC-20Live
cowl fees · ping · network · configFee schedule, connectivity, configLive
cowl shield · unshield · trade · stakeShielded-pool operationsTestnet-first

File locations

~/.cowl/
  keystore.json   # encrypted EVM key   (scrypt + AES-256-GCM, 0600)
  viewkey.json    # ed25519 view key    (0600)
  config.json     # network + overrides (0600)

Override the directory with COWL_HOME.

Testnet-first
The CLI is non-custodial and testnet-first. Do not point it at mainnet funds until the protocol is audited and live. See the disclaimer.
Links