USDC yield agent on Base that auto-claims rewards, with iNFT identity on 0G. ENS-resolvable
A verifiable USDC yield agent on Base. Auto-claims reward tokens, only rotates when the math works, refuses to act when refusing is correct. iNFT identity on 0G. ENS-resolvable. x402-paid policy decisions.
Tech stack Frontend — Next.js 15 App Router, React 19, Tailwind, Privy wallet On-chain — Solidity 0.8.27, OpenZeppelin v5, Hardhat, viem multicall 0G — @0gfoundation/0g-ts-sdk (Storage), @0glabs/0g-serving-broker (Compute) ENS — viem mainnet client, server-side reverse cache (5min TTL) Yields — DeFiLlama API, real 90-day backtest engine
Auto-claim rewards (Aave + Merkl + KeeperHub) Trove's headline pitch — "auto-claims reward tokens you'd forget" — is implemented end-to-end:
/api/agent/rewards?address=0x… queries Aave V3's RewardsController and Merkl's distributor on Base. Returns unclaimed amounts with USD valuations (CoinGecko primary, DefiLlama fallback) plus a pre-built batched claim transaction. UI panel surfaces the data — visible for any wallet lookup. "Claim now (you sign)" button enabled when the connected user matches the lookup. For unattended auto-claim: user calls Aave's setClaimer(user, KEEPERHUB_TURNKEY_WALLET) once via the in-UI button. KeeperHub's cron workflow then claims rewards on-behalf forever. Merkl path requires no setClaimer (proofs hardcode recipient). Configured KeeperHub Turnkey wallet: 0x1A09587D1f8D7BFB88454Abd51EB0354A2fdeDDd. Workflow JSON in keeperhub-workflow.json (13 nodes, parallel branches, cross-chain Base + 0G Galileo).

