Lichess built a detective that studies your chess moves
Irwin is the anti-cheat engine that learns how cheaters play by grinding through games with Stockfish and TensorFlow.

What it does Irwin analyses chess games on Lichess to spot likely cheaters. It feeds player games through Stockfish, then runs the data through TensorFlow neural networks trained on known cheating patterns. Flagged accounts get reported to moderators for human review.
The interesting bit
The architecture is deliberately modular: modules/irwin houses the ML brain, but the README notes it “can be replaced with other approaches to player assessment.” The core (modules/core) handles BSON serialisation, database interfaces, and generic datatypes—boring infrastructure that makes the swap possible. Also, it’s named after Steve Irwin, which is either charming or slightly ominous for the accused.
Key highlights
- Uses Stockfish analysis of principal variations (PVs) to detect anomalous engine-like play
- Trains on a database of analysed players; needs “a few hundred” to get started
- Modular design separates ML logic from data plumbing and Lichess API interaction
- Companion web app exists for visualising reports (screenshot in README)
- Replaces an earlier system called “cheatnet” with a “dramatically more modular” and faster approach
Caveats
- Setup is involved: requires MongoDB, Stockfish config, Lichess API token, and TensorFlow installation
- No mention of current maintenance status; 526 stars but no recent activity indicators in the provided sources
- Training data requirements are vague—“a few hundred” players is a hand-wavy starting point
Verdict Worth a look if you run a chess platform or study anti-cheat systems. Skip it if you want a drop-in tool; this is infrastructure you assemble and tune yourself.