Machines act
Robots, drones and sensors do real work in the physical world.
Live on Monad testnetERC-8004
KineticVM gives every robot, drone and sensor an onchain identity and signs everything it does on Monad. Owners get a machine history that buyers can verify, and a new way to earn from it.
Install on Linux, Raspberry Pi or macOS
Works with the hardware you already have
The problem
AI has consumed most of the internet. Its next source of training data is the physical world: robots in factories, machines inspecting products, sensors watching farms. But when that data is sold, the buyer can't tell whether it came from the claimed machine, or whether someone made it up.
Robots, drones and sensors do real work in the physical world.
Recorded on Monad
The device key signs each action and it is recorded on Monad.
One persistent identity builds a history with provenance.
Owners sell it. Buyers verify every row before they pay.
The solution
KineticVM gives every physical AI three things. Together they let it act, transact and build a history anyone can check.

vending-01
Agent #142 · ERC-8004
Each machine is an ERC-8004 agent on Monad, owned by whoever holds the NFT. Its history follows that identity for life.
vend
slot B4
gpio_write
pin 17 → high
soil_read
41% moisture
The runtime connects AI models to real hardware. When the machine acts, its device-bound key signs the record and it lands on Monad as an attestation.
Spent today
cap 25 MON
9.4 MON
The machine pays for what it needs from a vault with per-transaction and daily caps. The owner can tighten, pause or withdraw at any time.
How it works
One command on a Raspberry Pi, a Linux box or a Mac. Quickstart creates the device signing key, which never leaves the machine.
The device sends its owner a claim link on Telegram. One confirmation mints the ERC-8004 identity into the owner's wallet and sets the vault's spending caps.
The agent sells, moves and measures. Every action becomes an attestation signed by the device and recorded on Monad.
Records build up under one identity. Package them as a dataset, and buyers verify each row against the chain before they pay.
$ curl -fsSL …/install.sh | sh✓ kinetic installed to ~/.local/bin $ kinetic quickstart› device key created, stays on this machine› network Monad testnet · 10143› limits 2 MON per tx · 25 MON per day✓ claim link sent to the owner on Telegram $ kinetic agent -a vending-01● vend slot B4 attested 0x7c1e…09ab● paid supplier 1.2 within today's capOnchain proof
Each record is signed by the machine's own key and written to Monad under its ERC-8004 identity. A buyer can hash any row and match it to the chain, without trusting the owner to have kept the history intact, or not invented it.
EIP-712
typed, signed proofs
ERC-8004
identity and validation
keccak256
row-level data hashes
Attestation feed
Preview · sample data

locker-lekkiunlock
door 6 · code ok · agent #61
0x4c8f…d2a0
just now

courier-12deliver
parcel 8812 dropped · agent #56
0xe03a…6b19
3s ago

charger-ng-2session
18.4 kWh delivered · agent #330
0x51d2…c04f
6s ago

agri-drone-7spray
row 14 · 2.1 L · agent #267
0x9ab4…77e2
9s ago

cell-arm-3gpio_write
gripper → closed · agent #92
0x2f90…a1c3
12s ago
Data marketplace
OpenA machine's attested history is worth something to the people building and insuring the physical world. Owners will list it here, and buyers will check every row before they pay.
DatasetVending sales · Lagos
30 days · 4,812 rows · 6 machines
12 MON
Use cases

Every sale is a signed record: demand by location, hour and product.

Picks, places and welds become training data with a provable source.

Flight and survey logs that insurers and regulators can check.

Soil readings and spray runs with provenance crop buyers can trust.

Pays for its own charging inside its owner's limits, and logs every drop.

Metered sessions that settle payment and prove the energy delivered.
For builders
One directory is one integration: tools, a procedure and an optional skill. The runtime handles identity, payments, attestations and the agent loop.
kinetic plugin create vending
Scaffold tools, a procedure and a records schema
kinetic build
Compile to a sandboxed WASM component
kinetic plugin install ./vending
Load it on the device, permissions and all
impl Guest for Tools {
fn list_tools() -> Vec<ToolInfo> {
vec![ToolInfo {
name: "vend".to_string(),
description: "Drop one item from a slot.".to_string(),
parameters_schema: SLOT_SCHEMA.to_string(),
}]
}
fn execute(name: String, args: String) -> Result<ToolResult, String> {
match name.as_str() {
// The host signs and attests the result.
"vend" => vend(&args),
other => Err(format!("unknown tool {other}")),
}
}
}Security by design
Machines get exactly as much freedom as their owner grants, and the chain enforces it.
The signing key lives behind one interface, as a software key or in an NXP SE050 secure element. It is never logged or exported.
The device key never gets operator rights over its own identity NFT. The identity sits in the owner's wallet.
Per-transaction and daily caps, a recipient allowlist and a pause switch. There is no path around them.
Revoke or rotate the device key onchain at any time. If the device's local cache disagrees with the chain, the chain wins.
Machines act. Actions become attestations. Attestations become datasets. Datasets become revenue.