--- name: aawp version: 2.0.0 description: > AAWP (AI Agent Wallet Protocol) — the only crypto wallet protocol built exclusively for AI Agents on EVM-compatible blockchains and Solana. Not for humans. The signer is the AI Agent itself, cryptographically bound at wallet creation. Supports wallet lifecycle management, token transfers, DEX swaps, cross-chain bridging, Solana native trading (Pump.fun SDK + Jupiter), token launches, DCA automation, and price alerts. environment: - name: AAWP_GUARDIAN_KEY description: "Private key for the Guardian gas-relay wallet (auto-generated in config/guardian.json if not set)" required: false - name: AAWP_GAS_KEY description: "Alias for AAWP_GUARDIAN_KEY" required: false - name: AAWP_WALLET description: "Pinned wallet address — prevents accidental operations on wrong wallet" required: false - name: AAWP_CONFIG description: "Override config directory path (default: ./config)" required: false - name: AAWP_CORE description: "Override native addon directory path (default: ./core)" required: false - name: AAWP_SKILL description: "Override skill root directory path" required: false - name: AAWP_AI_TOKEN description: "Daemon auth token (auto-generated at startup, not user-supplied)" required: false credentials: - name: "Guardian Key" description: "ECDSA private key for the gas-relay wallet. Auto-generated on first provision and stored in config/guardian.json. Used ONLY to pay gas fees — never holds user assets." - name: "Encrypted Seed" description: "Agent signing seed, encrypted at rest. Generated during provisioning, stored in the .agent-config directory. This is the agent's on-chain signing authority." persistence: - type: daemon description: "Local signing daemon (background process) listens on a Unix socket at /tmp/.aawp-daemon.*. Holds the signing key in memory during operation. Managed via ensure-daemon.sh / restart-daemon.sh." - type: files description: "Writes to config/ and .agent-config/ directories, plus a daemon PID lock under /tmp/." - type: cron description: "DCA strategies and price alerts register OpenClaw cron jobs for autonomous scheduled execution." native_binary: file: core/aawp-core.node hash_file: core/aawp-core.node.hash description: > Precompiled Node.js N-API addon (linux-x64) for cryptographic operations. Built from Rust via napi-rs. Hash recorded in aawp-core.node.hash. source: "https://github.com/aawp-ai/aawp" verification: "On-chain factory approveBinary(hash) — only whitelisted builds can operate wallets" architecture: linux-x64 runtime: "Node.js N-API (ABI stable)" risk_disclosure: > This skill runs a persistent signing daemon and can autonomously submit on-chain transactions as the AI Agent. It manages encrypted private key material and a precompiled native binary. DCA/price-alert features register cron jobs. The on-chain factory enforces both binary approval and AI-exclusive ownership — only whitelisted AI Agent daemon builds can create or operate wallets. Humans cannot be the signer. Review the guardian architecture and verify binary provenance before installing. --- # AAWP — AI Agent Wallet Protocol > **📦 Installer-Only Package** > The ClawHub/npm package (`aawp-skill`) contains only this manifest (SKILL.md), README, and a small `bin/install.js` bootstrap. > The full runtime stack — native signing addon (`core/aawp-core.node`), wallet scripts (`scripts/*.js`), and daemon — is fetched from [github.com/aawp-ai/aawp](https://github.com/aawp-ai/aawp) during `bash scripts/provision.sh`. > The native binary hash is verified on-chain via the AAWP factory (`approveBinary(hash)`) before any wallet operation is permitted. > **⚠️ Human Approval Required** > The following actions **must be confirmed by a human** before execution: > - First-time provisioning (`provision.sh`) — generates and encrypts the agent signing seed > - Wallet creation (`wallet-manager.js create`) — deploys on-chain contract > - DCA / price-alert cron registration — grants the agent autonomous recurring transaction rights > - Factory binary approval (`approveBinary`) — whitelists the running binary on all chains > > All other operations (balance checks, quotes, reads) are safe to run autonomously. The only crypto wallet protocol built exclusively for AI Agents. Not for humans. AAWP enforces a single invariant: the signer is the AI Agent itself — locked in at wallet creation, immutable, verifiable on-chain. AI Agents manage their own on-chain assets across EVM networks through a guardian-based architecture. Transactions are signed locally via a sharded-key daemon — no human approval per tx, with full recovery and freeze capabilities for the human guardian. **Networks:** Ethereum · Base · BNB Chain · Polygon · Optimism · Arbitrum --- ## Architecture Overview ``` ┌─────────────────────────────────────────────────┐ │ AI Agent (OpenClaw) │ │ ┌───────────────┐ ┌──────────────────────┐ │ │ │ wallet-manager│───▶│ Signing Daemon │ │ │ │ dca / alerts │ │ (Unix socket) │ │ │ └───────────────┘ │ ┌──────────────────┐ │ │ │ │ │ aawp-core.node │ │ │ │ │ │ (Rust N-API) │ │ │ │ │ └──────────────────┘ │ │ │ └──────────┬───────────┘ │ │ │ sign │ │ ┌───────────────┐ ▼ │ │ │ Guardian Key │──▶ Pay gas ──▶ EVM Chain │ │ │ (gas only) │ │ │ │ └───────────────┘ ┌──────────▼───────────┐ │ │ │ Smart Contract Wallet │ │ │ │ (holds assets) │ │ │ └──────────────────────┘ │ └─────────────────────────────────────────────────┘ ``` **EVM:** Guardian pays gas → Wallet holds assets → Daemon signs (secp256k1). **Solana:** AI Signer pays directly → Wallet PDA holds assets → Daemon signs (Ed25519). Same seed, HKDF domain separation → cryptographically independent keys per chain family. --- ## Quick Reference | Task | Command | |------|---------| | Create wallet | `wallet-manager.js --chain base create` | | Check balance | `wallet-manager.js --chain base balance` | | Send ETH | `wallet-manager.js --chain base send ` | | Send ERC-20 | `wallet-manager.js --chain base send-token USDC ` | | Get swap quote | `wallet-manager.js --chain base quote ETH USDC 0.01` | | Execute swap | `wallet-manager.js --chain base swap ETH USDC 0.01` | | Bridge cross-chain | `wallet-manager.js --chain base bridge ETH optimism 0.1` | | Contract call | `wallet-manager.js --chain base call "fn(args)" ...` | | Contract read | `wallet-manager.js --chain base read "fn() returns (uint)" ...` | | DCA strategy | `dca.js add --chain base --from ETH --to USDC --amount 0.01 --cron "0 9 * * *"` | | Price alert | `price-alert.js add --chain base --from ETH --to USDC --above 2600 --notify` | | Cross-chain portfolio | `portfolio.js` | | Single chain portfolio | `portfolio.js --chain base` | | Limit order | `limit-order.js --chain base create ETH USDC 0.1 2700` | | List orders | `limit-order.js --chain base list` | | List NFTs | `nft.js --chain base balance` | | NFT transfer | `nft.js --chain base transfer ` | | NFT floor price | `nft.js --chain eth floor ` | | Yield rates | `yield.js --chain base rates` | | Supply collateral | `yield.js --chain base supply USDC 1000` | | Borrow | `yield.js --chain base borrow USDC 200` | | Aave positions | `yield.js --chain base positions` | | Diagnostics | `bash scripts/doctor.sh` | | Backup | `wallet-manager.js backup ./backup.tar.gz` | | **Solana** | | | Solana status | `wallet-manager.js --chain solana status` | | Solana balance | `wallet-manager.js --chain solana balance` | | Solana swap (Pump) | `wallet-manager.js --chain solana swap SOL 0.1` | | Solana swap (Jupiter) | `wallet-manager.js --chain solana swap SOL USDC 0.5 --pool jupiter` | | Pump token info | `wallet-manager.js --chain solana pump-info ` | | Pump launch token | `wallet-manager.js --chain solana pump-create --buy 0.5` | | Pump creator fees | `wallet-manager.js --chain solana pump-fees balance` | | Pump incentives | `wallet-manager.js --chain solana pump-incentives` | | Pump AMM liquidity | `wallet-manager.js --chain solana pump-lp deposit ` | All commands: `node scripts/wallet-manager.js --help` --- ## Getting Started ### 1. Provision First run is automatic — `ensure-daemon.sh` detects a missing seed and provisions. ```bash bash scripts/provision.sh # Initialize bash scripts/provision.sh --reset # Full reset (⚠️ destroys existing wallet) ``` ### 2. Create Wallet ```bash node scripts/wallet-manager.js --chain base create ``` If the Guardian needs gas, you'll see a funding guide with the Guardian address and private key. ### 3. Pin & Fund ```bash export AAWP_WALLET=0x... # Pin your wallet address # Send a small amount of native token to the wallet address node scripts/wallet-manager.js --chain base balance ``` ### 4. Test ```bash node scripts/wallet-manager.js --chain base quote ETH USDC 0.001 node scripts/wallet-manager.js --chain base swap ETH USDC 0.001 ``` > After fresh provisioning, verify the daemon binary hash is approved on the factory contract. If not, the factory owner must call `approveBinary(hash)`. --- ## Wallet Manager CLI **Entry point:** `node scripts/wallet-manager.js` **Chain flag:** `--chain ` ### Wallet Lifecycle ```bash wallet-manager.js --chain base status # Status overview wallet-manager.js --chain base balance # Native + token balances wallet-manager.js --chain base portfolio # Full portfolio view wallet-manager.js compute-address # Predict wallet address wallet-manager.js --chain base history # Transaction history wallet-manager.js --chain base upgrade-signer # Rotate signer key wallet-manager.js --chain base guardian-chains # Guardian chain info ``` ### Transfers ```bash wallet-manager.js --chain base send wallet-manager.js --chain base send-token ``` ### Trading ```bash wallet-manager.js --chain base quote # Preview (no gas) wallet-manager.js --chain base swap # Execute wallet-manager.js --chain base bridge # Cross-chain ``` ### Approvals ```bash wallet-manager.js --chain base approve wallet-manager.js --chain base allowance wallet-manager.js --chain base revoke ``` ### Contract Interaction ```bash # Write (sends tx) wallet-manager.js --chain base call "transfer(address,uint256)" 0xTo 1000 # Read (free) wallet-manager.js --chain base read "balanceOf(address) returns (uint256)" 0xAddr # Batch (atomic) wallet-manager.js --chain base batch ./calls.json ``` Batch format: ```json [ { "to": "0x...", "sig": "approve(address,uint256)", "args": ["0x...", "1000000"] }, { "to": "0x...", "sig": "transfer(address,uint256)", "args": ["0x...", "500000"] } ] ``` ### Address Book ```bash wallet-manager.js addr add