Repositories openvibers openvibe.casino official

openvibers/openvibe.casino

Open source casino games that teach the odds: play chips worth nothing, a simulator, and never a payment.

Get it

Get this repository

Clone over HTTPS

A Git token is made for this copy and shown once. It can read and write the repositories you own, and expires in an hour.

git clone https://git.openvibe.codes/openvibers/openvibe.casino.git
Clone to my computer

OpenVibe Link asks you on your computer. The folder is inside the root you chose in Link, and the request ends after two minutes.

Clone to my computer
Open in Codes

A Codes session clones from our disk: no network, no GitHub quota. When this repository has a GitHub twin, Codes pushes there too.

Open in Codes

README.md

View file

OpenVibe.Casino

Learn it, play it, never pay it.

Live site: https://openvibe.casino · API docs: https://openvibe.services · For AI: https://openvibe.casino/llms.txt
Run it: npm ci && npm run dev (Node 22 or newer) · Tests: npm test

Domain: openvibe.casino · Port: 5210 · Service id: casino · Env prefix: CASINO

Every casino game with its insides showing: the rules, the exact odds and what each bet costs, tables you can play with
chips worth nothing, and a simulator that plays a million rounds in your browser. Plan: the new-domains plan, §5.14.

No real money, ever. Play chips are free, a fresh 1,000 arrive each day, they live in the player's browser, and they
cannot be bought, sold, won as anything or cashed out. No operator listings and no affiliate links: those wait for the
owner's legal review. The tables sit behind a self-declared 18+ gate, remind a player every 30 minutes, and every page
carries one calm line pointing at free help (1-800-GAMBLER, BeGambleAware, Gamblers Anonymous).

The engines (engine/)

Pure JavaScript, deterministic from a seed (rng.js, mulberry32), UMD so the same file runs on the server, at the table
and in the simulator's Web Worker.

| Engine | What it plays | How the edge is known |
|---|---|---|
| blackjack.js | 6 decks, S17, DAS, split to 4, split aces one card, peek, insurance, 3:2; basic strategy, "like the dealer", "never bust" | simulation; basic strategy checked against the published 0.40% |
| roulette.js | European and American, every layout bet | exact: 2.70%, 5.26%, top line 7.89% |
| baccarat.js | punto banco, 8 decks, the third-card tableau, 5% commission | exact, every six-card path weighted: 1.06 / 1.24 / 14.36% |
| craps.js | pass, don't pass, odds (3-4-5x), place, field | exact from the 36 dice outcomes |
| slots.js | three 24-stop reels, a paytable | exact over all 13,824 stops: RTP 93.63% |

engine/games.js is the catalogue every page and the API read; no edge in it is typed in.
test/engines.test.js checks every figure against Wizard of Odds' published one.

Pages

| Path | What |
|---|---|
| / | every bet's cost on one ladder, a real bankroll chart, what you can do, questions |
| /play, /play/:game | the tables (public/js/table.js), the 18+ gate, the chips (public/js/casino.js) |
| /learn, /learn/:game | the rules and each bet's edge, with the engine's own tables (basic strategy, the tableau, the strips) |
| /simulate | the simulator (public/js/simulate.js, public/js/sim-worker.js) |
| /s/:id | a shared run (noindex) |
| /safe, /developers | play safe; the API |

API (/api/v1, open, no key)

  • GET /games, GET /games/:id: rules, each bet's edge, how it is known and the published source.
  • POST /simulate { game, choice, rounds, seed?, share? }: a bounded run on the server (CASINO_SIM_MAX_ROUNDS,
    default 200,000; CASINO_SIM_PER_MINUTE per address, default 6). With share, the run is kept and its link answered.
  • GET /sims/:id: a shared run. GET /openapi.json: OpenAPI 3.1.

Data

One table, casino_sims (a shared run: game, params with the seed, result). No column names a person. Casino keeps
nothing about anyone, so an account export says so and a deletion has nothing to erase (server/identity/account-data.js).

The service

Express, server-rendered through openvibe-shared/shell and the room kit (rooms.js id casino). Sign-in through
OpenVibe.Network (OAuth client casino, PKCE). PostgreSQL through openvibe-sdk/db (migrations/), PGlite in
development and tests. Deploy files: deploy/systemd/openvibe-casino.service, deploy/nginx/openvibe.casino.conf
(Meme's, renamed). Env: .env.example.

npm install
npm run dev        # http://localhost:5210
npm test           # node test/run.js on PGlite

AGPL-3.0-only.

<!-- versions:start -->

  • openvibe-contracts: v0.419.0
  • openvibe-sdk: v0.161.0
  • openvibe-shared: v4.238.0

<!-- versions:end -->