Projects
app2026–now

ilo: Chess Trainer with a Live Coach

My own chess trainer: close to chess.com, but mine to change and without a subscription. Stockfish 19 rates every move instantly and for free in the browser, Claude explains on demand for about a cent, and moves can simply be called out by voice. Play the computer, Claude, friends online, face to face in table mode or four-player chess.

Stockfish WASMClaude APISpeech RecognitionReactTypeScriptHonoPostgreSQLPWAVisit
Overview

ilo is my own chess trainer for the browser, on a laptop, tablet or phone. Every move gets an instant verdict, hints are one tap away, and when I want to know why a move was bad, I ask Claude. I play Stockfish at ten levels, Claude, friends online, two players at one device or four-player chess, in German or English.

Why build my own? chess.com is the obvious reference, and the resemblance is deliberate in places: the same kind of move verdicts, a Glicko rating like theirs, their four-player rules. The difference is that ilo is mine. When I want something, I build it (voice moves, a table mode for a tablet lying between two players, my own backgrounds), and it's live the same evening. There is no subscription: the engine runs for free in the browser, and I pay Claude directly through the API, only when I tap for an explanation. That's about a cent with Opus and a fraction of a cent with Haiku.

Try it at chess.dehlwes.net (the Visit button above). Registration is open; the Claude features are unlocked per account.

Voice control
Voice control asking 'Did you mean Bc4?' with a yellow arrow on the board
Voice control: the recognizer heard “Life See a feel”, so ilo matches the sound against all legal moves and asks “Did you mean Bc4?”
Screens
Live coach: verdict, win chance, the better move and the opponent's threat as an arrow
Analysis of Morphy's Opera Game (1858), computed by Stockfish in the browser
Table mode: the tablet lies between two players
Four-player chess on the 14×14 board
Start page with the beach background
Backgrounds: gradients, photos or your own picture
On the phone
A live coach, free in the browser

“How good was that move?” is answered not by a language model but by Stockfish 19 compiled to WebAssembly. It runs on your own device, costs nothing and works offline.

  • A verdict on every move in real time, from brilliant to blunder, with chess.com's win-chance thresholds
  • Win chance and evaluation bar, the opening name and the better move with its line
  • Two-step hints, a threat arrow and takebacks
  • Post-game analysis: accuracy for both sides (Lichess formula), an evaluation graph, PGN/FEN import and your own chess.com games via chess.com's official read-only API
Call out your moves

Say “knight f3”, “e takes d5” or “castle kingside”, in German or English, against the computer, at the tablet or online.

  • In the browser voice activity detection cuts out each utterance and sends only those snippets, and only on your turn
  • Speech recognition runs on Parakeet, self-hosted on Nexus, my deployment platform; audio and transcripts are never logged or stored
  • Matching checks the transcript against every legal move and plays only when exactly one fits; table talk triggers nothing
  • Fast: a first snapshot after ~200 ms of silence puts a clear move on the board ~0.35 s after you stop speaking
  • Mishearings: “Life See a feel” instead of “Läufer c4”? ilo compares the sound with all legal moves and asks “Did you mean Bc4?” with a yellow arrow
Claude as coach, for a few cents

Claude only comes in when words are needed, and only when you tap.

  • “Why?” on any move, free questions about the position and a game review with turning points, strengths, weaknesses and a training focus
  • Claude as an opponent with selectable strength and style, also as a seat in four-player chess
  • Cheap by design: instead of an open question Claude gets a compact fact sheet checked by Stockfish, plus prompt caching, an answer cache and a monthly budget. A cost counter logs every request. An explanation costs about a cent, with Haiku a fraction of that.
Play the way you want
  • Online with friends: by link or direct challenge, live moves, the server as referee, chat, draw, rematch
  • Table mode: the tablet lies between two players and each side has its own panel turned towards them; side by side on a laptop
  • Four-player chess on the 14×14 board: free-for-all or 2 vs 2, every seat a human, a bot or Claude
  • Ratings: Glicko-1 for bullet, blitz and rapid, online, against the trainer and two players at one device; the server replays every rated game before it counts
  • Offline: installed as a web app, games against Stockfish keep running without a connection
Make it yours

Four gradients, thirteen photos (chess pieces, beach, northern lights, marble) or your own picture as the background. Five board colours, nine piece sets, profile pictures for every player and a short welcome tour after the first sign-in.

Under the hood
  • Frontend: React 19, Vite, TypeScript, Tailwind CSS v4, shadcn/ui, chessground, chess.js, Stockfish 19 as WebAssembly in two Web Workers, a service worker for offline play
  • Backend: Node 24 with Hono, PostgreSQL, server-sent events, the Anthropic Messages API (Claude Opus 5.5, switchable to Haiku per feature)
  • Voice: AudioWorklet and voice activity detection in the browser, Parakeet on Nexus
  • Hosting: self-hosted on Nexus; accounts with scrypt-hashed passwords and database sessions