01 · Execution Kit
Turn agent decisions into verified Arc execution.
Aomi turns an exact wallet request into a paid, simulated artifact. Circle separately authorizes the request, the service payment, and final execution.
- Runtime
- Staging verified
- Hosted route
- Being routed
- Network
- Arc Testnet proven
- Production
- Rollout pending
Use this when
You already own the intelligence.
Copy the integration
Integrate against the tested contract.
npm install https://github.com/aomi-labs/arc-canteen/archive/ab1e44dc8093f0edee104de327e91da43000c09b.tar.gz// server/execution.ts
import { readFile } from "node:fs/promises";
import { TaskClient, parseSmartAccountArtifact } from "arc-canteen/task-client";
import { CircleArcWallet } from "arc-canteen/circle-arc-wallet";
const wallet = new CircleArcWallet({ walletAddress: circleWallet });
const payer = await wallet.gatewayPayer();
const calls = planCalls(decision); // exact ordered { to, data, value }[]
const request = {
executionKind: "smart_account_calls",
intent: decision.summary,
chainId: 5042002,
sender: wallet.walletAddress,
payer,
calls,
constraints: decision.constraints,
};
const client = new TaskClient({
endpoint: process.env.AOMI_TASK_ENDPOINT!,
recipient: process.env.AOMI_TASK_SELLER!,
trustedJwks: JSON.parse(await readFile("./trusted-aomi-jwks.json", "utf8")),
maxFeeMicrousd: 1_100_000n,
stateDirectory: "/private/task-state",
payer,
signTypedData: (data) => wallet.signTypedData(data, showReview),
});
// Signature 1: authorize only this exact Task request.
const quote = await client.prepare(request);
// Signature 2: pay for the immutable simulated artifact.
const purchased = await client.purchase(request);
if (purchased.status === "pending") return reconcileLater();
const artifact = parseSmartAccountArtifact(purchased.bytes, request, quote);
assertExactCalls(artifact.calls, calls);
// Signature 3: Circle executes the exact verified calls on Arc.
for (const call of artifact.calls) {
const submitted = await wallet.executeContractCall(call, showReview);
await verifyArcReceipt(submitted);
}Provisioning: ask Aomi for the routed staging endpoint, seller address, and trusted attestation JWKS. The signature-only runtime and smart_account_calls flow are verified on Arc Testnet; the canonical builder route and production Task rollout are still being completed. Final wallet execution always stays with the builder.
Trace the request
From agent intent to verified Arc receipt.
Control boundary: signing the Task grants no spending or execution authority. Aomi simulates the inner calls; Circle Wallet separately signs payment and execution. Your app marks completion only after the Arc receipt and expected events independently verify.
Implementation reference
Five gates before completion.
Sign the canonical request with short-lived EIP-712 authorization. No login, session, API key, or bearer.
Check the attestation, request and payload hashes, identities, chain, fee cap, and Gateway requirement.
Sign the separate Gateway payment; durable idempotency makes retries recover the same purchase.
Require the artifact’s ordered targets, calldata, and values to equal the application plan.
Circle signs the final calls. Mark complete only after the Arc receipt and expected contract events verify.