SATRIUM

Your pocket bitcoin for the immersive web.

Pay inside VR and AR without leaving the session.

On the open web: one link, any device, any reality.

A bitcoin wallet-bridge for WebXR.

Your scene asks, the user approves in-session, you get a settled result.

One link, any device, any reality. No wallet code in your scene.

outsidehost scene ◂ drag across the picture ▸ insidewallet origin

wallet.satrium.org

PRIVATE PILOTThe pocket and the SDK open in rounds.

PROOFThe first Bitcoin payment approved inside a WebXR session.

WebXR

Extended Reality Web is here.

WebXR is VR and AR that open from a link, like any web page. Nothing to install, nothing to sign up for: the same link runs on every device-and-reality combo below, and each one shows the world the way that device can.

This is not the peak. It is the start, and a solid one: the browsers are here, the standards are here, the crowd is not. Every medium rewards the people who show up early, and this one is open to anyone with a link.

WebXR is the W3C API for immersive sessions in the browser. One codebase, one URL, and the session adapts to the device in front of it. No store review. You ship when you push.

It is early, and early is the good part: no gatekeeper between you and the visitor, no 30 % cut, and an audience that arrives with a browser in every headset and a phone in every pocket. The ones who build now set the habits.

One codebase, one URL, six device-and-reality combos.

WebXR already opens on all of these. The pocket is verified on Meta Quest's browser and built for the rest.

The same link, the same code; the session adapts to the device in front of it.

A phone or tablet can do AR, gyro, or both.

  1. world asked
  2. you approved
  3. pocket checked
  4. done

The world moves only on done.

  1. idle
  2. requested
  3. approved
  4. verified
  5. settled

Your scene acts on settled, never earlier.

BEFORE

You could not pay inside the XR session.

Every one of those worlds could open its door. None could take a payment without sending you out: taking the headset off, trusting the world with your money, or downloading an app. So most worlds stay free, and the people who build them stay unpaid.

Taking money in WebXR meant a bad trade: pull players out of the headset to pay, hold their money on your own server, or give up the link and ship an app.

NOW

Until now.

Fill your pocket at wallet.satrium.org (private pilot for now) — coins (Lightning) or nuts (ecash). Nuts and coins work today. Walk into any world that speaks Satrium and pay right there, inside the session. The people who build those worlds get paid the same way.

Your world asks, the pocket answers, and each payment lands in your own wallet, as a Lightning payment or as ecash. Nobody leaves the session.

You are inside. Your pocket came with you.

In session. The pocket is at its own origin; your scene only asks.

A pocket for every kind of bitcoin, in any reality.

Satrium is a pocket for bitcoin at wallet.satrium.org. The link is the same for everyone; what makes it yours is stored in your own browser, locked with your PIN.

Add it to your home screen and it opens like an app, with its own icon. It is still the same link, the same pocket.

The icon is a shortcut to wallet.satrium.org. If an icon opens any other address, it is not us.

Today it holds coins and nuts.

What a world never gets: NOkeysNOPINNObalance NOrecovery wordsNOhistory

The most it can spend is the allowance you gave it.

The pocket is a web app at its own origin. Your scene embeds it as a hidden frame and talks to it over one small message protocol.

It is a progressive web app: installable from the browser, updated on every push, no store between you and the user. Installing changes nothing about the origin, so the pocket and its storage rules are the same.

The icon is a shortcut to wallet.satrium.org. If an icon opens any other address, it is not us.

The host bundle carries no wallet code, so there is nothing in your scene to leak.

Keys, PIN, recovery words, balance and history exist only at wallet.satrium.org, behind the browser's origin boundary.

The PIN is typed only on the pocket's own page, never in immersive mode.

The amount, the origin, the verdict, and how much of the allowance is left. Nothing else.

A settled state is reachable only from a verified result: a state machine, not a flag.

As with every web wallet, users trust the code served from wallet.satrium.org; that is why it will be open source and the address never changes.

await pocket.connect()
const r = await pocket.requestPay({ paymentRequest: invoice, amountSats: 21 })
if (r.settled) game.grantRound()

// the shape of the SDK — a preview, not yet published

It will be free and open source, in scoped packages under @satrium/*.

Your pocket, through a world's eyes.

A world sees the amount it asked for, your answer, and how much of its allowance is left. Nothing else.

move the circle across the pocket

The scanner shows what crosses: amount, origin, verdict, allowance left. Beside it, the shape of what your code gets back.

r = { settled: true, ref: '…' }
if (r.settled) game.grantRound();

this is everything your code ever receives

move the circle across the pocket

WHAT THE WORLD SEES

21 sats

479 left

verified

{ sats:    21,
  origin:  "a-world.example",
  verdict: "verified",
  left:    479 }

NEVER CROSSESPIN · keys · balance · recovery words · history

example pocket

One rail today. More rails tomorrow.

Coins

Lightning via Spark. Your keys sign.

Nuts

Ecash from a mint. The mint holds the sats.

Built for pocket money: spend it in worlds.

Coins

Breez SDK on Spark. The user signs; Spark co-signs and can't move coins alone. Trust assumption: its operators delete old keys after each transfer.

Nuts

Cashu via a mint (Minibits). The pocket holds a claim, not coins.

Built for pocket money: spend it in worlds.

Every balance says what kind of money it is.

// every rail is announced when it ships — never before

Money is meant to move both ways.

Your whole WebXR experience in one pocket.

Pay for the good stuff on the open extended reality web, no app store, no expensive device required, and as worlds grow, win rounds, earn prizes, collect things: back into the same pocket.

earning: next

A whole economy in one pocket.

Charge for entries, rounds, doors and tools with requestPay(). Hand out prizes, tips and refunds with receive(). Same bridge, same settled result.

receive(): next

One site, two sides.

Like two sides of one coin: those who live the experience, and those who build it.

USERI want to play

You play. One pocket for every world: pay inside, keep playing, and a world never sees more than the sats you allow. No sign-up, no name.

DEVI build XR worlds

You build. Three lines, one protocol, a settled result. No wallet code in your scene, no Satrium server, no store — your earnings land in your own wallet.

built with open protocols