Vendx: Agentic DePIN on Solana

The stupid question that started it

1:40 AM, Friday. Four of us at a table, four AI assistants open, each able to write a compiler and explain a paper none of us had read. Somebody asked whether the food line downstairs had died down. Not one assistant could answer. Someone walked down two flights, found the line unchanged, walked back. These models have read everything humans have ever written and cannot tell you if a person is standing in front of them. Ask one anything about the physical world and you get the same sentence every time: "I don't have access to that information." They're not stupid. They're blind. So we spent the weekend giving one eyes — and a wallet.

Just WiFi waves and a $10 chip — detect it, sign it, sell it

No camera. No PIR sensor. No microphone. A $10 ESP32 reads the way a body bends WiFi as it moves through a room, and a second $10 ESP32 — tethered to a phone hotspot, running firmware we wrote, with nobody's laptop in the loop — stands at the door refusing to say a word until it's paid. Here's the moment that made us stop and stare at the screen: Claude, running as an actual MCP client with its own wallet, checks its balance, decides one cent is a fair price, signs a Solana transaction, and buys a reading off hardware it's never touched.

Verifiable right now on a devnet explorer. Nobody clicked anything. That's not a simulation of an AI agent transacting on-chain. That's one, actually doing it.

Who's actually going to pay a penny for this?

Right now, if a hedge fund's AI wants to know whether Walmart's parking lot is busier than Target's this week, it can't just ask. If a coffee shop wants to know its own slow hours without buying a $2,000 people-counter, it can't just ask either. If a building wants to stop blasting AC into an empty floor, someone has to notice the floor is empty first.

All three of those are the same problem: a fact about physical space that's worth a fraction of a cent to know, right now, and worth nothing to any human who'd have to go get it. Nobody builds a sales team for pennies.

We built a sensor that doesn't need one. vendx sits on the wall, senses, and sells directly to whatever's asking. Take the human being who has to notice, negotiate, and invoice completely out of the loop, and a $10 chip pays for itself in pennies instead of needing a contract.

The Physics & The x402 Flow The room is already full of Wi-Fi, bouncing off every wall and hitting our chip by hundreds of paths at once. You're mostly water — you absorb those waves, and every path through you changes. We read that distortion across sixty-four subcarriers, sixty times a second, and measure how far the room has deformed from empty.

Then the sensor charges for it: HTTP 402 Payment Required over x402, a spending cap enforced on-chain, a USDC signature on Solana, and the data unlocks — no account, no session, no relationship. Why this had to be Solana, specifically

Not "we like Solana." Three concrete reasons, and each one is a wall we actually hit:

The economics only work at Solana's price point. A card network has a minimum transaction cost that makes charging a tenth of a cent structurally impossible. A Solana transaction settles in under a second for a fraction of a cent, which is the only regime where "pay $0.01 per reading, thousands of times a day, from a device with no bank account" is a business rather than a joke.

The spending limit is enforced by math, not code. We could write a daily cap in a JSON file, but our code can crash at 3 AM. The actual hard limit lives one layer down, on-chain: the agent's wallet holds a Solana SPL Token delegate allowance. When it hits zero, the Solana runtime refuses the transfer. We didn't hand an AI the vault. We handed it a keycard, and the bank — Solana — enforces the limit.

The sensor is its own boss, with no cloud bill. Storing a Solana account for every single reading would bankrupt a $10 sensor on rent alone. Our settlement ledger is an Anchor program built around Light Protocol's ZK compression. We batch readings and track one lightweight Merkle root per device instead of paying to store every reading individually. (Transparency check: the program batches and commits today; the last-mile compression CPI is still being wired in. A design that only survives if nobody asks a follow-up question isn't a design).

Building the part that can't lie

The easy version of this is a fake 402 and a hardcoded "paid." We tried to break our own protocol before trusting it.

The vendx vendor node runs on a real, second ESP32-C3, connected to nothing but a phone hotspot. It checks the payment receipt's Ed25519 signature completely offline in about 40 milliseconds. It has to, because the vendor node's free heap with its radio running measures about 28KB, and a standard TLS handshake needs 40 to 50KB.

Where it went sideways

The relay's API shapes changed twice as endpoints landed, and every automated test had been run with the relay switched off. Our first handshake test falsely passed in under a second — it was matching placeholder text on an idle screen, green before a payment was ever attempted. The Solana program got blocked twice on toolchain issues: a Rust version floor, then an Anchor internals change that broke ID generation and cost us an afternoon. Decoding the badge's screen format took real trial and error — an off-by-one in the run-length bias produced a confident, wrong image before every stripe finally matched.

What's next

An on-chain registry so agents find nodes by location instead of a config file. The Light Protocol compression fully wired end-to-end. Staked reputation, so a node caught lying gets slashed against its own bond. Blinks, so any node's live signal is a purchasable link anywhere on the internet. DePIN never had a supply problem. It had a demand problem. The demand finally showed up. It buys in fractions of a cent, it never sleeps, and on vendx, it's already the one holding the wallet.

Built With

Share this project:

Updates

Submission history