September 2026 · version 2.4.0
TALOS
The Living Chess Studio
A chess studio in the spirit of Lucas Chess, rebuilt from the board up: its own engine, an adaptive coach, 112,000 real puzzles, the Anarchchess house rules and the Anarchess board game — on Windows, Linux, macOS, Android and in a browser tab.
Nothing to install. From a clone, run python tools/build_web.py
first — it writes the Python payload the page loads.
The idea
A studio, not just a board
Lucas Chess is the best chess teacher ever written for the desktop. TALOS keeps that feel — play, train, replay, repeat — and rebuilds the parts that age badly: the interface, the engine and the reach.
Familiar where it matters
Same rhythm as Lucas Chess: pick a level, play, get told where you went wrong, drill the position again.
Modern where it counts
Three palettes, a responsive layout, vector interface, no thousand-button toolbar. Dark, quiet, out of the way.
Yours, entirely
No accounts, no telemetry, no server. Everything — engine, database, gore, puzzles — runs on your machine.
Five editions, one core
Windows, Linux, macOS, a native Android APK and the browser all share the same chess core. The Android shell packages local web assets rather than just opening a hosted page.
Variants that are actually different
Anarchchess and full anarchy, plus Anarchess, a tile-laying strategy game from the same island as the studio.
Battle Chess when you want it
A switch, not an identity. Pieces walk, duel and shatter in procedural 3D — turn it on for the spectacle, off for study.
Playing strength
An engine that has to be respected
Search
- iterative deepening, aspiration windows
- principal variation search
- transposition table with generations
- static exchange evaluation
- null move, reverse futility, razoring*
- late move reductions + verification
- check, singular & recapture extensions
- killers, countermoves, continuation history
- quiescence with delta pruning
- triangular PV (exact, not reconstructed)
* razoring is measured and off: it prunes away sacrifices — 58.7 % → 73.3 % on the tactical suite when disabled.
Evaluation
- tapered material & piece-square tables
- pawn structure: doubled, isolated, passed
- phalanx and connected pawns
- mobility with safe squares, outposts
- bishop pair, rooks on open files & 7th
- trapped bishops and rooks
- king safety: shield, attack units, ring
- threats, space, tempo, smooth phase
Measured
109 / 150 (72.7 %) on the 150-position tactical suite (avg depth 3.9, ~5,700 nodes/second, pure Python).
Opponents
15 levels from 800 to 2550
| Level | Elo | Depth | Time |
|---|---|---|---|
| Pawn | 800 | 1 | 120 ms |
| Pawn+ | 950 | 1 | 200 ms |
| Wood | 1100 | 2 | 300 ms |
| Wood+ | 1200 | 2 | 400 ms |
| Stone | 1300 | 3 | 600 ms |
| Stone+ | 1400 | 3 | 800 ms |
| Club | 1500 | 5 | 1000 ms |
| Club+ | 1650 | 6 | 1500 ms |
| Expert | 1800 | 7 | 2000 ms |
| Expert+ | 1950 | 8 | 3000 ms |
| Master | 2100 | 9 | 4000 ms |
| Master+ | 2250 | 10 | 6000 ms |
| Master++ | 2350 | 11 | 8000 ms |
| Grandmaster | 2450 | 12 | 10000 ms |
| Grandmaster+ | 2550 | 14 | 15000 ms |
Levels are personalities, not just depths
Every level carries its own depth cap, thinking time and a deliberate blunder rate, so “Pawn” misses things the way a beginner does instead of playing a shallow perfect move.
Stockfish, when you want the truth
The in-app installer fetches a real Stockfish binary (about 113 MB, on demand, never in the repository) for analysis and for sparring far above the built-in levels.
Every variant, same engine
Move generation is delegated to the variant-aware board, so the engine also plays Chess960, Crazyhouse, Atomic, King of the Hill, Three-check, Horde, Racing Kings, Antichess and Anarchchess.
Variation 1
Anarchchess — 15 house rules, each a switch
The rules the community actually plays, collected from r/AnarchyChess, anarchychess.org and the bots. “Anarchchess” is the curated set; “Full anarchy” turns on all of them, including the ones that wreck a game.
- En passant is forcedIf en passant is on the table, you must take it - declining is not a move.
- KnooksMove a knight onto a friendly rook (or the other way round) and they fuse into a knook: rook and knight powers in one…
- c4 is explosiveThe first piece to land on c4 detonates and kills everything in a one square radius - rooks and knooks shrug it off.
- Double check is an instant winGive a double check and the game is over. (Pasta is optional.)
- The king cannot go to c2c2 is simply not available to a king, on either side of the board.
- Il VaticanoTwo friendly bishops three squares apart on a diagonal with enemy pieces between them swap places and everything in b…
- Siberian SwipeAn unmoved rook may take the enemy rook directly across the board on the same file, jumping over everything in between.
- Vertical castlingWith a rook on the king's file and a clear path, castle vertically.
- Knight boostPromoting to a knight (or a knook) earns you an immediate extra move.
- DismountAfter a knight has moved it may dismount and become a pawn.
- Radioactive queen decayTaking a queen irradiates the square: everything next to it dies too.
- Omnipotent pawnA pawn standing on h3 (white) or h8 (black) moves like any piece.
- Promotion roulettePromotions are random - and one time in five you get an enemy pawn.
- Hyper-accelerated BongcloudPlay Ke2/Ke7 as your second move and win on the spot by asserting dominance.
- Random eventsEach turn something may happen: an earthquake, a conscription, a fireball or a revolution that topples a random piece.
Variation 2
Anarchess — the land before Chess
A real abstract strategy game by Dimitris Grammenos (ICS-FORTH, Heraklion). Two proud tribes, no kings yet, growing a landscape out of 32 light and 32 dark tiles. Implemented from the designer's own rulebook rather than reconstructed from a summary. The two further published games, Anarchess SOLO and Anarcheckers, are independent desktop entries and browser pages, not modes attached to this board.
A turn
- The die names a colour: that is the tile you must lay, and the tribe of the other colour plays it.
- Then one pawn action, if you want it: settle a pawn from your reserve onto the tile you just laid, step one square, or attack across a diagonal.
- A tile touching only one other must be of the opposite colour. Attacks need no support — a lone pawn can take one.
Scoring
An area is a maximal group of edge-connected tiles of one colour. Areas of two or more tiles score for whichever tribe holds most of them: 2 points a tile, 3 when the area matches its owner's colour or is held by a lone pawn, but only 1 in the largest area, which the rules tax. Single tiles are worth nothing, and every pawn left in the reserve costs 6.
SOLO is one player against a target of 192; Anarcheckers steps and captures on the diagonals, with forced jumps.
Feature
Battle Chess, on demand
A switch, not an identity
The studio is a study tool first. Battle Chess mode is a toggle in the toolbar: on for the spectacle, off for analysis.
- Thirty original duels — every legal attacker/victim pair has a named approach, strike, impact and recovery. The idea is classic living chess; the geometry, choreography and foley are TALOS's own.
- Each encounter leaves an appropriate stylised trace: dust, glass, rubble, sparks or optional fantasy blood.
- Procedural geometry, physics and synthesised sound — no copied models, animation data or sound library, and no downloads for art.
- Four pacing choices: Full stage, Combat only, Walks only and Still board. Study never has to wait for spectacle.
- Input, analysis, engine replies and the result dialog wait for an active encounter instead of overwriting it.
Why procedural?
A hand-built arena, stage lights and piece silhouettes let the game feel theatrical while keeping it fast, local and original. The board focuses gently on a duel, then returns to a useful chess view.
Pieces that walk
Each rank crosses the board in its own way. The knight leaves the ground altogether; the rook takes two enormous paces and lands like a dropped wall; the bishop barely touches the floor; the king waddles. Six gaits, thirty original encounters.
Training
An adaptive coach over real Lucas data
Not generated drills
Every puzzle is parsed out of the real Lucas Chess sets: tactics, mates in N, endgames, the Strategic Test Suite and positional collections. Nothing is procedurally invented.
A coach that schedules
Each puzzle you touch gets a box. Get it right and it drifts further away (half a day → two days → a week → a month). Miss it and it comes back tomorrow. Accuracy, streak and what is due are always visible.
Availability
One codebase, five editions
| Edition | What you install | Engine | Offline |
|---|---|---|---|
| Windows | Inno Setup installer, or a portable zip.
Adds .pgn file associations. |
Python core + optional Stockfish | yes |
| Linux | One-folder build + install.sh
into ~/.local; ships a .desktop file and
AppStream metadata. | Python core + optional Stockfish | yes |
| macOS | PyInstaller .app bundle in a
ZIP. Unsigned until a maintainer adds Apple signing. |
Python core + optional Stockfish | yes |
| Android | A native Capacitor APK packages the local web payload. Every tag builds an installable debug APK; signed release APKs use a maintainer-owned key. | Python core under Pyodide | after first runtime boot |
| Browser | Nothing at all. https://mylittlestories.github.io/talos/ →
play. A service worker caches the whole studio. |
Python core under Pyodide | after first load |
Battle Chess mode (real-time 3D) and Stockfish are desktop-only; everything else — engine, levels, puzzles, Anarchchess, Anarchess SOLO, Anarcheckers and the coach — is shared across the supported editions.
Architecture
The same Python, in a tab
The real modules
tools/build_web.py copies engine.py,
anarchchess.py, anarchess/rules.py,
anarchess/ai.py and vendored python-chess into
web/python/. No rewrites, no ports.
A worker runs them
Pyodide boots in a Web Worker, mounts those files and imports
bridge.py: a JSON-in / JSON-out API. The UI never blocks
while the engine thinks.
Everything is cached
A service worker stores the shell, the Python core and the sets. The 2 MB puzzle file is fetched only when you open a set, then cached. Second visit: works with the wifi off.
1.1 MB
Python core, vendored and ready.
89 checks
tools/web_smoke.mjs
boots the payload in Node and plays a game, a puzzle and an Anarchess
turn on every push.
0 requests
to any TALOS server, ever. There is no TALOS server.
Identity
A mark made of both parents
- The knight — Lucas Chess' own silhouette, drawn as a vector so it survives being 16 pixels wide.
- The loose tiles — Anarchess' board before it was squeezed into the rigid chessboard: light and dark squares, floating free, no 8×8 grid yet.
- The amber plate — the Cretan light the studio was built in, and the accent colour of the whole interface.
17 files
from a 16 px favicon to a 1024 px master, plus maskable and Apple touch variants.
Drawn, not prompted
tools/make_icon.py rasterises real glyphs and lays
out the tiles, so the set can be regenerated exactly.
Readable at 16 px
Measured: the knight fills 61 % of the mark and the tiles stay legible down to the favicon.
Shipping
Tag it, and everything updates
CI, on every push
Self-tests on Linux, macOS and Windows across three Python versions, a packaging smoke build, and the browser smoke test.
Tag v2.4.0
Three build jobs produce a Windows zip, a Linux tarball and a macOS
app zip, and a release job lifts that version's section out of
CHANGELOG.md.
Draft release + Pages
A draft release appears with the notes and a
SHA256SUMS.txt; publishing it publishes the site too:
the deck as the landing page, the playable app at
/web/.
Reproducible
Every artefact is built from a clean checkout by the same script you can run locally.
Verifiable
sha256sum -c against
the checksums attached to the release.
Reversible
Releases open as drafts — nothing goes out until somebody reads it and presses publish.
Next
What is left, honestly
Soon
- Deeper search: the bench suite is at 109 / 150 (72.7 %); the next wins are in move ordering and the endgame tables.
- More of the Lucas corpus: openings trainer and the replay database in the browser edition.
- Optional richer Battle stage variants without compromising its original procedural asset policy.
- A signed Android release APK and macOS notarised build — both need maintainer-owned signing identities, not fabricated CI keys.
Contributing
./tools/setup_env.sh, thenpython run.py.python tools/selftest.pymust stay at 100 %, and every change adds a check.- Engine changes must quote
tools/bench.pynumbers in the pull request. - GPL v2 or later, like Lucas Chess.
TALOS is named for the bronze guardian of Crete: made on the island, for the island, and for anyone who wants a chess studio that is theirs.