Token-gated AI on Robinhood Chain

Pay for AI with $TESSERA. Get paid to hold it.

Connect MetaMask, pay $5 in $TESSERA to start, then fund your account with $TESSERA for credits. Every request is metered against your credits. Fund your account and you earn a share of platform fees, paid in ETH.

Access
$TESSERA
Fund
$TESSERA
Rewards
ETH

See it work

This is the real chat window.

Not a mockup. It’s scripted so it costs nothing to show you, but it’s the exact interface, styling, and markdown rendering you get after you sign in.

Typical AI subscription$20/mo, used or not
Tessera$5 once, then pay per request

A short coding question typically costs a fraction of a cent to a few cents. Light usage costs a lot less than a flat monthly plan; you’d need to send a lot of requests before per-request spend catches up to $20.

Tessera chat
Send

Why hold $TESSERA

Get rewarded for your account size.

Platform fees flow into a reward pool. Fund your account with $TESSERA and you earn a continuous share of that pool, proportional to your funded balance against total supply. Claim to your wallet in ETH whenever it’s worth it.

Your daily reward, exactly

pool × APY/365 × (your funded $TESSERA÷total supply)

The same formula that runs in the reward pool, written to an append-only ledger every time it pays out.

Real yield

From usage fees, not emissions

Scales with you

More funded, bigger slice

Paid in ETH

Claim to MetaMask, any time

Getting started

Four steps, all in your browser.

MetaMask is the only thing you install. Everything settles on Robinhood Chain.

1

Sign in

Connect MetaMask and sign a message. Free, no transaction.

2

Subscribe

Pay the subscription in $TESSERA, priced live. One payment unlocks access for the term.

3

Fund with $TESSERA

Send $TESSERA to your account. It converts to credits at the live price and sets your reward weight. Funded $TESSERA can't be withdrawn.

4

Use it

Send prompts. Credits are metered per call. Watch rewards accrue in real time.

How it holds up

Guarantees, not vibes.

Every property below is enforced in code and written to an append-only audit trail.

  • Hold, charge, capture

    The credit spend is a hold. A failed model call refunds it in full. You are only charged for completions you receive.

  • Per-account isolation

    A separate credit ledger and reward accrual per wallet. One account's balance is never another's.

  • Replay defense

    Every request carries an idempotency key. A duplicate is rejected before any credit moves.

  • Exact metering

    The charge is the real cost of the call times a fixed margin. Nothing is estimated after the fact.

  • Signed sign-in

    Login is a wallet signature over a one-time nonce. No passwords, no shared secrets.

  • Append-only audit

    Reserved, completed, captured, released, funded, claimed. Every transition is written once and never mutated.

lib/gate.ts
export async function reserve(
  userId: string,
  requestId: string,
  heldUsd: number,
  model: string,
) {
  await sql.begin(async (tx) => {
    const ins = await tx`
      insert into usage_ledger
        (request_id, user_id, held_usd, status, model)
      values
        (${requestId}, ${userId}, ${heldUsd}, 'reserved', ${model})
      on conflict (request_id) do nothing
      returning request_id
    `;
    if (ins.length === 0) {
      throw new ReplayError("duplicate request");
    }

    const dec = await tx`
      update accounts
      set credits_usd = credits_usd - ${heldUsd}
      where user_id = ${userId}
        and credits_usd >= ${heldUsd}
      returning credits_usd
    `;
    if (dec.length === 0) {
      throw new InsufficientCreditsError("insufficient credits");
    }
  });
}

The actual hold logic behind every request. One transaction, atomic: a repeated request id or a short balance and neither side effect applies.

Get started

Open Tessera.

Connect MetaMask, subscribe and fund with $TESSERA, and start earning.