Developers

Define a command.
Keyless does the rest.

Ship a keyless frontend for Robinhood Chain. Declare a command with its schema and a handler. The framework validates, authorizes, dedupes, orders, and executes it for you.

registerApp

Your whole backend

Strict JSON schema per command. Authorization fails closed. Idempotent by transaction hash, ordered per namespace.

// app.ts registerApp({ namespace: 'board', controlAddress: INBOX, commands: { post: { schema: z.object({ text: z.string().max(280) }), handler: (ctx) => board.add(ctx.signer, ctx.args.text), }, }, })
01 · Define

Register commands

Map command names to Zod schemas and handlers. Each app gets its own namespace and authorization rules.

02 · Connect

Point at the relayer

Stream signed transactions from Robinhood Chain (chain ID 4663). Backfill ensures you never miss a command.

03 · Ship

Static frontend

Users sign elsewhere. Your site only renders UI — no wallet connect, no key handling.

SDK

@keyless/sdk (planned)

TypeScript client for building, signing, and monitoring commands. Browser and Node.

CLI

keyless-cli

Build, sign, and send commands from the terminal. Same flow as the homepage demo.

Console

Live interpreter UI

Fire a command and watch received → validated → executing → done. Shipping soon.

One engine. Your command language.

Stock Tokens, RWA apps, agents, DeFi ops — same bus on Robinhood Chain, different handlers.

Explore use cases →