How it works

A signed transaction in.
A real action out.

Every command flows through the same path. Because it is signed, you get authentication for free. Because it is on-chain, you get ordering, timestamps, and a public audit trail for free.

01

Sign

Build a JSON command and sign a transaction with the calldata. No wallet connection in your frontend. Users sign from a wallet app, CLI, script, or agent.

02

Send

The transaction lands on Ethereum: ordered, timestamped, permanent. Your command is public data attached to a real signature.

03

Stream

The relayer streams commands in real time over WebSocket, with backfill so nothing is ever missed. On-chain, ordered, timestamped.

04

Interpret

Validate the schema, authorize the signer, dedupe by transaction hash. Authorization fails closed: signer to role to command.

05

Execute

Run the matching handler serially per app. No two commands race. Predictable backend behavior from a public ordered ledger.

06

Verify

An optional on-chain receipt makes the whole round trip provable. From signed calldata to executed handler — fully auditable.

Command envelope

What goes in calldata

A minimal JSON envelope. Your app defines the command set; the bus handles transport and ordering.

{ "v": 1, "cmd": "post", "args": { "text": "gm, on-chain" } }
Security

No session to hijack

Without Connect Wallet, there is no live session between your site and a user wallet. Phishing surface drops sharply.

Frontend

100% static

Your UI never touches keys. Deploy to any CDN. No provider injection required.

Clients

Headless by default

Same commands from a browser, terminal, cron script, or AI agent. One auth model everywhere.

Ready to define your commands?

Register a schema and handler. Keyless dApps validates, authorizes, and executes.

Go to Build →