All work

01 / 05

NexusGTO

A six-player poker AI that plays a blueprint strategy trained offline and searches once two or three players are left after the flop.

Heads-up in the blinds, a program built to exploit NexusGTO won about 115 big blinds per 100 hands from the blueprint alone. On the same 2,000 deals, it won 9.2 from the search, too close to zero to tell apart from luck.

  • C
  • Python
Year
2026
Role
Solo
NexusGTO6-max · 100bb

BTN Plays 45% of hands after three folds

Source: blueprint, 8.05B iterations

Year
2026
Role
Solo
Won by the search against five copies of the blueprint
+5.73 bb/100
Six-way benchmark solve, down from about 22 minutes
13.4 s
Lost to a program built to exploit it, down from about 115 with the blueprint alone
9.2 bb/100

01

How it works

NexusGTO follows the design of Pluribus, which in 2019 became the first program shown to beat elite professionals at six-player no-limit hold'em. A trainer in C computed NexusGTO's blueprint offline by self-play, with Monte Carlo counterfactual regret minimization.

Pluribus searched from the flop on with any number of players. NexusGTO searches only once two or three players are left after the flop, and each search gets 3 seconds on 8 CPU threads to re-solve the current betting round. In every other spot it plays the blueprint.

A 13 by 13 grid of starting hands, each cell split by how often the first player raises to 3.5bb, raises to 2.8bb, limps or folds. Across all 1,326 combos it raises to 3.5bb 2.7%, raises to 2.8bb 6.6%, limps 9.7% and folds 81.0%.
Fig. 1. The blueprint's opening strategy for the first player to act, hand by hand. Each cell shows how often that hand raises to 3.5bb, raises to 2.8bb, limps or folds, darkest for the biggest raise.

02

Speedups

A benchmark solve of a six-way flop took 22 minutes. I cached each hand's bucket for the length of a solve, which brought it to 52 seconds. Then I replaced hand evaluation with a table of every five-card hand, which cut it to 13.4 seconds on a second machine. That is still far over a search's 3 seconds, so six-way spots play the blueprint.

The first search ran on a GPU. Its time per iteration grew from 1.89 ms with two players to 2,049 ms with six. A CPU search that samples one hand per player slowed far less, so I moved the search to the CPU.

Bar chart of seconds per solve on a log scale: 1,324.8 before the changes, 52.2 after the bucket cache and 13.4 after the five-card table, which ran on a second machine.
Fig. 2. Time for one solve of a six-way flop benchmark, 250,000 iterations from a cold start, before the changes and after each one, on a log scale.

03

How it was tested

Both tests ran offline, with 100-big-blind stacks and no rake, and both used the search that tracks what its own play has given away about its hand. In the first, a program built to exploit NexusGTO played the search and the blueprint heads-up in the blinds on the same 2,000 deals. This best responder looks only one step ahead and bets only NexusGTO's own sizes, so a stronger program might still exploit the search.

In the second, the search played 14,250 deals of six-player matches against five copies of the blueprint. Each deal was replayed with the search in every seat, so that much of the card luck cancels out. Scored with AIVAT, which subtracts the luck it can calculate, the search won 5.73 bb/100 (95% interval 2.74 to 8.72).

Next project

BibleBuddy Kids