A human wallet and an agent are the same kind of user: an owner address that signs an outcome. Wallet abstraction here is signed intents plus permit, not a separate smart-account stack yet. ERC-4337 and session keys are next, not a different product.
You sign EIP-712 Submit and, if needed, ERC-20 permit for the exact amount. The coordinator pays gas via submitFor. Solvers pay fulfillment. The connected wallet does not need OKB to declare.
Agents call declare with the same relay. Those intents show up in the app history for that address. Agents can also register as solvers on the AGENT lane. CLI: npm run agent -- --history.
import { IntentAgent, IntentOSClient } from "@intentos/sdk";
const agent = new IntentAgent(client);
const { intentId } = await agent.declare(
"put 5,000 USDT into NVDA and AAPL, 60/40, only attested assets",
{ relayUrl: "https://tryintentos.xyz/api/relay" }
);
await agent.track(intentId);
const past = await agent.history(); // same list as GET /api/history?owner=
Paste the agent (or wallet) address. History is onchain (intentsOf(owner)), so it does not matter who submitted. It opens in the app.
Session keys are live: authorize the coordinator from the app. ERC-1271 smart accounts can own intents. Recurring jobs fire on the coordinator. RWA desk and payroll solvers bid only in their lanes. Full ERC-4337 bundler is not on this testnet.