A Sui-native proof-of-personhood credential: prove you’re a real, unique human — passkey + zkLogin onboarding, no personal data captured — and raise your assurance through verifiable real-world actions. Yes, the robots have to go outside.
- Live credential, attestor and Move package on Sui mainnet; SDK on npm as
por-sdk (Apache-2.0) — apps add a human-check in one call
- Device-attested real-world action: App Attest proven on a real iPhone — a walk mints an on-chain Verified Real credential, one per device (built and proven; enforcement gated off during rollout)
- personhood-tier: a runnable “third assurance tier” for device-attestation systems, written for Nodle’s trust relay — SIWE + attestation + a live PoR read in one session claim
- The personhood gate in the x402 charging agent and the Verified Agent demo — paying agents settle, verified humans read free
- Consumer front door: Yomp (walk to prove you’re real, Sui testnet)
Sui · mainnet · livePersonhood, not “sybil-proof”por-proof-of-real.netlify.app →
A proposed extension to the x402 standard (Linux Foundation): bind an on-chain settlement to a signed execution receipt, recomputable from published bytes with an independent verifier. Its conformance gate has been reproduced green by independent issuers on two rails; a production EVM team posted per-leg records for a real Polygon JPYC settlement against it, and the author of the receipt-envelope I-D it binds to caught a §3.5 defect that I fixed in §4.
Spec · EVM · SVM · SuiPR #2666 · openx402-foundation/x402 →
My review text landed verbatim in draft-morrison-consent-settlement-05 (§8.1, §10.5), with a named Contributor credit, after a thread where the author took every correction, including three overclaims I caught. A rarer sport than it should be.
Standards · Aug 2026x402#2734 →
An independent x402 facilitator on Sui: non-custodial verify/settle for the exact scheme, zero fee, optional gasless via Enoki. It relays the payer’s own signed transaction and never holds funds. Listed in the x402 standard’s official facilitators directory.
Sui · mainnet · livelive facilitator →
The flagship: signed, recomputable evidence that the code which shipped is the code a human approved — SLSA’s L4 asks that the final revision be approved, and its own tooling checks that by reading branch-protection settings — which establishes the gate is configured, not what went through it. This is the other half, raised with them directly. One line of CI; a stranger with git can replay every verdict offline. Built around one question: can a human check what the agent did without trusting the agent’s own account of it? (The agent’s account is always very confident. That’s the problem.)
- Validated against 810 production merges with zero false positives; predicate submitted as in-toto/attestation#581; on the GitHub Marketplace with a fortnightly release train — sponsorable
- rv — Reversible Actions: undo for shell-command file effects, journaled on every command an agent runs. For the ones it swore were safe.
- ev — Evidence Tiers: every claim labelled ran / read / told / recalled / inferred, as an in-toto predicate with an offline verifier.
- xv — Verified Examples: execution attestations for doc examples so an agent can check instead of recall; CI gate.
- Desktop agent v1.4.1: local-first (Tauri 2 + Rust + Ollama), macOS signed + notarized, in-app updater. Trust, but
rv undo.
Marketplace · fortnightly releases · Apache-2.0 / MITgithub.com/DrVelvetFog →
A standard is only as good as the second person who implements it from the text alone. I took that seat on someone else’s in-toto predicate — Adversarial Execution Evidence — and built an independent validator from the specification, Python standard library only, agent-written and declared as such.
- The first run was committed raw, before any fix — spec pinned by digest, corpus verified, then 236 of 272 vectors with every failure published, then the resolution log. Finished at 272/272, and 61/61 on the result recompute, which never disagreed at any run.
- Found a gap in the specification the author accepted: the text pins canonical bytes but never the base64 carrying them, so two distinct payloads decode identically. He is landing it as a MUST.
- All fifteen divergences were mine, not the text’s. When a reviewer showed my evidence-ordering claim rested on my own clock, I withdrew it on the thread rather than qualifying it — and withdrew a second claim about the specification being determinate on the same grounds.
- Argued that a tooling declaration should name agent assistance, because two agent-built implementations agreeing share a prior instead of proving a text is clear. It is going into the tiering proposal, ITE#63.
- Landed a crosswalk into the author’s vocabulary registry (merged), at his go-ahead: 63 refusal codes each side, zero shared spellings, anchored to the suite’s own condition identifiers so neither vocabulary is renamed toward the other.
in-toto/attestation#570 · stdlib-only · 329 testsgithub.com/DrVelvetFog/aee-e2 →
23merged PRs · 9 orgs
Into repos I don’t own — someone else’s maintainer decided each was worth carrying, which is the only review that counts.
- OpenMed — release signing, run-ledger, rollback, registry, preflight, memory planner, demos10
- huggingface.js — two correctness fixes2
- sigstore-python — statement-parse fix1
- syft — SBOM decoder crash + round-trip fixes (Anchore)2
- zebra — getdata cap + bounded allocation (Zcash Foundation)2
- x402 — cross-SDK error parity + Sui network registries2
- Nodle rollup — bridge migration docs (+ Bridgehub commits landed in #122)1
- Tessera — recovery-hint API (Rust)1
- agent-evidence-vocabulary — aee-e2 crosswalk + recomputed result2
Plus Mysten Sui-stack issues fixed upstream
Not my code — other people’s, already released and depended on. Rank a language’s most-depended-on parser and network packages, drop everything already in OSS-Fuzz (246 of 349 popular Rust crates, and 34 of 42 supply-chain security tools, had no fuzz target), fuzz the published version, then keep only the crashes that violate something the project actually promises. A panic from misusing an API isn’t a bug.
- CPython —
http.client hangs forever on a bodiless status with chunked framing. Approved, awaiting a core dev.
- syft and grype — a spec-valid SPDX 2.3 file crashed Anchore’s SBOM tool and its vulnerability scanner, and syft wrote SPDX it couldn’t read back. Both fixed and merged.
- apko — Chainguard’s image builder had no fuzz targets. The first one found, in 65 seconds, a package name that changes when an index is written and read back.
- NLnet Labs’ DNS crate — four bugs in the zone-file scanner, including a soundness hole that let a safe API return invalid UTF-8. All fixed in 0.12.3; RUSTSEC-2026-0310 credits me by name.
- pydicom — a truncated medical scan raised a bare
StopIteration, which inside map() silently drops the bad file and every good one after it.
- attohttpc — HEAD, 204 and 304 responses hung until timeout. 3.0s → 2ms.
- One bug, four languages — the CPython, attohttpc and actix findings are the same defect: bodiless HTTP statuses whose framing headers are still honored. Found by sweeping eleven clients against one raw-socket server. Five were correct; three were not.
Python · Rust · Go · fuzzing · responsible disclosurethe ledger →
An EV that pays for its own charge: authorize a ceiling, meter the kWh (x402 upto), settle the actual, emit a receipt an independent checker verifies — over the network’s own OCPI record. PoR-gated.
Sui mainnet · Solana devnetrepo →
Open-source Claude Code plugin for the x402 standard: bundled spec corpus, authoring/review workflows, and a non-custodial conformance MCP that recomputes a settlement against the on-chain balance change.
Dev tooling · Apache-2.0repo →
The x402 builder stack for Sui — facilitator + tooling + a one-command demo that settles a real $0.01 USDC payment on mainnet and lets anyone recompute it in-browser. Sui Overflow 2026 entry.
Sui · mainnetlive →
The thesis in one artifact: who the agent is (PoR), what it paid for (x402 receipts), what it remembers (Walrus, ownership enforced on Sui) — all checkable on-chain, local LLM brain.
Sui · demorepo →
The verification discipline pointed at civic rules: a metal-detecting law reference — five states, 288 locations, every verdict quoted from the ordinance or park policy it comes from, with a last-verified date and the office phone number. Growing organic search traffic, affiliate-monetized.
Live · 5 stateslive →
The plum at the top of this page, as a product: a fully local voice assistant on a drawer iPhone that runs the Mac — local brain, eyes and voice, code-enforced guardrails, an evidence-tiered action journal, an on-chain passport. MIT.
Local-first · open sourcemeet her →
Also shipped
- Gulp City — installable 3D PWA arcade game. Apparently I also needed a hobby.
- Jamie Buddy — a local-LLM writing assistant.
- Postdate — sealed letters to your future self. Native iOS (SwiftUI, StoreKit 2, zero third-party code); built, release on hold.
- Agent-native payments on Nodle — x402
exact over NODL on zkSync via Permit2, real testnet settlements end to end; paired with an MCP kit for provenance + personhood. Repos private during partnership review.
- FairLine — tranched liquidity vault on DeepBook Predict. Testnet, unaudited, wound down; kept as a reference.
- Yomp — walk-to-prove-you’re-real, the consumer front door for PoR (Sui testnet).
Honest labels: testnet / unaudited / in review stated plainly
Work with me
Contract, grants, or a full-time AI-engineering role.
Identity, agentic payments, accountability tooling. Deepest on Sui; actively cross-rail.
tjagodka@gmail.com