A marketplace where people earn by uploading POV videos of everyday actions. Companies building humanoid robots burn tokens to access the training data.
Watch the demo: https://www.youtube.com/watch?v=P6HMA731CYQ
Humanoid robots need data. Boston Dynamics, Tesla Optimus, Figure — they all need billions of examples of humans doing mundane things (capping a bottle, using a mouse, opening a door) to train policies that generalize. Most teams collect this in-house with motion capture rigs and hired operators. That scales badly and biases toward lab environments.
There is no open market for this data.
Each action type (e.g. cap_bottle, use_mouse) gets its own ERC-20 token and its own Uniswap V2 pool.
- Company creates a pool. A robotics company calls
requestNewActionType("cap_bottle", 200 USDC). The contract deploys a newActionToken, seeds the pool with 100 tokens + 200 USDC (initial price: $2/token), and stores the company as the sole authorized buyer. - User submits a video. They stake 10 USDC, upload the video to Walrus, and submit the blob ID on-chain. A Llama 3.2 11B Vision model (via OpenRouter) classifies the clip against the registered action types client-side before submission.
- Approval, then mint. Admin approves within 24h, or the submitter calls
claimApprovalafter the window closes. Approval mints 1 token to the submitter and returns their stake. Denial forfeits the stake to the protocol. - Market sets the price. Uploaders can sell their token into the Uniswap pool. More uploads → more supply → price drops. This is the signal companies use to figure out what data is scarce.
- Company buys access by burning. The company calls
purchaseVideoAccess(actionType, usdcAmount). 90% swaps USDC for tokens, which are then burned (access granted); 10% stays with the protocol. Burning reduces supply, which pushes price back up.
The token price on each pool is a live measure of how scarce that kind of training data is.
Browser (Vite + React)
│
┌────────────────────────┼────────────────────────┐
│ │ │
v v v
Walrus testnet OpenRouter HumanOS.sol
(video blobs) (Llama 3.2 Vision (Hedera + Zircuit
action classifier) testnets)
│
┌───────────────┼───────────────┐
v v v
ActionToken Uniswap V2 USDC stakes
(per action) Factory+Router + protocol fees
contracts/HumanOS.sol— pool creation, submissions, approvals, company burns. Uses OpenZeppelinOwnable,Pausable,ReentrancyGuard(onclaimApproval).contracts/ActionToken.sol— ERC-20 per action type. Charges a 0.3% transfer fee to the HumanOS contract on user-to-user transfers. Owner-only mint/burn.contracts/uniswap_contracts/— Uniswap V2 factory, router, pair (Solidity 0.5.16) vendored so the whole stack deploys to any EVM testnet.
Key constants: 10 USDC submitter stake, 100 USDC minimum pool funding, 100 initial tokens per pool, 24h challenge window, 10% protocol fee on purchases.
| Network | HumanOS | MockUSDC |
|---|---|---|
| Hedera testnet (chainId 296) | 0x3F52Ee36A65E40698AF90f6fa109EB8B0bCF0C07 |
0xeeBca345101Ef6114aD8Bf18705649c3994fE146 |
| Zircuit testnet (chainId 48898) | 0x6BFEC11EB06F726508319b5c72217B78C98558E6 |
0x1000e67686A5E9180919dC9E8a24D5c0aea18a88 |
Full deployment map in frontend/src/contracts/deployments.json.
| Layer | Technology |
|---|---|
| Contracts | Solidity 0.8.28 (HumanOS + ActionToken), 0.5.16 (vendored Uniswap V2), Hardhat, OpenZeppelin 5 |
| AMM | Uniswap V2 factory/router/pair deployed per network |
| Video storage | Walrus testnet (publisher.walrus-testnet.walrus.space) |
| Action classification | OpenRouter → Llama 3.2 11B Vision, runs in-browser on extracted frames |
| Frontend | React 19 + Vite, wagmi + viem, Tailwind, shadcn/ui |
| Networks | Hedera testnet, Zircuit testnet, local Hardhat |
git clone https://github.com/zalatar242/HumanOS.git
cd HumanOS
npm install
npm run compile
npm test
# Local deploy + seed (2 action types, Walrus upload, 1 approved submission)
npm run node # separate terminal
npm run deploy:local
npm run seed:local
# Testnets
npm run deploy:hedera-testnet
npm run deploy:zircuit-testnetThe frontend lives in frontend/ — cd frontend && npm install && npm run dev. You'll need VITE_OPENROUTER_API_KEY set for the classifier.
Demo media (6 clips used by the seed script and gallery) is in media/.
Deployments were fast and reliable. Contract verification on the testnet explorer was the rough edge — the flow was slow and not obvious. Everything else was the same as deploying to any EVM chain.
Built by Sree Sanakkayala. UCL CS background (BSc + MSc), privacy tech research (TEEs, ZK, blockchain) at UCL's DeFi lab, now collaborating with UCL's robotics lab. Previously founded a tokenization infrastructure company that did ~$30M in volume before exiting in December 2024.
MIT.