Scan64
Play chess. Discover your blind spots. Train what you fail to see.
Scan64 is an open-source, local-first chess playing and learning platform. Play against computer opponents, study famous openings and games, practise tactics and endgames, analyse your matches, and follow structured training sessions—all within one application.
What makes Scan64 different is its personalized learning engine. Instead of merely showing engine evaluations and best moves, it studies your games over time to identify the threats, patterns, calculations, opening ideas, and behavioural habits you repeatedly overlook. It then turns those weaknesses into verified interactive exercises, progressive visual hints, and an adaptive training curriculum.
Scan64 uses engines such as Stockfish for authoritative analysis and can use human-like opponents such as Maia for realistic practice. Its headless backend produces portable LessonSpec objects, allowing web, mobile, desktop, voice, and physical-board applications to build their own learning experiences on top of the same engine.
Run locally
Prerequisites:
- uv for the Python 3.12+ backend.
- pnpm for the React web client.
- Stockfish 18 or later, available as
stockfishonPATH.
Clone and install both applications:
git clone https://github.com/Mathews-Tom/Scan64.git
cd Scan64
uv sync --locked
pnpm --dir apps/scan64-web install --frozen-lockfile
Start the API at http://127.0.0.1:8001 and the web client at http://127.0.0.1:5173:
scripts/run.sh
Open http://127.0.0.1:5173, choose Play Game, enter a player ID, and start a game. The active player identity is then retained locally. To exercise player-owned PGN import, choose Import PGN, paste this game, and select Import PGN:
[Event "Local game"]
[White "White"]
[Black "Black"]
[Result "*"]
1. e4 e5 *
SCAN64_DATABASE_URL accepts a SQLite database URL. The default is sqlite:///database.db, preserving the existing relative database.db location. Set it before running the script to store the database elsewhere:
SCAN64_DATABASE_URL="sqlite:////absolute/path/to/scan64.db" scripts/run.sh
Maia model weights
Scan64 can use Maia only with checkpoints provisioned by the operator. It does not bundle, download, cache, redistribute, or host Maia model weights. The licence and redistribution terms for the separately released Maia checkpoint files remain unresolved; upstream clarification is tracked in CSSLab/maia-chess#76. Operators must confirm their right to obtain and use any checkpoint before configuring it. Follow the operator provisioning guide for the local, fail-closed setup.
Language models are optional and are used only to verbalize verified analysis and provide conversational coaching. Chess legality, exercise validation, player modelling, and learning progress remain deterministic, inspectable, and available for fully local use.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file scan64-0.2.0.tar.gz.
File metadata
- Download URL: scan64-0.2.0.tar.gz
- Upload date:
- Size: 979.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.6.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
46b8daa389094ab3693768e94d66332b5353db2a02dddfc345a8aeac1e94e862
|
|
| MD5 |
968f1f462c4bf07df30c33f9c4accaf3
|
|
| BLAKE2b-256 |
538c875e3dc931e58d402d3be40ff9fc9f06f2b142d09a31ee42e4b42faf9331
|
File details
Details for the file scan64-0.2.0-py3-none-any.whl.
File metadata
- Download URL: scan64-0.2.0-py3-none-any.whl
- Upload date:
- Size: 179.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.6.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
17ea2019a6a1f0b036bad0d39bb66c53184483f13ae6d3804f1dee9eea1de6cd
|
|
| MD5 |
aea773463f07f69ff588a67c9abb1057
|
|
| BLAKE2b-256 |
fdca3f530253c815d50e0e67e42fcd7f36227586698c5f8a17aaa22579262d0c
|