An LLM bot with exact numerical tools that clears Balatro on the real game, including Black Deck on Gold Stake.
Python
11
111 commits
updated Sep 25, 2026
To our knowledge, the first publicly documented bot to beat Balatro on Black Deck / Gold Stake — widely regarded as the game's toughest deck at its highest difficulty. Two fresh random seeds, two verified wins, both with a hand to spare. Watch the victory and inspect the full traces.
Two Black Deck / Gold Stake wins. Ante 13 in endless. A 134-billion-chip hand.
GPT-6 Astra plays real Balatro: building a deck, buying Jokers, choosing hands, and pushing into endless mode. The model makes the strategic decisions; Python supplies numerical tools and executes legal actions through BalatroBot. It plays from public information, with no access to the seed, hidden draw order or future shops.
| Black Deck · Gold Stake | Endless · Red / White | Peak single hand · Red / White |
|---|---|---|
| 2 fresh-seed wins | Ante 13 reached | 134,231,931,235 chips |
| Victory traces | The run | Scoring evidence |
Watch it play · Results · Quick start · How it works · Docs
One full game in twenty seconds. The game on the left, the live dashboard on the right. This Red Deck / White Stake run cleared Ante 8, reached Ante 11 in endless, and peaked at 7,052,918 chips in one hand. No human gameplay input; one automatic recovery. Watch the MP4 · Read the run trace.
The model makes strategic decisions; Python supplies calculations, validates responses and sends actions to the game. Scoring is exact for supported deterministic situations; random or hidden effects can limit the advice available. How it works.
A win means clearing the Ante 8 boss. These are documented runs from several bot versions, not a measured win rate or a guarantee of reliable wins.
| Setting | Demonstrated result | Evidence |
|---|---|---|
| Red Deck / White Stake | Five published Astra Ante 8 clears across earlier versions; highest ante reached: 13 | Results and run disclosures |
| Red Deck / White Stake, highest score | 134,231,931,235 chips in one hand | Ante 13 run |
| Black Deck / Gold Stake | Two fresh-seed wins: 435,408 / 400,000 and 420,305 / 400,000, both with one hand unused | Full traces and rules audit |
| Non-model baselines | Best policies won 3 of 20 games on a fixed Red/White seed panel | Benchmark tables |
The coached runs are not a matched comparison with the baseline panel. Development included losses, some earlier games used fixes between segments, and the two Black/Gold wins do not establish a success rate. The reports retain failures, restarts, policy versions and scoring discrepancies.

The recorded Black/Gold win. Both fresh-seed wins cleared the Ante 8 boss with one hand unused. Full traces and cumulative stake-rule audit.
Red Deck / White Stake: dots show baseline games; stars show individual model runs. The best baseline policies won 3 of 20 games on the fixed seed panel. The Astra runs demonstrate deeper endless play, but use different policy versions and mostly different seeds; this is not a matched win-rate comparison. Complete benchmark tables.
Dots show the best single hand in each blind; the grey steps show the chip requirement. A blind can take multiple hands to clear. These are the archived Red/White runs; the Black/Gold wins are reported separately above. Scoring details and run disclosures.
Requires Python 3.11+, macOS or Linux, your own copy of Balatro with BalatroBot installed, and access to the configured model through a signed-in Codex CLI. This repository includes no game assets. Run these commands from a local checkout:
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
codex login
Start the game server headlessly in one terminal:
BALATROBOT_ALL_UNLOCKED=1 uvx balatrobot serve --fast --headless --logs-path runs/logs
In another terminal with the same virtual environment activated:
balatro doctor
balatro play --output runs/game-001
The default is Red Deck / White Stake, stopping after the Ante 8 win. To play Black Deck / Gold Stake instead:
balatro play --deck BLACK --stake GOLD --output runs/black-gold-001
Use --endless to continue after Ante 8. Each run uses model calls and records
its result and action history. Run one game instance at a time.
Run limits, resumes, supervision and inspection.
The published runs use the native game with BalatroBot automation and an all-unlocked profile. This bypasses content unlock progression; it is a modded setup, not a fresh-account achievement run. The Black/Gold report checks every cumulative stake rule against the recorded game state.
The bot uses numerical assistance rather than vision alone. Its decisions can be suboptimal, scoring advice has coverage limits, and model-service timeouts can interrupt runs. Reliability across a representative seed set remains unmeasured. Evaluation methodology.
Tests use recorded observations and fake transports; they do not start the game or spend model calls.
pip install -e '.[dev,bench]'
pytest -q
ruff check .
python -m benchmarks
For small checks before a full run, see decision probes. See CONTRIBUTING.md for validation and evidence requirements, and the documentation index for technical details.
Code is licensed under the GNU Affero General Public License v3.0 or later (LICENSE). Documentation, evidence and generated results are CC BY 4.0 (LICENSE-DOCS). Balatro is a game by LocalThunk, published by Playstack; this project is unaffiliated and includes no game assets. BalatroBot is MIT licensed by Coder. See NOTICE. To cite, use CITATION.cff.
111 commits
Python
94.6%
HTML
4.3%
An LLM bot with exact numerical tools that clears Balatro on the real game, including Black Deck on Gold Stake.
Python
11
111 commits
updated Sep 25, 2026
To our knowledge, the first publicly documented bot to beat Balatro on Black Deck / Gold Stake — widely regarded as the game's toughest deck at its highest difficulty. Two fresh random seeds, two verified wins, both with a hand to spare. Watch the victory and inspect the full traces.
Two Black Deck / Gold Stake wins. Ante 13 in endless. A 134-billion-chip hand.
GPT-6 Astra plays real Balatro: building a deck, buying Jokers, choosing hands, and pushing into endless mode. The model makes the strategic decisions; Python supplies numerical tools and executes legal actions through BalatroBot. It plays from public information, with no access to the seed, hidden draw order or future shops.
| Black Deck · Gold Stake | Endless · Red / White | Peak single hand · Red / White |
|---|---|---|
| 2 fresh-seed wins | Ante 13 reached | 134,231,931,235 chips |
| Victory traces | The run | Scoring evidence |
Watch it play · Results · Quick start · How it works · Docs
One full game in twenty seconds. The game on the left, the live dashboard on the right. This Red Deck / White Stake run cleared Ante 8, reached Ante 11 in endless, and peaked at 7,052,918 chips in one hand. No human gameplay input; one automatic recovery. Watch the MP4 · Read the run trace.
The model makes strategic decisions; Python supplies calculations, validates responses and sends actions to the game. Scoring is exact for supported deterministic situations; random or hidden effects can limit the advice available. How it works.
A win means clearing the Ante 8 boss. These are documented runs from several bot versions, not a measured win rate or a guarantee of reliable wins.
| Setting | Demonstrated result | Evidence |
|---|---|---|
| Red Deck / White Stake | Five published Astra Ante 8 clears across earlier versions; highest ante reached: 13 | Results and run disclosures |
| Red Deck / White Stake, highest score | 134,231,931,235 chips in one hand | Ante 13 run |
| Black Deck / Gold Stake | Two fresh-seed wins: 435,408 / 400,000 and 420,305 / 400,000, both with one hand unused | Full traces and rules audit |
| Non-model baselines | Best policies won 3 of 20 games on a fixed Red/White seed panel | Benchmark tables |
The coached runs are not a matched comparison with the baseline panel. Development included losses, some earlier games used fixes between segments, and the two Black/Gold wins do not establish a success rate. The reports retain failures, restarts, policy versions and scoring discrepancies.

The recorded Black/Gold win. Both fresh-seed wins cleared the Ante 8 boss with one hand unused. Full traces and cumulative stake-rule audit.
Red Deck / White Stake: dots show baseline games; stars show individual model runs. The best baseline policies won 3 of 20 games on the fixed seed panel. The Astra runs demonstrate deeper endless play, but use different policy versions and mostly different seeds; this is not a matched win-rate comparison. Complete benchmark tables.
Dots show the best single hand in each blind; the grey steps show the chip requirement. A blind can take multiple hands to clear. These are the archived Red/White runs; the Black/Gold wins are reported separately above. Scoring details and run disclosures.
Requires Python 3.11+, macOS or Linux, your own copy of Balatro with BalatroBot installed, and access to the configured model through a signed-in Codex CLI. This repository includes no game assets. Run these commands from a local checkout:
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
codex login
Start the game server headlessly in one terminal:
BALATROBOT_ALL_UNLOCKED=1 uvx balatrobot serve --fast --headless --logs-path runs/logs
In another terminal with the same virtual environment activated:
balatro doctor
balatro play --output runs/game-001
The default is Red Deck / White Stake, stopping after the Ante 8 win. To play Black Deck / Gold Stake instead:
balatro play --deck BLACK --stake GOLD --output runs/black-gold-001
Use --endless to continue after Ante 8. Each run uses model calls and records
its result and action history. Run one game instance at a time.
Run limits, resumes, supervision and inspection.
The published runs use the native game with BalatroBot automation and an all-unlocked profile. This bypasses content unlock progression; it is a modded setup, not a fresh-account achievement run. The Black/Gold report checks every cumulative stake rule against the recorded game state.
The bot uses numerical assistance rather than vision alone. Its decisions can be suboptimal, scoring advice has coverage limits, and model-service timeouts can interrupt runs. Reliability across a representative seed set remains unmeasured. Evaluation methodology.
Tests use recorded observations and fake transports; they do not start the game or spend model calls.
pip install -e '.[dev,bench]'
pytest -q
ruff check .
python -m benchmarks
For small checks before a full run, see decision probes. See CONTRIBUTING.md for validation and evidence requirements, and the documentation index for technical details.
Code is licensed under the GNU Affero General Public License v3.0 or later (LICENSE). Documentation, evidence and generated results are CC BY 4.0 (LICENSE-DOCS). Balatro is a game by LocalThunk, published by Playstack; this project is unaffiliated and includes no game assets. BalatroBot is MIT licensed by Coder. See NOTICE. To cite, use CITATION.cff.
111 commits
Python
94.6%
HTML
4.3%