Shared vocabulary for this repo: the roles (who's who), the platform/architecture terms, and the iGaming domain terms. When a term maps onto a concrete part of the codebase, the last column points to it.
Read this first - the word "user" is ambiguous in iGaming. In igaming UIs "user" usually means the gambler. In this repo we avoid the bare word: operator / consumer / end user = the developer or company that installs the OSS packages and builds a igaming; player = the gambler who registers, deposits, and plays. Keep them distinct.
| Term | Who it is |
|---|---|
| Operator / consumer / downstream consumer / end user | The developer or company that installs the @openora/* packages and builds + runs their own igaming. They are the "end user" of the package, not a gambler. They bring their own extensions.config.ts, UI adapter, and vendor adapters. |
| Player | The person who registers on an operator's igaming, deposits funds, and plays. The operator's customer. Modeled by the player module + auth User. |
| Admin / backoffice user | Operator staff who manage players, approve withdrawals, configure games, and edit content via the backoffice. A role on the auth User, not a separate person type. |
| Account manager | Operator staff assigned to one player to look after them. Must be an active staff member holding the player view permission; a player has at most one, or none. Set in player-management. |
| Maintainer / core contributor | Someone working on the OSS platform itself (this repo) - distinct from an operator who only consumes it. |
| Term | Meaning | Maps to |
|---|---|---|
| Headless | The platform ships backend only - modules, contracts, API, and SDK consumption surface. The operator supplies the entire frontend (pages, components, styling, theme) in their own repo. | packages/core/src/<domain>/*, @openora/core/react |
| Module | A business domain packaged as an independently loadable unit (auth, wallet, gaming...). Never imports another module. | packages/core/src/<domain>/<module>/ |
| Plugin / extension / overlay | A drop-in object that adds or overrides behavior via { id, register } satisfies Plugin<CoreTokenCatalog>. The only way new functionality enters the system. |
extensions/*, consumer plugins |
| Adapter | The vendor-agnostic interface a module depends on (e.g. KycAdapter, PaymentAdapter) plus its per-vendor implementations. The swap seam: a module declares the interface + DI token in @openora/core/contracts; an operator binds a concrete impl. |
@openora/core/contracts + <domain>/<module>/adapters/<vendor>/ |
| Contract | The composed oRPC router. Drives request validation, the typed client, and the live OpenAPI reference. | @openora/core/contracts |
| Domain schema | A Zod schema - the single source of truth for a shape. Types are z.infer'd, never hand-written. |
@openora/core/contracts, module schemas/ |
| UI plugin | A client-side extension that customizes the look/feel. Lives in the consumer frontend, not in this repo. The platform is headless backend only. | ADR-0013 (superseded) |
| Slot | A typed injection point in a UI surface that a plugin can fill. Owned by the consumer frontend. | ADR-0013 (superseded) |
| Sealed token | A SealedToken<T> whose backing service operators may never override (RG enforcement, KYC writes, AML/SAR, ledger writes, RNG, etc.). Structurally incompatible with Token<T> + runtime-rejected by plugin-host. |
@openora/core/compliance |
| Client page token | ClientPageToken<P> - Tier 3 escape hatch for full client-side page replacement. |
@openora/core/contracts/token.ts |
| Brand scope | Multi-brand operators define brands in PlatformConfig.brands; <ThemeProvider activeBrand="..."> selects the active one; slot fills with brandScope: [...] render only when the active brand matches. |
ADR-0013 T0.5 |
| Platform config | Operator-editable Zod-validated YAML/JSON consumed at boot. Controls feature flags, brands, RG defaults per geo. No admin UI in v1. | @openora/core/contracts/platform-config.ts, @openora/core/server (loadPlatformConfig) |
| Scaffold | A deterministic code-mod that stamps a module/plugin/route/component skeleton. | tools/gen/gen.ts, /scaffold-* |
| MCP dev server | A stdio tool server agents connect to for read-only inspection + scaffolding. | apps/mcp-server-dev |
| Agent tool | A read a model makes during an agent run (eg a player's summary), declared by the module that owns the data. Registered in plugin.ts, reached only through the MCP kernel. |
module contract/, docs/catalog.json |
| Action type | A state change a model may only propose. An admin approves the proposal; an executor then applies it, and a replay while the effect still holds changes nothing. Core declares the action types; the runtime that runs agents and stores proposals is not part of core. | module contract/, docs/catalog.json |
| MCP kernel | The only gateway to agent tools and action types: checks the IAM grant of the admin behind the run, validates input, returns only allow-listed output and declared error codes, and audits each tool call and execution. Not the MCP dev server. | @openora/core/server (MCP_KERNEL), ADR-0042 |
| MCP transport | The MCP Streamable HTTP endpoint that serves the kernel's read tools to an admin's own MCP client, authenticated by an MCP token. Off until an operator enables it, and only on the hosts it is bound to. Not the MCP dev server. | @openora/core/server, ADR-0043 |
| MCP token | The bearer credential an admin generates for their MCP client: bound to that admin, stored only as a hash, always expiring, revocable by its owner or an overseer, and audited on every call. | iam module, ADR-0043 |
| RGS (Remote Gaming Server) | The game engine that runs rounds, applies RTP, and settles bets. Can be third-party (a provider) or the platform's own multiplayer/provably-fair foundation. | gaming module + GameAdapter |
| Term | Meaning | Maps to |
|---|---|---|
| KYC (Know Your Customer) | Verifying a player's identity (ID/selfie/proof of address), usually via a third-party provider, before withdrawals above a threshold. | identity / KycAdapter |
| AML (Anti-Money Laundering) | Controls and monitoring to detect/prevent laundering through play (limits, source-of-funds, suspicious-activity flags). | identity, compliance |
| 2FA | Two-factor authentication (TOTP) on a player or admin account. | identity (better-auth) |
| Geo-blocking | Refusing service from restricted jurisdictions based on IP/region. | compliance / GeoIpAdapter |
| Jurisdiction / licensing | The regulatory regime a igaming operates under; dictates allowed countries, game rules, RG requirements, and reporting. | operator concern |
| Term | Meaning | Maps to |
|---|---|---|
| Wallet | A player's balance(s) and the ledger of money movements. | wallet module |
| Balance | Spendable funds, shown in real time; may differ from pending. | wallet |
| Deposit / withdrawal | Money in / money out, in fiat or crypto. | wallet |
| Held withdrawal | A withdrawal set aside for manual review. No money moves when it is held; only an admin's approval or rejection moves it on, and auto-approval never takes it. | wallet |
| PSP (Payment Service Provider) | A fiat payment vendor (card, bank, e-wallet) integrated behind an adapter. | wallet / PaymentAdapter |
| Fiat / crypto | Government currency (USD, EUR...) vs cryptocurrency (BTC, ETH, USDT...). The platform supports multi-currency display. | wallet |
| Transaction history | The filterable record of deposits, withdrawals, bets, wins, and transfers. | wallet |
| Chargeback | A reversed card payment a player disputes with their bank; a fraud/risk concern for the operator. | operator concern |
| Custody vendor | A crypto rail that holds keys and issues addresses on the operator's behalf; bound behind the same PaymentAdapter port as a PSP. |
wallet / PaymentAdapter |
| Deposit address | The address a player is told to send funds to. The address-to-player mapping lives only in this database and is the sole attribution of an inbound deposit. | wallet_deposit_address |
| Address class | How a network hands out receive addresses: utxo (many addresses per container), account (one per container, shared by every token on that chain), tag (one address, player named by a destination tag). Decides the vault topology. |
docs/standards/custody.md |
| Destination tag / memo | The field that names the beneficiary on a tag-class chain, where one address serves every account behind it. | wallet / PaymentAdapter |
| Sweep | Moving funds out of per-player custody containers into the pool that pays withdrawals. A liquidity operation: the player was already credited, and never sees it. | wallet_custody_sweep |
| Pool / omnibus | The pooled container holding swept player funds, and the source of every payout. Never shares a container with operator funds. | custody vendor |
| Reconciliation | The scheduled comparison of the ledger against the vendor's transactions, which catches a lost webhook. Findings are surfaced for an admin, never auto-credited. | wallet_reconciliation_finding |
| Asset catalog | The operator-editable (currency, network) pairs the platform accepts, with each pair's provider asset id, minimums, fee, and independent deposit/withdrawal toggles. |
wallet_asset |
| Term | Meaning | Maps to |
|---|---|---|
| Game provider | A studio/vendor supplying games, integrated behind an adapter. | gaming / GameAdapter |
| Aggregator | A single integration that fans out to many game providers' catalogues. | casino/gaming / AggregatorAdapter |
| Game round / session | One play cycle (bet -> result -> settle); a session groups rounds for a player at a game. | casino/gaming |
| Lobby | The browsable surface of games: categories, featured slots, search, recent activity. | lobby |
| RTP (Return To Player) | The long-run % of stakes a game pays back (e.g. 96%). The complement is the house edge. | game config |
| House edge | The operator's expected margin (100% - RTP). | game config |
| Provably fair | A scheme letting players verify a result wasn't tampered with: a server seed is committed (hash published) before the round, combined with a client seed and a nonce, then revealed for recomputation. | gaming (foundation) |
| Term | Meaning | Maps to |
|---|---|---|
| Notifications | In-game and email alerts (deposit confirmed, withdrawal status, game events, promotions). | engagement/notifications |
| VIP tiers | Loyalty levels granting perks based on activity (a consumer extension, not core). | consumer overlay under extensions/ |
| Affiliate | A partner who refers players for a revenue share. | operator concern |
| Term | Meaning | Maps to |
|---|---|---|
| Responsible gaming (RG) | Player-protection features required by most regulators. | compliance |
| Deposit / loss / wager limits | Player-set or mandated caps over a period. | compliance |
| Self-exclusion | A player blocking themselves from play for a set period. | compliance |
| Term | Meaning | Maps to |
|---|---|---|
| CMS | Operator-managed static pages and banners (T&C, FAQ, promos). | cms module |
| Notifications | In-app + email events (deposit confirmed, withdrawal status, bonus credited...). | notifications / NotificationDeliveryAdapter |
| Chat | Global and in-game messaging with soft moderation. | chat module |
| Tip / gift / rain | Player-to-player money mechanics in chat (tip one player; drop a claimable gift; "rain" a split across many). Consumer-specific social features, not core. | consumer plugin |
| GGR / NGR | Gross Gaming Revenue (stakes less voided stakes less wins); Net Gaming Revenue (GGR less bonus cost). The core operator KPI. | analytics |