Version 1.0 · GitHub repository
Chess Recorder is an iOS app for recording chess games by voice. Speak your moves in plain language — square names, piece names, captures, castling, and undo — and the app updates the board, builds the move list, and can export the game as PGN. Optional on-device engine analysis shows evaluation, a principal variation, and a best-move arrow while you record.
Contents: Features · Requirements · Building · Usage · Project layout · License · Contributing · Contact · Acknowledgments
- Record moves with the device microphone using Apple’s on-device speech recognition
- Chess-specific language model with common English and German move phrases
- Teach custom phrases and corrections when recognition fails
- Configurable dictation pause before a move is committed
- Live transcript with pause countdown while recording
- Interactive board with optional touch input for manual moves
- Move list and PGN export (share sheet)
- Flip board orientation
- Customizable board colors, coordinates, and piece size
- Integrated Stockfish analysis via LucidEngine
- Evaluation bar, algebraic main line, and best-move arrow (each optional)
- Move validation and game logic via ChessKit
- Undo, new game, and PGN archive support
- Device: iPhone or iPad running iOS 26.5 or later (see
IPHONEOS_DEPLOYMENT_TARGETin the Xcode project) - Development: Xcode with Swift 5 and Swift Package Manager
- Permissions: Microphone and speech recognition (requested at runtime)
-
Clone the repository
git clone https://github.com/pguntermann/ChessRecorder cd ChessRecorder -
Download Stockfish NNUE weights (required for engine analysis)
./Scripts/fetch-stockfish-nnue.sh
This places the network files in
StockfishNNUE/. If you build from Xcode before the LucidEngine package is resolved, run./Scripts/prepare-lucid-engine-nnue.shafter a first resolve/build to copy them into the package checkout. -
Open and build in Xcode
- Open
Chess Recorder.xcodeproj - Select the Chess Recorder scheme and a simulator or device
- Build and run (
⌘R)
- Open
Swift Package Manager fetches ChessKit and LucidEngine automatically.
xcodebuild -scheme "Chess Recorder" -destination "platform=iOS Simulator,name=iPhone 16" buildAdjust the simulator name to match an installed runtime.
- Grant microphone and speech recognition access when prompted.
- Tap Record and speak a move (e.g.
e4,Knight f3,Castle kingside, or German equivalents such asSpringer f3,Kurz rochiert). - Pause briefly when finished — the app waits for the configured dictation pause, then plays the move.
- Use Undo by voice or tap pieces when Touch input is enabled in Settings.
- Export the game from the notation panel via the share button.
In-app help (? in the toolbar) lists supported phrase patterns for English and German.
- Speech language (English / Deutsch) and dictation pause
- Engine analysis visibility, depth, evaluation bar, algebraic line, and arrow
- Board appearance and touch input
- Learned phrases and corrections
| Path | Purpose |
|---|---|
Chess Recorder/ |
App source (SwiftUI views, speech, game logic, services) |
Chess Recorder.xcodeproj |
Xcode project and SPM package references |
Scripts/ |
NNUE download and LucidEngine preparation scripts |
StockfishNNUE/ |
Stockfish neural network files (not in git; fetched by script) |
LICENSE |
GPLv3 license for Chess Recorder |
THIRD_PARTY_LICENSES.md |
Third-party software and asset licenses |
Chess Recorder is released under the GNU General Public License v3.0 (GPL-3.0).
Stockfish is linked into the app for engine analysis, which requires GPL-compatible licensing for distributed binaries. See LICENSE for the full text and THIRD_PARTY_LICENSES.md for dependency and asset notices.
Issues and pull requests are welcome on GitHub. Please keep changes focused and include a short description of what you tested.
Philipp Guntermann — pguntermann@me.com
Chess Recorder builds on several open-source projects:
- ChessKit — chess rules and move generation (MIT)
- LucidEngine — Swift wrapper around Stockfish (GPL-3.0 engine core)
- Stockfish — chess engine (GPL-3.0)
- eco.json — FEN-based ECO opening name lookup (
eco_base,eco_interpolated; MIT) - lichess chess-openings — ECO opening TSV files used as the authoritative opening data source (CC0)
- cburnett SVG chess pieces — Wikimedia Commons (CC BY-SA 3.0 / GFDL 1.2)
Full license texts and attribution details are in THIRD_PARTY_LICENSES.md.
Copyright (C) 2026 Philipp Guntermann
Licensed under the GNU General Public License v3.0 (GPL-3.0)