Gambit
Vol. I · Correspondence edition
days per move, not minutes
Wear OS · Lichess · Stockfish

Chess, on your wrist.

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.

Your moveopponent played e5
Morphy vs. the Duke and the Count, Paris 1858, replayed on the watch.

Everything on the board.

§ 1 · features

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.

Moving on a tiny screen

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.

The whole game

Promotion picker, draw offers, resignation (confirmed, obviously), the move list, and in-game chat with quick replies or your voice.

Notifications

Your opponent moved. A game started. A game ended. Someone challenged you. Your wrist knows before your phone does.

The social bits

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.

Daily puzzle

Lichess's puzzle of the day, solved on your wrist, counted toward your puzzle rating.

Five complications.

for your watch face
3your move

Games waiting on you

1d 4hvs magnus_fan

Most urgent game, live countdown

⏱clock ring

Time left, at a glance

✓puzzle

Daily puzzle, ticked once solved

1912corresp.

Your correspondence rating


Stockfish, after the fact.

§ 2 · reviews
you playedbest move

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.

You
87%
Opponent
72%
?! 2 inaccuracies? 1 mistake?? 0 blunders

Games still in progress are refused. Fair play is not optional.


How it's built.

§ 3 · architecture
⌚ The watchKotlin, Compose for Wear OS. Talks only to the server, with its own key.
LAN, or Funnel
when away
🖥️ gambit.pyHolds the Lichess token. Watches games, validates moves, runs Stockfish.
Lichess API
♞ lichess.orgYour games, your account, untouched by the watch.

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.


Setting up.

§ 4 · install

The server

# 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

The watch

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