chessplaza
A virtual chess plaza with AI-powered chess hustlers, each with their own unique personality and playing style.
Think of Washington Square Park in NYC, or Dupont Circle in DC (but not any specific, exact place!) – places where chess hustlers gather to play, banter, and challenge passersby. This project brings that experience to your terminal, powered by LLMs.
Roadmap
Phase 1: Claude Agents epoch (shipped in 0.1.0)
- Chess hustler personas powered by Claude Agents SDK;
- Integration with UCI chess engines via chess-uci-mcp;
- Different hustler personalities: the trash-talker, the philosopher, the speed demon, the old master...
- Game/chat loop using Claude Agents SDK.
Phase 2: Experimentation epoch
- Basic voice output (Edge-TTS), complementing the text UI;
- Voice input (Whisper) to call out your moves (and words) instead of keyboard input;
- Switchable UI: command-line vs PySide-based (with proper chess board).
Phase 3: LangGraph/Gemini epoch
- Switching to Gemini, for LLM but specifically for advanced text-to-speech (each with distinct voice characteristics, intonations, etc);
- (Because of Gemini switch) Migrating from Claude Agents SDK to
GenAISDK (TTS, one-shot queries) and LangGraph (game/chat loop).
Prerequisites
- Claude Code authenticated (install), or
ANTHROPIC_API_KEYenvironment variable; - uv package manager (install);
- Stockfish or another UCI chess engine (download).
Usage
# Via uvx (PyPI release)
uvx "chessplaza[voice]" /usr/local/bin/stockfish
# Via uvx (latest from GitHub)
uvx --from "git+https://github.com/AnglerfishChess/chessplaza[voice]" chessplaza /usr/local/bin/stockfish
# From source
git clone https://github.com/AnglerfishChess/chessplaza.git
cd chessplaza
uv run chessplaza /usr/local/bin/stockfish
Options (work with any launch method):
--voice/-v- enable text-to-speech--language <lang>/-l <lang>- play in a different language (e.g., Spanish, Russian)--use-github-deps- use bleeding-edge GitHub versions of dependencies (unstable, for development)
Development setup
git clone https://github.com/AnglerfishChess/chessplaza.git
cd chessplaza
uv sync --extra voice
uv run chessplaza /usr/local/bin/stockfish
Building Redistributables
PyInstaller is included in dev dependencies for building standalone apps. Full build instructions coming soon.
Troubleshooting
macOS: Microphone not working (voice input)
If voice input records silence or doesn't work, your terminal app likely lacks microphone permissions.
Fix:
- Open System Settings → Privacy & Security → Microphone
- Find your terminal app (Terminal, iTerm2, VS Code, etc.) and enable it
- If not listed, the app hasn't requested access yet – try restarting the app
Verify via command line:
# Check which apps have microphone access
tccutil list Microphone
Still not working? Reset permissions to trigger a fresh prompt:
# For Terminal.app
tccutil reset Microphone com.apple.Terminal
# For iTerm2
tccutil reset Microphone com.googlecode.iterm2
Related Projects
- chess-uci-mcp - MCP bridge to UCI chess engines
- esca - the MIT-licensed Rust/Python chess library: rules, position facts, PGN, opening books and names
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 chessplaza-0.1.0.tar.gz.
File metadata
- Download URL: chessplaza-0.1.0.tar.gz
- Upload date:
- Size: 19.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c3871091ed98d88acca75ea16f0b9eeb2506e28f292396a6cd04053f3faef44e
|
|
| MD5 |
f0d055b0cd04263e8523b87487df0542
|
|
| BLAKE2b-256 |
490dffa360371568fcb8094f7a93586854c42cabb4d5bf4860650557f7ce65f8
|
Provenance
The following attestation bundles were made for chessplaza-0.1.0.tar.gz:
Publisher:
publish.yml on AnglerfishChess/chessplaza
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
chessplaza-0.1.0.tar.gz -
Subject digest:
c3871091ed98d88acca75ea16f0b9eeb2506e28f292396a6cd04053f3faef44e - Sigstore transparency entry: 2716678148
- Sigstore integration time:
-
Permalink:
AnglerfishChess/chessplaza@5a4f59a3d4f79e6d4fb01d4cb8b57b41a49f4b11 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/AnglerfishChess
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5a4f59a3d4f79e6d4fb01d4cb8b57b41a49f4b11 -
Trigger Event:
release
-
Statement type:
File details
Details for the file chessplaza-0.1.0-py3-none-any.whl.
File metadata
- Download URL: chessplaza-0.1.0-py3-none-any.whl
- Upload date:
- Size: 18.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7517abe1cee81cc1e6a5ce9d94b981101d0617989c028dd024cfb00836bc728c
|
|
| MD5 |
890187def16664fece9230d3b8039155
|
|
| BLAKE2b-256 |
871ff2162be6c4bcbb664cf77bb2c1f18baaa97e25077c488f2b5825f02f6231
|
Provenance
The following attestation bundles were made for chessplaza-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on AnglerfishChess/chessplaza
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
chessplaza-0.1.0-py3-none-any.whl -
Subject digest:
7517abe1cee81cc1e6a5ce9d94b981101d0617989c028dd024cfb00836bc728c - Sigstore transparency entry: 2716678188
- Sigstore integration time:
-
Permalink:
AnglerfishChess/chessplaza@5a4f59a3d4f79e6d4fb01d4cb8b57b41a49f4b11 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/AnglerfishChess
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5a4f59a3d4f79e6d4fb01d4cb8b57b41a49f4b11 -
Trigger Event:
release
-
Statement type: