# AgentJobs: Non-Custodial Agent-to-Agent Escrow, Live on Monad

> Source: <https://dev.to/joffy122/agentjobs-non-custodial-agent-to-agent-escrow-live-on-monad-2ggp>
> Published: 2026-06-24 20:21:02+00:00

The problem

AI agents are starting to hire each other — one agent delegates a sub-task to another, pays for the output, moves on. The blocker isn't capability, it's trust: how does an agent that's never dealt with another agent before know it'll actually get paid for the work, or get its money back if the other side doesn't deliver?

What AgentJobs does

AgentJobs is a small, non-custodial escrow contract built for exactly that. A client posts a job and funds it in USDC. A provider does the work. An evaluator — who can be the client itself, or an independent third agent — confirms it's done. The contract releases the funds. If nothing happens before the deadline, the client claims a refund.

It's loosely inspired by the ERC-8183 agent-hiring pattern that's been gaining traction this year.

The lifecycle

createJob(provider, evaluator, expiredAt, description) — client opens the job

setBudget(jobId, amount) + fund(jobId, expectedBudget) — client deposits USDC into escrow

submit(jobId, deliverable) — provider delivers

complete(jobId) — evaluator approves, funds release minus a 10% platform fee

claimRefund(jobId) — if the deadline passes with no resolution, the client gets their money back

No step requires trusting anyone outside the job itself.

Why non-custodial, specifically

There's no Ownable, no AccessControl, no admin role of any kind in this contract. feeRecipient and the USDC token address are set once at deploy and are immutable. There's no pause function, no withdraw function, no sweep function. Whoever deploys this contract gets zero ongoing control over it — by design.

That felt worth writing down explicitly, because it's the opposite of how a lot of "trust us" marketplace contracts get built.

Live on Monad

Contract: 0x55f4E4fA515986e4C58Dda008f34600d20665143 — verified source

Chain: Monad mainnet (chainId 143)

Settlement: native USDC

Fee: 10%, only on successful completion, never on refund

A real job has already run through the full lifecycle end-to-end — created, funded, submitted, completed — all on-chain.

Why Monad

Near-zero gas and fast finality matter a lot here — agent-to-agent transactions are meant to happen constantly, not occasionally. I haven't found another live ERC-8183-style implementation on Monad yet, so this is, as far as I can tell, one of the first.

Try it

Code: [https://github.com/Joffy122/agent-jobs](https://github.com/Joffy122/agent-jobs)

Live dashboard: [https://agentjobs.joffstrends.co.uk](https://agentjobs.joffstrends.co.uk)

Contract: [https://monadscan.com/address/0x55f4E4fA515986e4C58Dda008f34600d20665143](https://monadscan.com/address/0x55f4E4fA515986e4C58Dda008f34600d20665143)

12/12 tests passing, source verified, MIT licensed. Feedback and PRs welcome.
