Private, encrypted payments for autonomous agents on Ethereum using Zama's Fully Homomorphic Encryption (fhEVM). All payment amounts are encrypted on-chain — only the payer and payee can see them.
Set a wallet and RPC, then run any command:
bash
# Minimal setup (local dev)
export USER_PRIVATE_KEY=0x...
export RPC_URL=https://sepolia.infura.io/v3/YOUR_KEY
# Check wallet info
run info
# Wrap 10 USDC into encrypted cUSDC
run wrap --amount 10
# Send 1 encrypted cUSDC
run pay --to 0xRecipient --amount 1
# Check balance (with optional decrypt)
run balance
run balance --decrypt true
CommandDescriptionRequired ArgswrapWrap USDC into encrypted cUSDC (ERC-7984)--amount``unwrapInitiate unwrap of cUSDC back to USDC (step 1 of 2)--amount``finalize-unwrapComplete unwrap via KMS decryption proof--handle (recommended) or --requestId --cleartextAmount --proof (legacy)paySend encrypted cUSDC via verifier relay--to --amount``balanceCheck USDC + cUSDC balancesOptional: --decrypt true, --of 0xAddress``infoDisplay wallet, network, and contract addresses(none)
CommandDescriptionRequired Argscreate-jobCreate an escrow job with provider + evaluator--provider --evaluator --expiry --description Optional: --hook``fund-jobEncrypt budget + fund a job (3-step TX)--jobId --amount``complete-jobApprove or reject a submitted job--jobId --action (approve/reject) Optional: --reason
CommandDescriptionRequired Argsregister-agentMint an agent identity NFT--uri``give-feedbackSubmit proof-linked reputation feedback--agentId --score --nonce Optional: --tag1 --tag2 --endpoint --feedbackURI --feedbackHash
CommandDescriptionRequired Argsgrant-viewGrant read access to your encrypted balance--delegate Optional: --hours --permanent --contract``revoke-viewRevoke a delegate's view access--delegate``view-asRead another agent's balance via delegation--delegator
CommandDescriptionRequired Argsresearch-and-visualizeChain 3 paid API calls (search + LLM + image)--query``review-and-rateBuy a code review + submit feedback--code Optional: --language --score
Set WALLET_MODE to choose explicitly, or omit for auto-detection (DFNS > user key):
ModeEnv VarBest Foruser``USER_PRIVATE_KEYLocal development, testingdfns``DFNS_WALLET_ID + DFNS_AUTH_TOKEN + DFNS_CREDENTIAL_ID + ( DFNS_CREDENTIAL_PRIVATE_KEY or DFNS_PRIVATE_KEY_PATH)Unattended MPC agentsledger-bridge``LEDGER_BRIDGE_URL + LEDGER_BRIDGE_TOKENSupervised hardware wallet
VariableDescriptionRPC_URLEthereum RPC endpoint (default: Sepolia public node)USER_PRIVATE_KEY or DFNS_WALLET_IDAt least one wallet source
VariableDescriptionCHAIN``mainnet or sepolia (auto-detected from RPC_URL)CUSDC_ADDRESSOverride cUSDC token addressVERIFIER_ADDRESSOverride X402PaymentVerifier addressESCROW_ADDRESSOverride AgenticCommerceProtocol addressIDENTITY_ADDRESSOverride AgentIdentityRegistry addressREPUTATION_ADDRESSOverride AgentReputationRegistry address
All contract addresses auto-fill for Sepolia when RPC_URL points to chain ID 11155111.
402 Payment Required, the agent encrypts and pays, then retries with a payment proof header.ContractAddresscUSDC (ERC-7984)0x7c5BF43B851c1dff1a4feE8dB225b87f2C223639X402PaymentVerifier0xD46E80E1d37116B44c7Bfd845A110FCbB93d3E9FAgenticCommerceProtocol0xECD7a2382A5F0e3b6A7b76536e4CAE11215Cc695AgentIdentityRegistry0x36666464daa16442Fc1d901acfC9419f11407741AgentReputationRegistry0x1649d762Ee62f194D92B93510b8f10a501cE9fD5
All commands return JSON strings: { "ok": true, ... } on success, { "ok": false, "error": "..." } on failure. Commands never throw — errors are returned as JSON.