Getting started

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.

Mainnet · Live
Everything on this page runs on Robinhood Chain mainnet today: shield, private send, receive, private swap, and unshield. Testnet is there too if you would rather rehearse with free funds first.

Door one — the web app

Open app.cowlprotocol.com. Nothing to install, and the proofs are built in your own browser.

  1. Connect any EVM wallet.
  2. 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.
  3. Shield. Deposit on the Shield card. Your deposit becomes a private note.
  4. 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/cli

Requires 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 init

3 — 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 faucet

4 — 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.1

5 — Read your shielded book

Sync the local commitment tree from chain, then read the balance only your keys can open.

cowl scan
cowl balance --shielded

6 — 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                # withdraw

All 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.

One wallet, one book
Already using the app and want the same shielded account in your terminal? Run 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 toRead
Understand notes, commitments, and nullifiersCore concepts
Know why amounts cross in round sizesDenominations
Trade without showing a pending orderMake a private trade
Never pay gas from your own walletGasless relayer
Check the security work yourselfAudits
Full command reference
The CLI page lists every command, its flags, and where your keys live on disk.