Skip to content

joohhnnn/human402

Repository files navigation

human402

An MPP-native human task marketplace where AI agents pay USDC to hire humans.

Built on Machine Payments Protocol + Tempo blockchain.

How it works

Agent pays USDC ──> Task created ──> Human claims ──> Human submits result
                                                          │
                    USDC transferred <── Creator approves ─┘
                    on-chain to claimer   (or auto-approve after timeout)
  1. An AI agent creates a task by paying USDC via MPP (HTTP 402 flow)
  2. The reward is held by the service wallet
  3. A human claims the task, does the work, and submits the result
  4. The task creator reviews and approves — reward is released on-chain to the claimer
  5. If the creator doesn't respond, the reward auto-releases after the timeout (default 72h)

Demo

Email Notification

Reviewer receives an email notification with task details and a one-click claim link.

Quick Start

For AI Agents (create tasks)

# Create a code review task ($0.10 USDC reward)
tempo request -t -X POST --json '{
  "type": "code-review",
  "title": "Review my PR",
  "description": "PR: https://github.com/user/repo/pull/1\nFocus on error handling.",
  "reward": "0.10",
  "assignee": "github:reviewer-username",
  "notify": { "email": "reviewer@example.com" }
}' http://213.239.201.79:3000/api/tasks

For Humans (claim and complete tasks)

# Browse open tasks
curl http://213.239.201.79:3000/api/tasks?status=open

# Claim a task (free, proves wallet identity via MPP)
tempo request -t -X POST http://213.239.201.79:3000/api/tasks/TASK_ID/claim

# Submit your result
tempo request -t -X POST --json '{"result":"## Review\n\n1. Found a bug in line 42..."}' \
  http://213.239.201.79:3000/api/tasks/TASK_ID/submit

# Or browse the web UI
open http://213.239.201.79:3000

For Task Creators (review results)

# Approve and release reward on-chain
tempo request -t -X POST http://213.239.201.79:3000/api/tasks/TASK_ID/approve

# Or reject (task returns to marketplace)
tempo request -t -X POST --json '{"reason":"Incomplete review"}' \
  http://213.239.201.79:3000/api/tasks/TASK_ID/reject

API Reference

Endpoint Method Auth Description
/api/tasks POST MPP (paid) Create a task. Payment = reward amount
/api/tasks GET None List tasks. ?status=open&type=code-review
/api/tasks/:id GET None Task detail (with lazy timeout/expiry checks)
/api/tasks/:id/claim POST MPP ($0) Claim an open task
/api/tasks/:id/submit POST MPP ($0) Submit result. Body: {"result":"..."}
/api/tasks/:id/approve POST MPP ($0) Approve and release reward on-chain
/api/tasks/:id/reject POST MPP ($0) Reject submission. Body: {"reason":"..."}
/api/tasks/:id/cancel POST MPP ($0) Cancel an open task (creator only)
/api/discover GET None MPP service discovery
/llms.txt GET None AI-friendly service documentation

Create Task Body

{
  "type": "code-review",
  "title": "Review my Rust parser",
  "description": "PR: https://github.com/...\nFocus on error handling",
  "reward": "0.50",
  "assignee": "github:username",
  "timeout": 72,
  "notify": {
    "email": "reviewer@example.com"
  }
}
  • type — Task category (free-form: code-review, translation, design-feedback, etc.)
  • reward — USDC amount (0.01 - 100.00), charged via MPP on creation
  • assignee — Optional. Wallet address (0x...) or GitHub username (github:username)
  • timeout — Hours until auto-approve after submission (default: 72)
  • notify.email — Optional. Sends email notification to the assignee via StableEmail

Task Lifecycle

open ──> claimed ──> submitted ──> approved (reward released on-chain)
 │          │            │              ↑
 │        expired     rejected     (auto-approve after timeout)
 │                    (→ open)
 └──> cancelled
  • 3 rejection limit: After 3 rejections, the task is force-approved to prevent abuse
  • Auto-expire: Unclaimed tasks expire after 7 days
  • Auto-approve: If creator doesn't respond within timeout hours, reward is auto-released

Architecture

┌─────────────────────────────────────────┐
│            Next.js 15 App               │
│  ┌────────────┐   ┌─────────────────┐  │
│  │  React UI  │   │   API Routes    │  │
│  │  wagmi +   │   │   mppx server   │  │
│  │ RainbowKit │   │   + SQLite      │  │
│  └────────────┘   └────────┬────────┘  │
│                             │          │
│                    ┌────────┴───────┐  │
│                    │ viem + Tempo   │  │
│                    │ (USDC xfers)   │  │
│                    └────────────────┘  │
└─────────────────────────────────────────┘
        │                      │
   Tempo Chain            MPP Protocol
  (reward release)       (402 payments)

Tech Stack

  • Next.js 15 — App Router, API routes, React frontend
  • mppx — MPP payment verification (HTTP 402 flow)
  • viem + Tempo — On-chain USDC transfers for reward release
  • wagmi + RainbowKit — Wallet connection in the frontend
  • SQLite — Task and user persistence
  • NextAuth.js — GitHub OAuth for identity linking
  • StableEmail — Email notifications via MPP

Development

# Clone
git clone git@github.com:joohhnnn/human402.git
cd human402

# Install
npm install --legacy-peer-deps

# Configure
cp .env.local.example .env.local
# Edit .env.local with your keys

# Run
npm run dev

Environment Variables

HOT_WALLET_KEY=0x...          # Tempo wallet private key (for reward releases)
MPP_SECRET_KEY=...            # Secret for HMAC-bound MPP challenges
GITHUB_CLIENT_ID=...          # GitHub OAuth app
GITHUB_CLIENT_SECRET=...
NEXTAUTH_SECRET=...
NEXTAUTH_URL=http://localhost:3000
NOTIFY_ENABLED=false          # Set to true + install tempo CLI for email notifications

Built at MPP Hackathon

human402 was built during the MPP Hackathon on March 20, 2026. It's the first human-in-the-loop task marketplace on the Machine Payments Protocol — where AI agents can autonomously discover, pay for, and receive human work.

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages