Skip to main content

Blindfold chess CLI with built-in engines

Project description

ch0 - Blindfold Chess CLI

PyPI Python License: GPLv3

A minimal terminal game for playing blindfold chess against built-in engines.

  • Install it as a standalone CLI tool
  • Play by entering SAN moves (e4, Nf3, exd5, a8=Q) plus a handful of helpful commands (show, fen, pgn, …)
  • Includes bundled engines (Sunfish, Andoma) and a “bring your own UCI engine” mode

Install

With uv (recommended)

uv tool install play-ch0

With pip

python -m pip install --upgrade play-ch0

Requires Python 3.13+.


Run

After installing, you can launch the game with either entrypoint:

ch0
# or
play-ch0

You’ll start in a lobby where you pick an engine + color, then start.


Quick start gameplay

  • Enter SAN moves: e4, Nf3, exd5, a8=Q, …

  • Or enter commands like:

    • show - show the board (useful if you “peek”)
    • moves - list moves
    • fen - print current FEN
    • pgn - print current PGN (also printed at game end)
    • resign - resign
    • help - show available commands
    • quit - exit

Commands can also be prefixed with : (e.g. :show).

The engine moves automatically on its turn.


Opening book (optional)

If you place a Polyglot opening book file named book.bin in the current working directory when you run ch0, the game will use it for opening-book moves.


Engines

Available options:

  • random - plays random legal moves
  • andoma - bundled engine
  • sunfish - bundled engine
  • uci - use any external UCI engine (e.g., Stockfish) by providing a command/path; played via python-chess

Notes:

  • Sunfish and Andoma are third-party projects vendored under src/ch0/engines/. I don’t create or maintain them.
  • On Windows, ANSI colors work better if colorama is installed (it’s auto-used when present).

Development (from source)

If you want to hack on the repo instead of installing from PyPI:

git clone https://github.com/menisadi/ch0
cd ch0
uv sync
uv run ch0

Licenses / third-party

  • This project is licensed under GPLv3 (see LICENSE).
  • Sunfish is distributed under the GNU General Public License; see src/ch0/engines/sunfish/LICENSE.md.
  • Andoma is distributed under the MIT License; see src/ch0/engines/andoma/LICENSE.

TODO

  • Fix turn bookkeeping - remove game.turn and rely on board.turn
  • Update move numbering / PGN formatting using board.turn before pushing moves
  • Sunfish: validate emitted UCI move is legal
  • Make Polyglot book usage optional
  • Show a subtle “(book)” indicator when a book move is used
  • Add undo (at least one ply)
  • Add status / check command that reports check-like info
  • Decide and implement draw policy: claimable vs automatic handling of draws
  • Add optional PGN autosave to a file (date/engine/color in file-name)
  • Add "illegal moves" count (printed at the end)
  • Add Stockfish bundling or automatic UCI discovery

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

play_ch0-1.2.1.tar.gz (394.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

play_ch0-1.2.1-py3-none-any.whl (97.8 kB view details)

Uploaded Python 3

File details

Details for the file play_ch0-1.2.1.tar.gz.

File metadata

  • Download URL: play_ch0-1.2.1.tar.gz
  • Upload date:
  • Size: 394.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for play_ch0-1.2.1.tar.gz
Algorithm Hash digest
SHA256 e4ba50a63636feb3013650a5b8ada3a72697f8efdb8e7a1889732c70346d20c5
MD5 76d2f85db29b589a6df2966115e29af6
BLAKE2b-256 409ff28308957913053d88b416f7875e8d533723eb376d9f2806a8afb12aaf0c

See more details on using hashes here.

File details

Details for the file play_ch0-1.2.1-py3-none-any.whl.

File metadata

  • Download URL: play_ch0-1.2.1-py3-none-any.whl
  • Upload date:
  • Size: 97.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for play_ch0-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1cdd0b2af7a39924e2b69ee8363c9d33fc83931798753fbef2aefe5565729114
MD5 7f6abfb6b65be00c2ad41700af968587
BLAKE2b-256 c64d27618722bf523123c0da05a8261c210b462657b655ccd3056163f1d86555

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page