A chess engine written from scratch in C++. No Stockfish, no Leela, no borrowed code — every bitboard, every pruning rule and every evaluation term is its own. It plays rated games on lichess as ProsperoBot, and it is still getting stronger.
The engine
Tempest is a complete alpha-beta chess engine: bitboard move generation, a principal-variation search with the modern pruning stack, a hand-written tapered evaluation, endgame tablebases, and time management that knows when to keep thinking. It speaks UCI, so it runs under any chess interface — but it spends most of its life on lichess, playing strangers.
On honesty about strength. This site quotes no invented Elo. The engine's rating is whatever lichess says it is after a few thousand rated games, and the Elo figures attached to individual changes come from self-play matches under a sequential probability ratio test — colour-swapped opening pairs, stopped when the likelihood ratio resolves, not when the number looks good.
Changes that failed that test were reverted, including several that seemed obviously correct at the time.
Playing strength
Every point on this chart was earned against a real opponent on lichess. The engine arrived in July at roughly 2200 and spent the month climbing — not smoothly, and not without the two visible collapses that followed changes later found to be regressions.
Measured over 200 recent games. The amber marker is what its rating says it should score. Tempest punishes weaker opponents far above expectation and under-performs against stronger ones — the signature of an engine that converts mistakes well but struggles to create an advantage on its own.
Elo measured in self-play against the immediately preceding build. Every large validated gain in this project has been structural — search shape and time allocation — never a new evaluation term.
Recent development
Development runs in rounds: mine the engine's own games for a defect, reproduce it as a failing test, fix it, then prove the fix in a few thousand games before it ships.
Sample games
Real rated games from lichess, replayable move by move. Four wins against opponents rated 2600 and above, one six-move mate, and — because they are more instructive — two losses to the opponents it cannot beat.
Nemeses
Every engine has them. What makes these interesting is that Tempest does not blunder against them — against bot_adario it errs at less than half its own average rate and still loses. It is not making mistakes. It is being outplayed, which is a much harder problem to find and a much harder one to fix.
The other half of the picture. Against opponents it out-rates, Tempest scores far above what its rating predicts.
Roadmap
For a while the plan was to mine lost games for evaluation blind spots. That work was real but the findings kept coming back small, and the reason turned out to be structural: an audit that compares the evaluation against a search using that same evaluation can only ever detect self-contradiction, never self-consistent error. The current plan targets the search itself.