Privacy Policy
The short version
- Local-first. Your games, repertoires, and training progress live on your device. All engine analysis (Stockfish, Maia, Reckless) runs entirely on-device.
- No accounts. Fianchetto has no sign-up, no login, and no servers of its own. We never receive your data.
- No ads, no analytics. The app contains no advertising, analytics, telemetry, crash-reporting, or tracking code of any kind.
- Nothing is sold or shared. We don't collect your data, so there is nothing to sell or share.
- Network requests happen only for features you use — such as importing your games from Chess.com or Lichess — and they are read-only requests sent directly to those services.
Data stored on your device
Fianchetto stores your chess library locally: game collections and games with annotations, opening repertoires, personal traps, tactics and training progress (ratings, spaced-repetition state, drill history), cached analysis results, and your app preferences.
On Apple platforms this lives in the app's private database and settings. On Android it lives in app-private files and preferences. No other app can read this data through Fianchetto.
iCloud sync (Apple platforms)
On iOS, iPadOS, and macOS, Fianchetto uses Apple's iCloud to keep your data in sync across your own devices, always within your own Apple ID:
- Library sync (CloudKit). Your library and training progress sync through the private iCloud database of the app's container. This happens only when you are signed in to iCloud; without an iCloud account, the app runs fully locally. Fianchetto never uses shared or public iCloud databases.
- Automatic iCloud Drive backups. By default, the app writes a daily backup of your library (games, repertoires, training progress, and selected settings) to a visible "Fianchetto" folder in your iCloud Drive when the app goes to the background. It keeps the last 7 backups by default; you can change the count (1–30) or turn automatic backups off in Settings. Backups never include your Lichess API token.
- iCloud Keychain. If you save an optional Lichess API token, it is stored in the system Keychain and syncs across your devices via iCloud Keychain (see below).
All iCloud data stays inside your Apple ID and is handled by Apple under Apple's privacy terms. Fianchetto has no access to it outside your devices. The app also uses silent iCloud push notifications solely to trigger sync; there is no user-facing push messaging.
Online imports & chess services
Fianchetto operates no servers. When you use an online feature, the app talks directly to the relevant chess service over HTTPS. Every request to these chess services is a plain HTTPS GET that carries only the minimal query described below — a username you typed, a board position (FEN), or a game ID. The app never uploads your library, game files, or exports to these services. (Your library does travel to Apple's iCloud and Game Center as described in the sections above and below.) Specifically:
Chess.com game import
When you import games or press "Update Games" for a Chess.com collection, the app sends the username you typed to api.chess.com to fetch that player's public game archives. No token or authentication is ever sent to Chess.com. These requests happen only when you initiate an import or update — there is no background syncing of online accounts.
Lichess game import
When you import games from Lichess, the app sends the username you typed plus your chosen filters (opening, date, rated, time control, color) to lichess.org. If you have saved an optional Lichess API token, it is included so Lichess can apply your access level; otherwise the request is anonymous. Again, this happens only when you initiate it.
Lichess opening explorer
The opening explorer is off until you turn it on (by loading explorer data or enabling its follow-along mode). Once on, the app sends the position on your board (as a FEN string) to explorer.lichess.org to fetch statistics — one request per position you view. If you have saved a Lichess API token it is included so Lichess can apply your access level; otherwise the request is anonymous. Results are cached in memory only.
Lichess endgame tablebase
For positions with 7 or fewer pieces, the app can query the Lichess tablebase at tablebase.lichess.ovh, sending only the position (FEN) — never a username or token. In the Analysis view this is off by default and probes only after you turn it on. In the Endgame trainer, tablebase lookups happen automatically when you start a drill, to verify the position; if the network is unavailable, the app falls back to on-device Stockfish.
Sharing a Lichess link into the app (iOS)
If you share a lichess.org game link into Fianchetto, the share extension fetches that game's PGN from lichess.org using only the game ID from the link, always anonymously (the extension never has access to your token). Chess.com links are not supported and are rejected with an error.
Game Center (Apple platforms)
Online turn-based play uses Apple's Game Center. If you play online, your moves and game outcomes travel through Apple's Game Center servers, and opponents see your Game Center display name. The app also reports achievements and two leaderboards (tactics rating and total tactics solved) to Game Center. Note that the app asks Game Center to authenticate automatically at launch — a network contact with Apple that Apple mediates under its own terms; if you decline Game Center sign-in, the app's features do not re-prompt you.
Each of these services processes the data it receives (your typed username, a position, a game ID, or Game Center moves) under its own privacy policy: Lichess, Chess.com, and Apple.
Optional Lichess API token
You can optionally paste a Lichess personal API token into Settings to raise Lichess rate limits for game imports and the opening explorer. This is the only credential in the entire app.
- Where it goes: it is sent only to
lichess.organdexplorer.lichess.org, over HTTPS, as an authorization header. It is never sent to Chess.com, the tablebase service, or anywhere else, and the share extension cannot access it. - Where it's stored (Apple platforms): in the system Keychain, accessible only when your device is unlocked, and synced across your devices via iCloud Keychain. It is deliberately excluded from library backup files.
- Where it's stored (Android): in the app's private preferences. This storage is private to the app but is not hardware-encrypted the way the Apple Keychain is, and — like the rest of the app's data — it may be included in your device's Android OS backup to your Google account (an operating-system feature, not something the app does). If that concerns you, you can skip saving a token on Android or disable Android device backup.
You can remove the token at any time in Settings.
Device permissions
Bluetooth
Used only to connect a supported electronic chessboard — Square Off Pro, Chessnut, ChessUp 2, or Millennium eONE. Moves travel directly between your device and the board over Bluetooth; nothing about your board play is sent over the internet. On Android 12 and later, the app uses the modern Bluetooth-scan permission with the "never for location" flag. On Android 6 through 11, the platform's own Bluetooth-scan API will not return nearby devices unless a location permission is held; the app requests it solely as that scan gate — declared with maxSdkVersion="30" so newer devices never see it — and never uses it to determine your location.
Microphone & speech recognition
Used only for voice move entry, and only while you are using it.
- Apple platforms: the app requests on-device speech recognition whenever your device and language support it, in which case audio never leaves the device. On devices or locales without on-device support, Apple's speech recognition service processes the audio on Apple's servers. The app supplies only the legal move names for the current position as recognition hints.
- Android: voice entry uses the device's system speech recognizer (typically Google's). The app asks the recognizer to prefer on-device processing; if an offline model is not available on your device, the recognizer may process the audio on the provider's servers. When a spoken move cannot be matched to a legal move, or matches more than one, the app keeps the transcribed text (never the audio) with the board position in a small on-device log, capped at 200 entries, to help improve recognition — it never leaves your device.
Android permissions the app requests
INTERNET— the user-initiated online features described aboveRECORD_AUDIO— voice move entryBLUETOOTH/BLUETOOTH_ADMIN(older Android),BLUETOOTH_SCAN(flagged never-for-location),BLUETOOTH_CONNECT— electronic board (Square Off Pro, Chessnut, ChessUp 2, Millennium eONE)ACCESS_FINE_LOCATION(maxSdkVersion="30", Android 6–11 only) — required by the platform's Bluetooth-scan API on those versions to discover a board; never used for locationVIBRATE— move haptics
Bundled support libraries would otherwise add housekeeping permissions of their own — WAKE_LOCK, ACCESS_NETWORK_STATE, RECEIVE_BOOT_COMPLETED, and FOREGROUND_SERVICE — for background-task scheduling that Fianchetto does not use; the app's manifest strips all of them, so they are absent from the installed app. The only library-added entry that remains is an app-private signature permission that keeps the app's internal broadcasts private; it grants no access to your data.
No location permission is requested on Apple platforms or on Android 12 and later. On Android 6 through 11, the location permission noted above is requested only as the platform-required Bluetooth-scan gate and is never used to determine your location.
Electronic chessboards
Move data between your device and a supported electronic chessboard travels over Bluetooth Low Energy only — it is never sent to the internet. The app supports the Square Off Pro, Chessnut, ChessUp 2, and Millennium eONE boards. No account, registration, or vendor cloud service is required or contacted by the app; the board's position is held only in memory while it is connected.
Performance Elo estimate
The Elo performance estimate in the Stats view is computed entirely on your device from your own annotated games, using a calibration model trained on the public-domain Lichess Open Database (CC0). No rating data is fetched from Lichess, Chess.com, FIDE, or any other service — it is a local estimate, not an official rating.
What we never collect
- No accounts, sign-ups, or passwords for Fianchetto itself.
- No analytics, telemetry, crash reporting, advertising, or tracking SDKs — the app contains none.
- No access to contacts, photos, health data, or calendars — the app never requests them. No location access is used on Apple platforms; on Android 6 through 11 the location permission described under Bluetooth is the platform's BLE-scan gate only, and the app never reads location data.
- No fingerprinting, no ads, no selling or sharing of data — we never receive your data in the first place.
- No hidden network activity: requests to the chess services above happen only when you use those features, and they only download. The only uploads are to your own iCloud (sync and the daily backups, which you can turn off) and to Game Center when you play online — both described above. Electronic-board communication uses Bluetooth only, with no internet component.
This website
This site (fianchettochess.app) is a static site hosted on GitHub Pages. It sets no cookies, runs no analytics, and makes no requests to third parties. GitHub, as the host, may log standard web-server request data under GitHub's privacy statement.
Changes to this policy
If the app's behavior changes in a way that affects your privacy, this policy will be updated before that version ships, with a new effective date at the top of this page.
Contact
Questions about this policy or the app: support@fianchettochess.app.