← all repositories
clarkerubber/irwin

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.

525 stars Python Domain Apps
irwin
Velocity · 7d
+0.2
★ / day
Trend
steady
star history

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.

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