Correspondence chess is the slow kind. Which makes it perfect for a watch: a buzz when your opponent moves, a glance at the board, a think over lunch, a tap to move.
Gambit lists your correspondence games with the ones waiting on you first, and the time left on each. Open one and the board appears in your own Lichess theme, with whichever piece set you use on the site.
Tap a piece, tap a square. Taps snap to the nearest movable piece or legal square, so fat fingers don't matter. The bezel zooms, a drag pans, and every move asks you to confirm before it goes anywhere.
Promotion picker, draw offers, resignation (confirmed, obviously), the move list, and in-game chat with quick replies or your voice.
Your opponent moved. A game started. A game ended. Someone challenged you. Your wrist knows before your phone does.
Accept or decline challenges, challenge a friend, or post an open seek from one to fourteen days per move. See which friends are online, follow, leave private notes, send a message.
Lichess's puzzle of the day, solved on your wrist, counted toward your puzzle rating.
Games waiting on you
Most urgent game, live countdown
Time left, at a glance
Daily puzzle, ticked once solved
Your correspondence rating
Finished games get a full review from Stockfish running on the server: accuracy for both sides, every inaccuracy, mistake and blunder, and each mistake shown on a board with what you played and what you should have.
Games still in progress are refused. Fair play is not optional.
The Lichess token never leaves the server. The watch authenticates with a separate key compared in constant time, and the server is the only thing that ever speaks to Lichess: an event stream for challenges and game starts, a poll for opponent moves, python-chess for legality, Stockfish for the post-mortem.
# gambit.env: LICHESS_TOKEN, WATCH_KEY, PORT=8460 pip install chess cairosvg scp server/gambit.py server/gambit.env box:~/lichess-watch/ scp server/systemd/gambit.service \ box:~/.config/systemd/user/ ssh box 'systemctl --user enable --now gambit' # read-only self-test, never moves anything python selftest.py http://127.0.0.1:8460 WATCH_KEY
cp gambit.properties.example gambit.properties
# server.key = WATCH_KEY
./gradlew :app:assembleRelease
adb install -r app/build/outputs/apk/release/app-release.apk
adb shell cmd package compile -m speed \
-f com.rusty.gambit