Skip to content

sree-sanak/HumanOS

Repository files navigation

HumanOS 🤖

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

The problem

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.

How it works

Each action type (e.g. cap_bottle, use_mouse) gets its own ERC-20 token and its own Uniswap V2 pool.

  1. Company creates a pool. A robotics company calls requestNewActionType("cap_bottle", 200 USDC). The contract deploys a new ActionToken, seeds the pool with 100 tokens + 200 USDC (initial price: $2/token), and stores the company as the sole authorized buyer.
  2. 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.
  3. Approval, then mint. Admin approves within 24h, or the submitter calls claimApproval after the window closes. Approval mints 1 token to the submitter and returns their stake. Denial forfeits the stake to the protocol.
  4. 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.
  5. 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.

Architecture

                         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

  • contracts/HumanOS.sol — pool creation, submissions, approvals, company burns. Uses OpenZeppelin Ownable, Pausable, ReentrancyGuard (on claimApproval).
  • 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.

Deployed

Network HumanOS MockUSDC
Hedera testnet (chainId 296) 0x3F52Ee36A65E40698AF90f6fa109EB8B0bCF0C07 0xeeBca345101Ef6114aD8Bf18705649c3994fE146
Zircuit testnet (chainId 48898) 0x6BFEC11EB06F726508319b5c72217B78C98558E6 0x1000e67686A5E9180919dC9E8a24D5c0aea18a88

Full deployment map in frontend/src/contracts/deployments.json.

Tech stack

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

Running locally

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-testnet

The 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/.

Building on Zircuit

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.

About

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.

License

MIT.

About

Marketplace where humans earn by contributing POV training data for humanoid robotics.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors