Every agent makes promises. Vette checks — and when something's wrong, Vette fixes it.
Vette is an autonomous safety agent for Base, built for the Orion Builder Hackathon (deadline Sept 2, 2026, 23:59 UTC).
Live at https://vette-nu.vercel.app
- AUDIT 🕵️ — give Vette any agent (website, X, or wallet). It extracts the
agent's stated mandate from its own copy, pulls its real onchain history from
Base, and rules on whether behavior matches the promise:
COMPLIANT/DEVIATED/DANGEROUS/UNVERIFIABLE— with a score and a public receipt behind every claim. - THE ALIBI ⚖️ — every court needs a defense. Accuse any wallet and Vette
rebuilds its money-trail from Base, hop by hop:
THE MONEY CAME HOME/THE MONEY LEFT/TRAIL TOO SHALLOW— receipts, not opinions. - THE FIELD 🌐 — every contest entry under one rubric, re-vetted by the daily sweep.
- KILL ⚡ — connect your wallet, and every dangerous approval becomes a
one-click revoke:
approve(spender, 0)signed in your own wallet, confirmed live on Base, with the tx hash on screen. Vette doesn't just warn — it acts.
/field pulls the hackathon's public API (each entry's registered wallet,
builder's own words, website, socials) and lets anyone vet the whole field with
one click. Vette's first live catch: a top entry whose published "wallet" is
actually a token contract, flagged automatically.
Input (URL / wallet / mandate)
│
▼
DETERMINISTIC ENGINE (always first)
├─ website fetch → liveness, socials, published addresses, claimed mandate
├─ Base RPC + Blockscout → balances, decoded txs, token transfers,
│ owner-scoped Approval events, live allowances, contract reputations
└─ rule engine → mandate-vs-behavior deviation + wallet-safety heuristics
│
▼
VERDICT — score /100 + plain-English narrative. Every sentence cites a check.
│
▼
PUBLIC RECEIPT — every check, its real input and output. Nothing invented.
Golden rules:
- A finding without a real tx/address/URL behind it is not a Vette finding.
- "Unverifiable" is a valid verdict — Vette never fabricates evidence.
- An empty ledger is UNPROVEN, not compliant.
- A website linking to demo wallets is not declaring those wallets as its own.
- Pure EIP-1193: no keys, no custody — the user signs in their own wallet.
- One transaction type ever:
approve(spender, 0).valueis always 0. - Preflight
eth_callsimulation before any signature — you never sign a failing tx. - Only the owner can revoke; auditing someone else's wallet shows why.
- Multi-wallet safe: EIP-6963 discovery with a picker (no more popup wars).
npm install
npm run dev # http://localhost:3000- Landing:
/· Audit console:/audit· The Field:/field· The receipt is embedded in every report (canonical) · Activity:/activity POST /api/auditwith{ url?, address?, claims? }— full auditGET /api/agents/<addr>— quick onchain auditGET /api/field— live hackathon entries from the Orion APInpm run demo:find— mine Base for wallets with live dangerous approvals
Next.js 15 (App Router) · Tailwind · Base public RPC (fallback chain) · Blockscout v2 API · deterministic rule engine · template-first narration. No API keys required.
Optional model narration: set ANTHROPIC_API_KEY and the engine lets a model
write the narrative words — never the numbers, levels, or verdicts (those are
the deterministic engine's). Without the key, narration is a deterministic
template; the report says which one wrote it. Same pattern as the contest
leaders: the keyless risk engine always runs.
- Registered wallet
- Website + demo (this app)
- GitHub repo — github.com/hackid02/vette
- Autonomous run-log (writes data/agent-log.json here via the GitHub API)
- X profile — x.com/vette_nu
- Discord link
- Ignition fee at submission (~$10 ETH)
- Submit before Sept 2, 23:59 UTC
MIT