Scoped agent identity
Every agent gets its own ENS subname, bound to one address and owned by you. Revoke it and the agent is out.
agent1.aegisnet.ethAegisNet binds every agent to an ENS identity, routes its trades through 1inch SwapVM and Uniswap v4, and pauses high-value moves for World ID proof of human.
Agents with a raw private key can do anything. AegisNet gives each agent a named identity with hard limits, and brings a verified human in exactly when the stakes are high.
Every agent gets its own ENS subname, bound to one address and owned by you. Revoke it and the agent is out.
agent1.aegisnet.ethA whitelist of target contracts and a daily spend limit live onchain. Requests outside them are rejected before they are queued.
isAgentAuthorized()Anything at or above the agent's threshold pauses until a World ID proof arrives. Each proof works only once, so it can't be replayed.
≥ $1,000 → biometric gateStrategies compile to 1inch SwapVM opcodes: direct swaps, split routes, Uniswap v4 hops, Aqua positions and a minimum-output check.
0x01 · 0x02 · 0x03 · 0x04 · 0x05 · 0x06A Uniswap v4 beforeSwap hook checks the caller's ENS permissions, so only registered agents can trade gated pools, and never around the biometric gate.
A pending high-value request can be cancelled by the agent's owner at any point before it executes. Nothing moves without the gate clearing.
cancelExecution()An agent asks to act. AegisNet checks who it is, builds the route, decides if a human must sign off, then settles it onchain.
The agent's address resolves to its ENS subname in AegisSubnameRegistry, along with its whitelist, daily limit and biometric threshold.
The AI agent turns the goal into a SwapVM instruction list, including an agent-gated Uniswap v4 hop and a slippage guard, encoded for AegisSwapVMAdapter.
If the value meets the threshold, AegisExecutionManager holds the request. The owner verifies with World ID, or cancels.
Once cleared, the manager calls the target route atomically and records the spend against the agent's daily limit.
# 1. Claude plans the trade POST /api/agent/propose { "amountUSD": 2500 } ← "Swap $2,500 USDC to ETH via 1inch" # 2. agent wallet signs on Sepolia requestExecution(adapter, calldata, 2500e18) ← ExecutionRequested requiresBiometrics true # 3. owner scans with World App POST /api/worldid/attest { proof, nullifier } ← relayer signature ✓ # 4. owner wallet approves + executes verifyBiometricsWithRelayer(…) executeVerifiedTransaction(requestId) ← ExecutionExecuted EXECUTED
The same agent, three different trades. AegisNet decides, on its own, which ones can run, which need a human, and which get stopped.
A DAO's agent rebalances the treasury every day with small swaps. Each one is inside its limits, so it executes straight away and nobody has to wake up.
The agent spots an opportunity and wants to move $25,000. AegisNet holds the trade onchain until the owner proves they're a real person with World ID.
An attacker takes over the agent. It can't call contracts outside its whitelist or go past its daily limit, and the owner can revoke it in one click.
Every contract is live and verifiable on Etherscan. This list is loaded from the running backend when it's available.
Hardhat contracts, a TypeScript API and this console, all in one repo.
cd contracts
npm install
npm testbackend/.envSEPOLIA_RPC_URL=…
PRIVATE_KEY=…
ENS_ROOT_NAME=aegisnet.eth
WORLD_ID_APP_ID=app_…cd backend
npm install && npm run build
npm start # → http://localhost:4000Writes are signed by the user's wallet directly on the contracts. The API plans, verifies and indexes.
/api/agent/proposeClaude plans a strategy and returns the encoded calldata/api/worldid/attestVerify a World ID proof and get the relayer attestation/api/execution/requestsEvery trade request, indexed from chain events/api/ens/agents?owner=0x…Agents an address owns/api/ens/permissions/:agentAddressAn agent's live onchain limits/api/uniswap/pools/:poolIdUniswap v4 agent-only gating/api/healthChain, relayer, AI, World ID and indexer statusAegisExecutionManager rejects any request from an agent that isn't registered and active, or that targets a contract you didn't whitelist. Anything at or above the approval threshold waits for a World ID proof. The daily spend limit is enforced when the trade executes, and the console and backend refuse to submit or approve a trade that would break it.cancelExecution on any request that hasn't executed yet. In the console it's one click from the Activity tab.updateBiometricThreshold, change allowed targets with setTargetContractWhitelist, or revoke the subname entirely.npx hardhat node and npm run deploy.AegisExecutionManager verifies onchain. Each agent owner is bound to one verified human, so nobody else can approve their trades.Register an agent, preview its route and run a guarded execution from the console.