Testing and going live

The onboarding flow

 1  Commercial and compliance   contract, KYB, licences per jurisdiction, revenue terms
 2  Registration                you get an operator id per environment (sandbox, production)
 3  Key exchange (sandbox)      you upload your Ed25519 public key; you download the RGS wallet keys (current and standby)
 4  Sandbox configuration       wallet ingress URL, currencies, lobby origins, test users
 5  Build                       launch and catalogue against the sandbox; the wallet against the RGS
 6  Conformance                 the wallet and operator-API suites pass in the sandbox and produce a signed report
 7  Production request          you request go-live with the report and the certificates checklist
 8  Production keys and IPs     a NEW key pair (never reuse the sandbox keys); our six egress IPs allow-listed on your side
 9  Production smoke test       qa-tagged sessions, real tiny bets, one rollback drill
10  Ring 0, then general availability

Sandbox and production share nothing secret. A sandbox key can never sign a production call, and sandbox IP addresses are never to be allow-listed in production firewalls.

What you can test today, on your own machine

You do not need our environments to build and verify most of an integration. With a checkout of the RGS (Core) and these SDKs:

WhatHowProves
Your signing codethe vectors in vectors/signing.jsonyour signatures are byte-identical to ours
Your operator-API clientinterop/run.sh, adapted to your clientlaunch, catalogue and lookups work against the real service, including the refusals
Your wallet against the conformance kitwcs as abovethe wallet contract, row by row, with a signed report
Your wallet against the real RGSstart play-core with walletUrl pointing at your wallet, as examples/reference-wallet/e2e.sh doesthe RGS's signed balance, debit and credit calls are verified and your books agree with ours
The whole path: launch, play, walletexamples/reference-wallet/launch-e2e.shyour launch call, the game API reading that session in another process, and your wallet being debited and credited by signed calls, on one database
Retry and fencing behaviourmake your wallet answer 5xx, time out, or refuse a debit, and watch the RGS retry the identical bytes and roll backidempotency, fencing and refused-debit handling

The wallet conformance kit

Before go-live your wallet must pass RuneCode's wallet conformance suite against your sandbox wallet. The kit calls your wallet exactly as the RGS does (signed bodies, x-operator, frozen bytes re-sent verbatim on retry) and writes a signed report with a result per row and the capability flags it derives for your wallet. The report is the evidence for the go-live items on wallet conformance, refusal handling and the standby key.

# from the RGS repository (Node 24 or newer; no runtime dependencies)
pnpm --filter @runecode/wallet-conformance wcs \
  --wallet-url https://sandbox-wallet.example.com --operator-slug acme \
  --signing-key ./rgs-sandbox.key --standby-key ./rgs-sandbox-standby.key \
  --dev-session-url https://sandbox-wallet.example.com/v1/dev/session --out ./wcs-report

The reference wallet passes it: examples/reference-wallet/wcs.sh runs the real kit against the reference wallet (verdict pass, every row, every capability true). Use that wallet as your starting point and the kit as your acceptance test.

The wallet simulator (wallet-sim) is our reference for the other direction: it behaves like an Engine-contract wallet and is what the RGS is tested against.

Go-live checklist

A blocker must be done before production. Items marked if used apply only when you use the feature.

#ItemBlocker
1Contract, KYB and revenue terms signedyes
2Licences and jurisdictions confirmed; a jurisdiction profile assigned; counterparty compliance record completeyes
3Certificates in place for every (game, release, jurisdiction) you enableyes
4Wallet conformance passed against your staging wallet, within 30 days, same build as productionyes
5Operator-API conformance passedyes
6Capability suites passed for each capability you enable (promotions, jackpots, webhooks, crypto)per capability
7Production key pair uploaded; both RGS wallet keys (current and standby) trusted; fingerprints confirmed out of bandyes
8Refusal handling passed: a rollback of a refused debit answers 200 and refunds nothing; refused debit ids are idempotentyes
9All six production egress IPs allow-listed and reachableyes
10Wallet ingress URL specific to RuneCode, TLS valid, /health greenyes
11Test helpers unreachable in productionyes
12Lobby origins registered; launch tested in the real lobby on desktop and mobileyes
13Currencies, bet levels and limits reviewed and approvedyes
14Webhook endpoint verifies signatures and de-duplicates by idif used
1524/7 contact for wallet incidents, escalation path, status subscriptionyes
16One day of transactions pulled and matched against your ledger; daily reconciliation agreedyes
17Production smoke test passedyes
18Player round history shown in your lobby where the jurisdiction requires itwhere required
19Multi-jurisdiction operators: country sent on every launch, or a complete brand-to-profile mapif more than one profile

Operating in production