← Robyn Services

⭐ Plus LIVE

More capacity, more assurance, more cover — never a smaller crowd. Privacy comes from everyone looking the same, so Plus deliberately does not sell a "more private lane". The wire is identical for paying and non-paying users. What you buy is everything around it:

You getWhat it is
CapacitySends and mailbox publications exempt from per-lane rate limits
Funded coverEach pass can emit one extra cover row at an undisclosed time — raising the floor for every reader
AnchoringA feed row included in a signed hourly Merkle root (on-chain posting when the operator enables it) with a verifiable proof
Erasure proofSigned statements of what was purged, for everyone (/api/messages/v2/erasure)

Paid in crypto, redeemed anonymously. Pay an invoice in ETH (Robinhood Chain, Ethereum, Arbitrum, Base), USDC (Base, Arbitrum) or BTC (via Chainflip). You then submit blinded tokens; we sign them without seeing them (RFC 9474 blind RSA). When a pass is later used we cannot tell which payment, wallet, or other pass it belongs to. A pass is not an account — there is nothing to log in to and nothing we could hand over.

Price: one bundle = 500 passes for $3 (quoted in the asset at invoice time); order up to 50 bundles per invoice. BTC has a Chainflip deposit minimum (~0.001 BTC ≈ 20+ bundles) — for small orders pay in ETH or USDC. /api/plus/info has the live mint key, assets and stats.

Use it in your browser lane: checking…

Passes now double as your anonymous API key: send one as x-anygas-pass (or body.pass) on any quota-limited call — exempt for that request, unlinkable to you. Reads ride the private relay; purchases go direct (and say so).

Passes are created and unblinded in this tab and kept encrypted in this browser (your passphrase). Paying uses your wallet; the passes you get back cannot be linked to that payment.

locked

Node SDK

// npm i ethers @cloudflare/blindrsa-ts @noble/curves @noble/post-quantum
import * as plus from './plus-sdk.mjs';   // https://anygas.xyz/svc/plus-sdk.mjs
import * as msg2 from './msg2-sdk.mjs';

const inv = await plus.invoice({ asset: 'eth-8453' });                 // or eth-4663 | eth-1 | eth-42161 | usdc-8453 | usdc-42161 | btc
const tx = await wallet.sendTransaction({ to: inv.payTo, value: BigInt(inv.amount) }); await tx.wait();
const passes = await plus.claim(inv.invoiceId, tx.hash);               // 500 unlinkable bearer passes — store them like cash

await msg2.send('sphynx.robynchain.eth', 'gm', { wallet, pass: passes.pop() });   // rate-limit exempt, still unlinkable
await plus.fundCover(passes.pop());                                    // +1 cover row for everyone, some time in the next 24 h
const a = await plus.anchor(passes.pop(), rowId);                      // signed (optionally on-chain) Merkle inclusion
console.log(await plus.verifyAnchorProof(await plus.anchorProof(rowId)));

Raw API: POST /api/plus/invoice · GET /api/plus/invoice/{id} · POST /api/plus/claim · redeem inside POST /api/messages/v2/send {pass}, /mailbox {pass}, /plus/cover {pass}, /plus/anchor {pass,id}. MCP: robyn_plus_*. Full spec: docs.

What we learn: that some payer bought N passes at time T. What we do not learn: which requests those passes later authorised.