← all repositories
bupticybee/TexasSolver

Open-source poker solver beats the commercial standard on speed

A C++ reimplementation of a Java solver that outruns PioSolver on flop scenarios—at the cost of 3× the RAM.

2.4k stars C++ Domain AppsOther AI
TexasSolver
Velocity · 7d
+1.0
★ / day
Trend
steady
star history

What it does

TexasSolver computes Game Theory Optimal (GTO) strategies for Texas Hold’em and short-deck poker. You feed it a betting tree (1–2 bets plus all-in on the flop), and it converges on equilibrium frequencies for each action. There’s a Qt GUI, a console version, and even a Google Colab notebook if you want to tinker without installing anything.

The interesting bit

The author rewrote their own Java solver in C++ and squeezed out a 5× speedup with less than a third of the memory footprint—then kept optimizing until this version actually beats PioSolver 1.0 on the flop (172 s vs. 242 s in their benchmark). The catch: it uses 1.6 GB RAM versus PioSolver’s 492 MB. Trading memory for speed is a classic move; here the numbers are right there in the README.

Key highlights

  • Results align with PioSolver (benchmark configs and logs are published)
  • Supports cross-language calls and JSON strategy export
  • Runs on Windows, macOS, and Linux
  • AGPL v3 licensed—free for personal use, commercial license required if you embed the code or offer it as a service
  • GPU successor (TexasSolverGPU) now exists; this repo is effectively the CPU legacy branch

Caveats

  • Memory hunger is real: 3.3× PioSolver’s footprint in the published benchmark
  • The README warns against redistributing binaries due to AGPL; linking is the only approved sharing method
  • Qt 5.1.0 is a fairly dated toolkit for the GUI

Verdict

Worth a look if you’re studying GTO poker, building training tools, or just want a reproducible solver to hack on. Skip it if you need the absolute fastest hardware-accelerated version—the GPU edition has superseded this one.

heatdrop uses Google Analytics to see which pages get read — nothing else. Your call. How we handle data.