Permanent, programmable identities on Ethereum — identity, intent, payments, attestation, and firmware, behind a single API key.
§ 01Why it exists
Serial numbers live in a manufacturer’s private database. The moment a robot is resold, re-deployed, or audited, that identity is unverifiable to anyone else. Robot ID makes it public infrastructure — neutral, permanent, provable by anyone.
Credential · sn-a1b2c3.robot-id.eth

Issue a verifiable identity, capability record, and firmware policy per unit. One integration covers your entire catalog and every robot you've ever made.
On-chain spend limits and an immutable intent log mean a robot can act autonomously without ever exceeding the mandate you set.
Check a robot's certified payload, operating zone, or human-interaction rating against an on-chain Merkle root — independently of the manufacturer.
§ 02The protocol
Narrow by design. No battery passports, charging registries, or carbon credits — just what a robot needs to be a first-class, verifiable on-chain citizen.
A permanent, programmable NFT identity per unit, with optional soulbound lock. The serial is stored as a privacy-preserving keccak256 hash, yet stays independently verifiable — and each unit resolves to <serial>.<oem>.robot-id.eth, always pointing at its current owner.
On-chain authorization and an immutable audit log for every AI-agent or voice command. The ROS2 adapter maps natural-language intents to action goals, checks them against the robot's spend rules, and records each as executed or rejected — with the reason.
A smart-account wallet per robot. The owner sets rules once — per-action ceiling, daily cap, vendor allowlist, hard per-tx maximum — and the contract enforces them forever. A robot can pay a charging dock autonomously, but never exceed its mandate.
Append-only records of what a robot is authorized to do: max_payload_kg, operating_zone, max_speed_mps, human_interaction_certified. Full certificates live on IPFS, anchored on-chain by a Merkle root.
Before a robot accepts an update, its controller verifies the firmware signature against the manufacturer's registered key and cross-checks the version against the unit's on-chain firmwareVersion to reject downgrades and replay attacks.
Connect a wallet, reserve your namespace, call subscribe(tier). The on-chain event issues your API key.
Submit serials off-chain; the API builds a Merkle tree and you commit one root via submitRoot.
Each robot calls claimWithProof(…) to mint its NFT — soulbound or transferable, your choice.
Sign capability attestations, register your firmware-signing key, set each wallet's spend rules once.
Names resolve to the current owner via CCIP-Read. Robots route intents and payments under your limits.
§ 03Live audit log
Every command is classified, checked against the robot’s wallet limits, routed to a ROS2 action goal, and recorded as an immutable audit entry — executed or rejected, with the reason.
§ 04Developers
REST, GraphQL, and WebSocket, an OpenAPI spec with Swagger UI, and typed SDKs. Reads go straight to chain via viem — no caching layer between you and the truth.
import { RobotIntentPlugin } from '@robot-id/intent-sdk' const plugin = new RobotIntentPlugin({ robotId: 1n, apiKey: process.env.ROBOT_ID_KEY, adapter: 'ros2-bridge', // alexa | google-assistant | custom-llm }) const ack = await plugin.handleUtterance( "Authorize payment for charging dock B and log the task" ) // → classify intent → check AgentWallet limits // → IntentRouter.submitIntent → return ack
§ 05ENS naming
You pick your OEM namespace at checkout; on a paid subscription it’s provisioned under robot-id.eth via ENS NameWrapper. Units resolve through a CCIP-Read gateway that reads ownerOf live — a name always points to the current holder, with zero gas per transfer.
§ 06Live contracts
Six contracts on Ethereum mainnet, each verified on Etherscan. 53 tests cover every state-changing path, plus a forked-mainnet suite that exercises real USDC — because we launch on mainnet, not a testnet.
| Contract | Role | Address |
|---|---|---|
| RobotIdentity | ERC-721 · ERC-5192 · Merkle batch claim | 0xEebf76b8…8B31bEcc ↗︎ |
| IntentRouter | AI/voice authorization + audit log | 0xE7C6703b…45c6f6d8 ↗︎ |
| CapabilityRegistry | OEM-signed, append-only attestations | 0x602C50Ac…193aeD5f ↗︎ |
| OTAVerifier | Firmware signature gate · downgrade reject | 0x8442f404…B95a7D0f ↗︎ |
| MerkleOracle | Batch roots for up to 100k serials | 0xC8CE068d…BDC8BB13 ↗︎ |
| Subscription | USDC tiers · drives API-key issuance | 0xfd9A0F30…F3C1635F ↗︎ |
§ 07Compliance & standards
Robot ID turns identity, capability, and firmware into independently verifiable on-chain evidence — the paper trail insurers, regulators, and safety auditors already ask for, made tamper-proof.
Every AI or voice command and every autonomous payment is written append-only — executed or rejected, each with a reason and timestamp. Incident review and dispute resolution run against evidence no vendor can quietly rewrite.
OEM-signed capability records — payload, operating zone, max speed, human-interaction rating — anchored on-chain by a Merkle root, with full certificates on IPFS. Verify a declared spec without trusting the manufacturer's word.
Updates pass an ECDSA + Merkle gate that checks the manufacturer signature and rejects downgrades and replays, while each unit's firmware version is recorded on-chain — a provable chain of custody for deployed software.
Serials are stored as a keccak256 hash rather than in the clear — independently verifiable, yet no raw serial or personal data is published. Reads go straight to chain; writes return unsigned transactions. The protocol never holds your keys.
Robot ID provides verifiable infrastructure that strengthens your own compliance program; it does not by itself certify regulatory conformity, and responsibility for meeting any specific regulation remains with the operator.
§ 08Pricing
No registration fees — minting a unit costs gas only. Subscribing issues your API key and provisions the <oem>.robot-id.eth namespace you pick at checkout.
Integrate once. Identify every unit you’ve ever made. Keep full control.