Quickstart
Two doors into the same pool. The web app takes about two minutes and installs nothing. The CLI takes about five and gives you every flag. Pick either — they settle against the same contracts and read the same notes.
Door one — the web app
Open app.cowlprotocol.com. Nothing to install, and the proofs are built in your own browser.
- Connect any EVM wallet.
- Unlock. One signature derives your shielded keys locally. They stay in the tab and are never uploaded. That signature is your shielded account, so sign the unlock message on app.cowlprotocol.com and nowhere else.
- Shield. Deposit on the Shield card. Your deposit becomes a private note.
- Read your book. The Portfolio tab shows what only your keys can open. The explorer sees a commitment.
From there, Send pays any zcowl1… address, Swap trades from inside the pool, and Receive prints the address people pay you at. Full tour on the web app page.
Door two — the CLI
1 — Install
npm install -g @cowlprotocol/cliRequires Node.js 18+. The command is cowl.
2 — Set up your wallet
Creates an encrypted keystore, a view key, and your shielded keys. Everything stays in ~/.cowl on your machine.
cowl init3 — Pick a network and fund it
Mainnet is robinhood-mainnet, chain 4663. Testnet is robinhood-testnet, chain 46630, where the funds are free and the flow is identical.
cowl network use robinhood-mainnet
cowl balance # the public side; --shielded reads the pool
# rehearsing instead?
cowl network use robinhood-testnet
cowl faucet4 — Shield your funds
Deposit into the shielded pool. Your deposit becomes a private note, committed on chain with a ZK proof. This is the boundary between the public world and your shielded state, and it crosses in shared denomination sizes by default.
cowl shield 0.15 — Read your shielded book
Sync the local commitment tree from chain, then read the balance only your keys can open.
cowl scan
cowl balance --shielded6 — Use it
cowl receive # your shielded payment address
cowl send 0.01 ETH zcowl1… # private, in-pool transfer
cowl trade 0.3 USDG # private swap through public liquidity
cowl unshield 0.05 # withdrawAll four go through the gasless relayer by default, so your wallet never surfaces as the gas payer. Add --self to submit any of them yourself.
cowl config set shieldedAccount sig-v1, then check that cowl receive matches the app’s Receive tab before moving anything.Where to go next
| You want to | Read |
|---|---|
| Understand notes, commitments, and nullifiers | Core concepts |
| Know why amounts cross in round sizes | Denominations |
| Trade without showing a pending order | Make a private trade |
| Never pay gas from your own wallet | Gasless relayer |
| Check the security work yourself | Audits |