One API for every robot on Earth.

Permanent, programmable identities on Ethereum — identity, intent, payments, attestation, and firmware, behind a single API key.

LIVE
6
Mainnet contracts, source-verified
53
Tests passing, incl. forked-mainnet USDC
100k
Serials per batch → one Merkle root
0
Per-unit fees — gas only, non-custodial

§ 01Why it exists

Every robot needs an identity it doesn’t own.

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

Protocol credential card for unit SN-A1B2C3 — network Ethereum, status verified.
For OEMs

Ship trust, not just hardware

Issue a verifiable identity, capability record, and firmware policy per unit. One integration covers your entire catalog and every robot you've ever made.

Humanoid · quadruped · AMR · arm
For operators & fleets

Control what robots can do

On-chain spend limits and an immutable intent log mean a robot can act autonomously without ever exceeding the mandate you set.

Warehouses · inspection · logistics · service
For insurers & regulators

Verify without trusting

Check a robot's certified payload, operating zone, or human-interaction rating against an on-chain Merkle root — independently of the manufacturer.

Underwriting · compliance · resale due-diligence

§ 02The protocol

Five modules. One key.

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.

M/01

Robot Identity

ERC-721 · ERC-5192 · ERC-2981

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.

→ A tamper-proof birth certificate per robot; a portable identity for its owner.
M/02

AI / Voice Intent

ros2-bridge · alexa · custom-llm

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 provable record of who told the robot to do what.
M/03

Autonomous Payments

ERC-4337 smart account

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.

→ Robots transact without a hot wallet holding unlimited spend.
M/04

Capability Attestation

OEM-signed · Merkle root · IPFS

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.

→ The robotics analog of a safety datasheet — verifiable and audit-ready.
M/05

Firmware Verification

ECDSA + Merkle OTA gate

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.

→ Unsigned or rolled-back firmware never reaches a deployed unit.
1 unitup to 100,000 serials → one Merkle root → one transactionno per-unit fee · gas only
01

Subscribe in USDC

Connect a wallet, reserve your namespace, call subscribe(tier). The on-chain event issues your API key.

02

Pre-authorize a batch

Submit serials off-chain; the API builds a Merkle tree and you commit one root via submitRoot.

03

Units claim identity

Each robot calls claimWithProof(…) to mint its NFT — soulbound or transferable, your choice.

04

Attest & secure

Sign capability attestations, register your firmware-signing key, set each wallet's spend rules once.

05

Resolve & operate

Names resolve to the current owner via CCIP-Read. Robots route intents and payments under your limits.

§ 03Live audit log

ROS2 intent, authorized on-chain.

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.

IntentRouter · boston-dynamics.robot-id.ethMAINNET
12:04:01✓ EXECUTED/robot/navigate_to_dock · "go charge at dock B" · 0 ETH
12:04:09✓ EXECUTED/robot/authorize_payment · vendor 0x9f…a1 · 0.05 ETH
12:04:15✗ REJECTEDLimitsExceeded · 8.0 ETH > per-action ceiling
12:04:22✗ REJECTEDRateLimited · intent flood guard
12:04:30✓ EXECUTED/robot/start_inspection · "patrol warehouse-01" · 0 ETH
12:04:38✓ EXECUTED/robot/return_to_base · task queue empty · 0 ETH
12:04:44✗ REJECTEDVendorNotAllowed · 0x3c…7e not on allowlist

§ 04Developers

Built for robotics developers.

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.

ros2_intent.ts@robot-id/intent-sdk
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
GET
/api/v1/robots/:tokenId
Live identity + current owner, read from chain
POST
/api/v1/robots
Register a unit (returns an unsigned tx)
POST
/api/v1/robots/batch/preauthorize
Up to 100,000 serials → a single Merkle root
GET
/api/v1/robots/batch/:id/proof/:serial
A unit's claim proof (public)
GET
/api/v1/capability/:robotId
Latest capability attestations
POST
/api/v1/intent
Submit an AI/voice intent through IntentRouter
GET
/api/v1/ota/:robotId/verify
Verify a firmware signature + version
GET
/api/v1/subscription/:addr
Subscription status, tier, and expiry

§ 05ENS naming

Every robot, a name.

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.

robot-id.eth← protocol root (treasury)
└─boston-dynamics.robot-id.eth← OEM namespace · you choose it at checkout
├─sn-a1b2c3.boston-dynamics.robot-id.eth← a unit
└─warehouse-01.boston-dynamics.robot-id.eth← a site / fleet grouping
→ resolves via CCIP-Read → 0x7a3f…c21d (current NFT holder)
unitree.robot-id.ethfigure.robot-id.ethagility.robot-id.eth

§ 06Live contracts

Live, source-verified 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.

Source-verified on mainnet53 tests passingNon-custodial · unsigned txs
ContractRoleAddress
RobotIdentityERC-721 · ERC-5192 · Merkle batch claim0xEebf76b8…8B31bEcc ↗︎
IntentRouterAI/voice authorization + audit log0xE7C6703b…45c6f6d8 ↗︎
CapabilityRegistryOEM-signed, append-only attestations0x602C50Ac…193aeD5f ↗︎
OTAVerifierFirmware signature gate · downgrade reject0x8442f404…B95a7D0f ↗︎
MerkleOracleBatch roots for up to 100k serials0xC8CE068d…BDC8BB13 ↗︎
SubscriptionUSDC tiers · drives API-key issuance0xfd9A0F30…F3C1635F ↗︎

§ 07Compliance & standards

Built for compliance and audit.

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.

Immutable audit trail

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.

IntentRouter · append-only on-chain event log

Verifiable safety attestations

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.

CapabilityRegistry · machinery-safety documentation

Firmware & supply-chain integrity

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.

OTAVerifier · cyber-resilience expectations

Privacy by design

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.

Data minimization · GDPR-aligned hashing
ERC-721ERC-5192ERC-2981ERC-4337ENS · ENSIP-10EIP-3668 CCIP-ReadROS 2ISO 10218 / TS 15066EU Machinery Reg. 2023/1230EU Cyber Resilience ActGDPR

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

On-chain USDC subscriptions.

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.

Small Manufacturer
$1,999 / mo
Robot identities
Up to 10,000
Namespaces
1
Batch size
10k / batch
API requests
1M / mo · 300/min
Intent adapters
Basic
Support
Community + email
Subscribe in USDC
Enterprise
$9,999 / mo
Robot identities
Unlimited
Namespaces
Unlimited
Batch size
Unlimited
API requests
Unlimited · 5,000/min
Intent adapters
All + custom
Support
Dedicated SLA
Subscribe in USDC

Give your robots an identity that outlives your database.

Integrate once. Identify every unit you’ve ever made. Keep full control.