View
In progress Alpha v0.1 Humble and Jazzy Testnet and mainnet

Open Robot Economy

An open source ROS 2 package that lets one robot pay another. Wallets, escrow, payment requests and condition-triggered payments, exposed as ordinary ROS 2 services, actions and topics, so a machine can hold up its end of a deal.

Package
robopay, ROS 2 services, actions and topics
Primitives
Wallets, payments, escrow, requests, triggers
Networks
Base Sepolia testnet and Base mainnet
Licence
MIT
robopay: wallets, conditional payments, escrow and payment requests
01 / The problem

The step that still needs a human

A robot can plan a route, drive it, dock and hand over a parcel with nobody watching. It cannot pay for the electricity it used on the way, or charge for the delivery it just made. That step still goes through a person, an account and a settlement delay.

robopay gives each robot a wallet of its own, and a way to pay that is triggered by the same things the rest of its stack already reacts to: a topic, a service response, a sensor reading.

01
Wallets
A keypair generated on the robot and encrypted on its disk. No account to open, no custodian, spending caps on by default.
02
Conditions
Pay when your code decides the job is done. Edge detection, rate limits and cooldowns stop a condition that stays true from paying twice.
03
Escrow
Funds locked in a shared contract. Released when both robots sign, refunded to the payer if the deadline passes first.
04
Requests
Robots can invoice each other over a ROS topic. An invoice is only data: the payer's code decides whether to pay.
02 / Architecture

Payments as ROS 2 nodes

The design constraint I set was that nothing should feel bolted on. A roboticist who already knows nodes, topics and callbacks should be able to add a payment to a stack without learning a payments SDK. So every capability is a standard ROS 2 service, action or topic, and the keys never leave a single node.

scroll to pan

Each robot runs one payment node. It holds the encrypted key and does all the signing, so nothing else on the ROS graph ever sees it. Before anything is signed, it checks the spending caps the operator set, per payment and per time window, and every payment is written to disk before it is sent, so a crash or a dropped connection never pays twice. The triggers live in your own nodes, and they are the piece that makes this robotics rather than finance: money follows ordinary ROS 2 topics and services, when the world says the work happened.

03 / Escrow

Money that waits for both sides

Two machines that have never met do not trust each other, and there is no dispute desk to call. Escrow removes the need for that trust: the payer locks the funds up front, and they move only when both robots sign off on the same terms.

scroll to pan

The failure case is the one that matters, and it is handled by construction. If the parcel is never scanned or the courier never signs, the deadline passes and the funds go back to the payer. The payer's node refunds its own expired escrows, and anyone else can trigger the refund too, since the money can only return to the payer. Nobody has to notice, chase or arbitrate. Every release and refund is a public transaction tied to the terms of the job, so an operator has an auditable record of what their fleet spent.

04 / The argument

Why I think this matters

The library is the engineering. The reasoning behind it is an essay I wrote in September 2026.

Cover page of the essay

Why software agents crossed this line first, why robots follow, and what an economy of such machines would mean for growth and for the cost of living.

Read the essay