Do I need MySQL or any other database?
No. Everything is stored as JSON files in the data/ folder, which keeps the install portable and makes backups a simple file copy.
Can I run tournaments, or only cash games?
Both. Any table can become a tournament: the seated players vote the buy-in, the level length, the
payout split, the late-registration window, the rebuys and the break schedule, then everybody pays
the buy-in from his account and the blinds start climbing. Breaks pause the blind clock, a late
player can still join while the window is open, a busted player gets a 30-second rebuy offer and the
winner is paid automatically. Details in the
Tournament Mode chapter.
Is the shuffle fair — can the cards be predicted?
No. Each hand is shuffled on the server with PHP's cryptographic generator
random_int() — seeded by the operating system, the same class of generator
Node.js exposes as crypto.randomInt() — inside a Fisher–Yates loop. There is
no rand(), mt_rand() or shuffle() anywhere in the code, one
fresh deck is used per hand, cards are removed as they are dealt (so duplicates are impossible) and
the deck never reaches the browser. A 200,000-shuffle uniformity test returned 0 invalid decks and
passed every chi-square check — the functions, the numbers and how to re-run it are in the
User Guide.
Can players add bots?
Yes, it is on by default: use the Add bot button at the table. The admin can turn bots off
completely (POKER_BOTS_ALLOWED) or keep them for himself
(POKER_BOTS_ADD_BY_PLAYERS = false) — both switches live in the Bots tab of
the settings page, and the button disappears for players when they are off.
Do the bots play differently from each other?
Yes. Each bot draws one of four archetypes when it sits down — TAG (40%), Rock
(25%), LAG (25%) and Station (10%) — on top of the same GTO + Monte-Carlo engine:
different preflop ranges, open sizes, the price it will call, c-bet and bluff frequencies, plus a
thinking time that follows the style and how close the decision is (never above 4.5 s). Nobody
picks the style; turning POKER_BOT_STYLES_ENABLED off makes every bot identical again.
Details in the User Guide.
How do I change the blinds and the starting stack?
Table & Rooms tab of the settings page (admin.php?cfg=1):
POKER_SB, POKER_BB and POKER_START_CHIPS. They apply to
new tables, and a seated player can change the blinds of the table he is on — unless you
switch that off (POKER_BLINDS_BY_PLAYERS).
Can I turn the chat off?
Yes — POKER_CHAT_ENABLED in the Game tab; the chat tab and its limits
disappear from the table. The moderated word list grows with POKER_BANNED_EXTRA
in the same card.
How many players can sit at one table?
Between 2 and 9, set with POKER_SEATS. The felt adapts to whatever number is seated, and you can resize a table while it is running: growing keeps the hand, shrinking only cancels it when a seated player or the blinds would fall on a removed seat (chips are refunded).
Do the themes need an internet connection?
No. Most bundled themes load a display font from Google Fonts, but that is optional: remove the @import line at the top of a theme's theme.css to make it fully offline.
Do I need an API key for the bots?
No. The bots run on the built-in engine with GTO-informed ranges and Monte Carlo equity. A DeepSeek API key is purely optional and off by default.