ETHOnline 2026 · Continuity build

The authorization firewall for agent-to-agent commerce.

AgentGuard lets an autonomous buyer hire a seller Agent while keeping authority bounded: live data informs the decision, policy controls the spend, and an independent verifier decides whether payment is released.

Arc + The Graph + Privy · one live composed proof GitHub repository Build plan Partner fit

The judge-visible loop

A real The Graph observation scores the YieldScout seller before policy approval. A dedicated Privy wallet authorizes only bounded Arc writes. USDC is released only after independent verification.

01 · SIGNALThe Graph live observation
02 · PLANTreasuryPlanner proposes
03 · POLICYBudget, permission, risk
04 · AUTHORIZEPrivy wallet control
05 · ESCROWArc USDC task
06 · VERIFYIndependent verifier
07 · RECEIPTHash + explorer proof
One-page architecture

One workflow, three load-bearing integrations

The diagram is the submission-ready overview used in the README and demo video. Open the original SVG for full-resolution judging.

AgentGuard architecture: The Graph informs policy, Privy authorizes bounded Arc writes, and an independent verifier releases or holds USDC.
Primary live proof · Arc Testnet

Graph-informed, Privy-authorized Agent-to-Agent settlement

The custom Subgraph supplied a 100% verified seller history. AgentGuard bound that observation and policy decision into a new 1 USDC task, a restricted Privy wallet created it, and an independent verifier released payment on Arc.

THE GRAPH · LIVE_EXTERNAL_DATA

Decision snapshot · 3/3 VERIFIED

The live pre-task snapshot had no indexing errors. Its VERIFIED rate became a load-bearing risk input; later failure tasks are separate evidence.

Graph hash: 0xf3b6f231…653d42
ARC · LIVE_TESTNET

Task 497296…395952

approve → create → submit → independently verify → release

Evidence: 0x8e285743…787d7
PRIVY · LIVE_TESTNET

Nine bounded writes

The same buyer policy constrained VERIFIED, BLOCKED and FROZEN Arc calls.

Failure auth: 0x02a2edc1…7af6a2

Three outcomes

VERIFIED

Release after proof

Seller output passes the independent checks, so the escrow becomes eligible for release.

resultHash → verifier decision → settlement receipt
BLOCKED · LIVE_TESTNET

Refund before seller work

A policy drift cancelled the reserved task before seller execution and returned 0.25 test USDC.

0x6de48ef0…12fe6f
FROZEN · LIVE_TESTNET

Contain bad output

The seller returned invalid output, the independent verifier rejected it, and 0.25 test USDC remains isolated.

0xb94f9e76…39ced1

Continuity: what is new here?

Foundation from before ETHOnlineNew ETHOnline featureStatus
Monad policy engine, escrow state machine, independent verifierArc USDC settlement adapterLIVE_TESTNET
YieldScout report hashing and receipt formatThe Graph live query becomes a decision inputLIVE_EXTERNAL_DATA
Browser judge console patternsPrivy P-256 wallet + Arc/contract allowlistLIVE_TESTNET
Monad testnet evidenceETHOnline-specific Arc + Graph + Privy evidence manifestLIVE

Policy playground SIMULATION · no wallet

Adjust the boundary and see the decision before a transaction would be requested.

Judge replay: run the complete local workflow

This browser replay mirrors the same deterministic boundaries as src/ethonline/workflow.ts. It never connects a wallet or moves funds; the point is to let a reviewer operate the decision path, not just read about it.

WORKFLOW STATE
VERIFIED
Optional live browser path

Operate one bounded Arc Testnet task

Connect an EIP-1193 wallet to inspect the live buyer policy. Write actions are separated and each one opens the wallet confirmation dialog. This page never receives or stores a private key.

Wallet disconnected. The rest of the demo remains read-only.

The live path creates an escrow reservation only. It does not automatically submit a seller result or release funds; settlement still requires the independent verifier.

Evidence status

Arc USDC VERIFIED release1 USDC released after independent verificationLIVE_TESTNET ↗
The Graph provenanceTask-bound seller history drove policy approval · 3/3 indexed VERIFIEDLIVE_EXTERNAL_DATA ↗
Privy authorizationRestricted buyer wallet signed nine public Arc writes across all outcomesLIVE_TESTNET ↗
BLOCKED refundTask reserved, cancelled before seller execution, buyer refundedLIVE_TESTNET ↗
FROZEN containmentBad seller result rejected by the independent verifierLIVE_TESTNET ↗
Reproducible baselineMonad foundation tests and evidence remain availableJudge guide ↗

Browser evidence verification

The page loads the same machine-readable manifest committed in the repository and checks its schema, sponsor count, outcome coverage and honesty rules. The manifest points to the single live Arc, The Graph and Privy proof while preserving browser-only outcomes as simulation.

Loading manifest…

Browser-ready verification matrix

Every claim has a visible evidence class. A judge can inspect the same labels in the repository manifest without connecting a wallet or trusting a private backend.

ResultWhat it provesCurrent evidence
VERIFIEDIndependent checks pass before release becomes eligibleLive Privy-authorized Arc release ↗
BLOCKEDReserved task is cancelled before seller execution and refundedLive Arc refund ↗
FROZENBad output is rejected and escrow remains isolatedLive Arc freeze ↗

Reproduce in one command

Clone the repository and run the judge path. It verifies the contracts, TypeScript, failure-state tests, Graph no-network fallback and the sponsor evidence manifest.

npm ci && npm run ethonline:check