How dheirav/nashforge works
NashForge is a heads-up no-limit Hold’em bot centered on abstracted-game CFR solving. Its main path is game rules and card/betting abstraction into a solver, then a stack-depth strategy ladder into arena action selection. The README also describes alternative evolutionary and PPO agents, benchmark instruments, opponent profiling, and river re-solving. Several subsystems are documented but not sampled, so their internal wiring is shown only where the README supports it.
Main entry points: game.py Hold’em rules · player.py Arena player · nolimit.hpp Native game · nolimit.py Abstract no-limit
Components 23
Poker game
- Hold’em rules
engine/game.py - Cards and evaluation
engine/hand_eval.py - Card abstraction
abstraction/buckets.py - Bet schedules
abstraction/betting.py - Abstract no-limit
games/nolimit.py
CFR solving
- Training entry
scripts/cfr/train_nolimit.py - Native game
native/src/nolimit.hpp - MCCFR core
native/src/mccfr.hpp - Python bindings
native/src/bindings.cpp - Python CFR solvers
cfr/mccfr.py - River re-solver
cfr/river.py
Alternative learning
- Evolution search
training/evolution.py - Self-play fitness
training/fitness.py - PPO trainer
rl/ppo/trainer.py - Poker environment
rl/poker_env.py
Bot runtime
- Strategy tables
cfr/flat.py - Arena player
chipzen/player.py - Opponent profiling
chipzen/opponents.py - Arena client
chipzen/client.py - Chipzen arena
- Slumbot bridge
slumbot/bridge.py
Evaluation
- Benchmark loop
evaluation - Interactive viewer
gui/game_controller.py
Connections 22
- Training entry → MCCFR core: trains through
- Python bindings → MCCFR core: exposes
- MCCFR core → Native game: traverses
- Native game → Card abstraction: buckets hands
- Native game → Bet schedules: uses schedules
- Abstract no-limit → Card abstraction: buckets hands
- Abstract no-limit → Hold’em rules: uses rules
- Hold’em rules → Cards and evaluation: evaluates hands
- Training entry → Card abstraction: configures
- Python CFR solvers → Abstract no-limit: traverses
- River re-solver → Strategy tables: re-solves from
- Arena player → Strategy tables: selects strategy
- Arena player → Opponent profiling: adjusts using
- Arena client → Arena player: requests actions
- Arena client → Chipzen arena: connects to
- Slumbot bridge → Arena player: bridges strategy
- Evolution search → Self-play fitness: evaluates genomes
- Self-play fitness → Hold’em rules: plays hands
- PPO trainer → Poker environment: collects transitions
- Poker environment → Hold’em rules: steps game
- Benchmark loop → Strategy tables: scores strategy
- Interactive viewer → Hold’em rules: plays hands