I build identity and payment infrastructure for the agentic web — and the accountability tooling that lets a human check what an agent actually did — end-to-end and solo, under UIG Studios LLC. (Solo is the polite word for "nobody else to blame.") Shipped deepest on Sui, taking the same settlement-semantics work cross-rail to Solana / SVM and EVM.
The throughline: x402 proves an agent paid · my settlement-receipt binding proves the payment maps to the action · PoR proves the actor is a real, human-backed entity. Together that's a verified agent — and I've shipped a working piece of every layer. Not a deck. Code, on chains, with transaction hashes.
Right now: my review text is in a published IETF Internet-Draft — draft-morrison-consent-settlement-04 (12 Aug 2026) adopted my §8.1 composition clause and §10.5 audit-evasion text verbatim, after a thread (x402#2734) in which the author took every correction, including three overclaims I caught — a rarer sport on the internet than it should be; he has confirmed a Contributor credit for the next revision. In the x402 repo, the maintainer of the new Sui exact scheme took my isExecuted replay-guard fix as written and built its regression test from my example (e74e16df). My x402 Settlement-Receipt Binding extension (#2666) is now being worked by two outside implementers — 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 found a defect in my §3.5 that I fixed in §4 — on top of its conformance gate reproduced green by independent issuers across two rails. Meanwhile the same settlement-semantics work is going cross-rail to Solana / SVM, running end-to-end in an x402 charging agent (an EV that pays for its own charge — mainnet on Sui, settling on Solana devnet).
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 & Move package · SDK on npm →
por-sdk(Apache-2.0) - Device-attested real-world action — App Attest proven on a real iPhone: a walk mints an on-chain Verified Real credential, end-to-end, with a device nullifier that dedupes one credential per device — built and proven; enforcement still gated off during rollout
- personhood-tier — a runnable "third assurance tier" for device-attestation systems, written for Nodle's trust relay: device attestation proves genuine hardware, a personhood credential caps accounts-per-human — SIWE + attestation + a live PoR credential read composed into one challenge-bound session claim
- por-proof-of-real.netlify.app · mainnet contracts, testnet attestor — personhood, not "sybil-proof"
- x402-sui-stack — the x402 builder stack for Sui (Sui Overflow 2026): the facilitator + tooling + a one-command demo that settles a real $0.01 USDC payment on mainnet and lets anyone recompute it in-browser → live · code
- x402 facilitator that settles on Sui — non-custodial, zero-fee, live on mainnet → sui-x402-facilitator · live facilitator
- First x402 payment on Litecoin — deployed the canonical x402 Permit2 proxies to LitVM (Litecoin's EVM L2, LiteForge testnet) and settled the first payment through them — provable on-chain: the proxy's tx history begins with it → litvm-x402 · testnet; day-one facilitator support planned for their mainnet
- Authoring a proposed x402 standard extension — Settlement-Receipt Binding: bind an on-chain settlement to a signed execution receipt, recomputable from published bytes with an independent verifier — its conformance gate reproduced green by two independent issuers across two rails, plus a live gasless-Sui settlement vector → x402-foundation/x402#2666
- Taking the standard cross-rail — a conformance demo for Solana's
uptoscheme proving settlement-receipt binding on SVM, plus shaping theverify()-soundness invariant on Hedera (#2701) and Solana's allowance-draw design (#2699); one binding, multiple rails (EVM · SVM · Sui) - x402-pilot — an open-source, non-custodial x402 dev tool + conformance MCP (Apache-2.0)
- Agent-native payments on Nodle — brought the x402
exactscheme to NODL on zkSync Era. NODL is a plain ERC-20 (no EIP-3009), so payments settle through Permit2 with a non-custodial/verify+/settlefacilitator; deployed the proxy and settled real payments end-to-end on zkSync Sepolia, HTTP loop included. Pairs with a Nodle Agent Kit — an MCP server + skill giving an agent content-provenance and PoR-personhood tools (partner-gated path to commission real-world work from Nodle's device network) → testnet-proven; repos private during partnership review
An EV that pays for its own charge, no human in the loop — the whole stack composed in one artifact:
- x402
uptometered billing + my Settlement-Receipt Binding (#2666) over a real-world action — authorize a ceiling, meter the kWh, settle the actual, emit a receipt an independent checker verifies - PoR-gated — only a verified human's agent may charge (the personhood layer, live)
- mainnet-proven on Sui, also settling on Solana devnet; bridged to real charging networks via OCPI (DeCharge / Starpower-ready)
- x402-charging-agent · vehicle + charging network mocked behind their real interfaces
Three small, composable specs with verifiers, plus the desktop agent that ships all of them. 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.)
- rv — Reversible Actions — undo for shell-command file effects: git-tree snapshots + an append-only journal + per-path undo, hooked on every command an agent runs. For the commands it swore were safe. Closes the gap Claude Code's own checkpointing docs admit (bash-driven changes aren't tracked). MIT
- ev — Evidence Tiers — every claim an agent makes labelled by how it knows: ran / read / told / recalled / inferred, as an in-toto Statement predicate with an offline verifier that resolves "ran" claims against the rv journal. MIT
- xv — Verified Examples — in-toto execution attestations for documentation examples, so an agent can check an example instead of recalling it: VERIFIED / MODIFIED / STALE / FAILED per example, an
llms.txtstanza, and a CI gate (rv is the first consumer, green). MIT - UIG Studios AI — a local-first desktop agent you can check up on (trust, but
rv undo): Tauri 2 + React + Rust + Ollama (cloud/custom endpoints optional), macOS signed + notarized with an in-app updater, v1.4.1. Ships rv undo, ev evidence tiers, xv verified examples, OKF portable memory, and safety gates that don't depend on the model. Apache-2.0
- FairLine — a risk-managed, multi-user liquidity vault on DeepBook Predict ("be the house, verifiably"): senior/junior tranches, capacity cap, on-chain reserve floor + emergency pause, redemption-anchored NAV · testnet, unaudited
- Gulp City — an installable 3D PWA arcade game, because apparently I also needed a hobby
- Jamie Buddy — a local-LLM writing assistant
- Yomp — the consumer front door for PoR: walk to prove you're real (Sui testnet). The walk is what mints the credential's real-world-action tier.
10 pull requests merged into repos I don't own, across 5 organisations — someone else's maintainer decided each one was worth carrying, which is the only review that counts:
- openmed (medical NLP, 5 merged) — release provenance, end to end — shipped as the headline review-first workflows feature of OpenMed 2.1.0 (12 Aug 2026), whose release announcement thanks me by name. A release run-ledger binding every build artifact to the gate decision that cleared it: each row hashes the artifact digest together with the verified
GateReport, and recomputes that report's hash rather than trusting the stored one, so evidence edited under a stale hash fails the ledger instead of publishing → #1899. Then the rollback decision that consumes it — a pure function mapping a gate diff to a rollback target, side-effect-free and reproducible from committed state with no live API call, reusing the release gate's own tolerance and label scope so the gate and the rollback can never disagree about the same candidate → #2109, which the maintainer rebased onto master himself and landed with my commit preserved in #2219. Before those, release signing: the publish workflow attaches its SLSA provenance bundle and artifact digests to the tagged release and keylessly signs every wheel and sdist with Sigstore, so a release verifies offline with no round trip to GitHub's attestation API — structured so evidence generation can never gate the PyPI upload, but evidence that is produced must verify against the exact workflow identity and release commit or the job fails → #1604. Plus an interactive synthetic-data Gradio de-identification demo and a memory-mapping toggle for the MLX weight-loading path, both with import-safe test coverage → #1023 · #1024 - Tessera — a
recovery_hint()API across the error types of a local-first AI testing IDE (Rust) → #103 - x402 — a cross-SDK
exacterror-code parity fix (the TS SDK was the lone outlier vs Go / Python) → #2744 · the project moved under the Linux Foundation in July 2026, so this now sits in the standard's own repo - huggingface.js — two correctness fixes where the existing tests looked like they covered the contract. The public
language()lookup usedcode in TABLE, andinwalks the prototype chain, solanguage("toString")returnedObject.prototype.toString— a function — out of a signature typedLanguage | null; the invalid-code test passed only because its input wasn't onObject.prototype→ #2320. And in@huggingface/hub, a completed SHA-256 hash left its abort listener attached, so a later abort of that signal terminated a worker already returned to the pool and rejected an already-returned generator. Fixed in one place —cleanup()now drops the listener on every exit path — with a deterministic worker stand-in to reproduce it → #2325 - Nodle rollup — migrated the L1 bridge's deposit & quote paths off the deprecated ZKsync Mailbox to Bridgehub (Solidity). My commits landed with authorship preserved in #122 after the maintainer validated the work against a fork of live-mainnet state and hardened it; the sequencing issue it raised shipped alongside as a withdrawal-replay guard. Originally submitted as #121, closed in favour of the hardened branch · earlier, docs for manual vested-grant claims → #120
In progress for openmed: the model-registry SemVer + pointer store (#1804 → PR #2556) — a P0 where I stopped before committing a state schema to flag that the issue's key model didn't match the shipped manifest; the maintainer agreed and the corrected model is what the PR builds — and a catalog-coherence CI gate (#2268); both open, CI green.
Contributing upstream to Mysten's Sui stack — filed a cached-price payment race in @mysten/walrus that was taking out mainnet writes (ts-sdks#1127), reviewed the maintainer's fix (#1128), and reviewed the MemWal relayer's recovery for the same class of bug. Reported that setSender() was a silent no-op behind Seal's owned-object access pattern, with a two-SDK-version repro (seal#507) — the SDK behaviour it described was fixed in ts-sdks#1136 and shipped in 2.20.3.
Available for contract, consulting, grants & engineering roles — identity, x402 / agentic payments, and agent accountability tooling, across Sui, Solana/SVM and EVM. Deepest on Sui, actively building cross-rail.
📫 tjagodka@gmail.com · 𝕏 @DrVelvetFog · 🌐 portfolio · 💼 Algora · 🏢 UIG Studios
Lines I don't cross: no custody · no token-for-money sales · no PII capture · honest labeling (testnet/unaudited stated plainly). The fourth wall, on the other hand, is fair game.

