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
Live dashboard: https://agentjobs.joffstrends.co.uk
Contract: https://monadscan.com/address/0x55f4E4fA515986e4C58Dda008f34600d20665143
12/12 tests passing, source verified, MIT licensed. Feedback and PRs welcome.
Top comments (0)