Chess Analysis and Review Application
User Manual
Version 2.7.1
CARA (Chess Analysis and Review Application) is a full-featured desktop application designed for analyzing and reviewing chess games. Unlike chess playing applications or puzzle solvers, CARA focuses exclusively on post-game analysis and review, helping you understand your games, identify mistakes, recognize patterns, and improve your chess understanding.
The development of CARA was motivated by the author's underwhelming experience with existing (and sometimes quite expensive) chess analysis tools, which often fell short in terms of usability, practical workflow integration, and the ability to deliver meaningful, actionable insights. Many applications overwhelmed users with unnecessary complexity and provided superficial analysis that didn't translate into genuine improvement. CARA was created to bridge this gap, offering an intuitive interface that makes deep game analysis accessible in an efficient manner while providing the detailed insights needed to understand not just what moves were played, but why they were played and how to improve.
CARA was built in large part by an AI model under the author's direction. The author took special care to ensure the AI adhered to the established architectural guidelines and coding conventions throughout the development process, while proposing the features, user stories, and UX design. This project served as an experiment to explore the feasibility of building a full-fledged, complex desktop application with Python using AI code completion, testing whether modern AI tools can produce polished, fully-featured software when guided by clear architectural principles and consistent oversight.
CARA is built with PyQt6 and follows PyQt's Model/View architecture with additional separation of business logic using Controllers and signal observation patterns, ensuring a responsive user interface and clean separation of concerns. Views observe models through Qt's signal/slot mechanism, automatically updating when model data changes, while Controllers orchestrate business logic and coordinate between services and models. Following a strict coding convention, all UI styling, including fonts, colors, sizes, and dimensions, is defined in a centralized configuration file with no hardcoded values in the view components. This allows for complete customization of the application's appearance without modifying code. The application supports multiple chess engines via the UCI (Universal Chess Interface) protocol, so you can use any UCI-compatible engine (for example Stockfish, Lc0, Komodo, Shredder).
If you’re not sure what to install, see section 7.10 “Recommended Chess Engines”.
Whether you're analyzing your own games, studying master games, or reviewing games from online platforms like Lichess or Chess.com, CARA provides the tools you need to gain deep insights into chess positions, moves, and patterns.
CARA offers an extensive set of features designed to support thorough chess game analysis and review. Here are the main capabilities:
These features work together to provide a complete analysis environment, from importing and organizing games to deep positional understanding and statistical insights.
This manual provides comprehensive documentation for CARA, covering everything from installation and basic usage to advanced configuration and troubleshooting. The manual is organized into seven main sections:
Navigation: Use the Table of Contents at the top to quickly jump to any section. All section headings are clickable links that navigate directly to that content. Cross-references throughout the manual link to related sections for easy navigation.
CARA relies on the following open-source libraries:
The author would like to express sincere appreciation to the developers and maintainers of these open-source projects. Their dedication and excellent work have made this application possible, and their contributions to the open-source community are invaluable.
The default chess pieces CARA ships with are the classic SVG set created by User:Cburnett and hosted on Wikimedia Commons. These pieces are distributed under the dual licenses Creative Commons Attribution-ShareAlike 3.0 and GNU Free Documentation License, which permit reuse and modification as long as attribution is provided and derivative works remain under the same license terms. Full details and download links for every piece in the set are available in the SVG chess pieces collection on Wikimedia Commons. We extend our thanks to Cburnett and the Wikimedia Commons community for maintaining these high-quality, freely reusable chess assets.
CARA uses two types of opening resources for identifying book moves and classifying chess openings:
ECO Database: The application includes an ECO (Encyclopaedia of Chess Openings) database based on the eco.json project by hayatbiralem, licensed under the MIT License. This extensive database contains over 12,000 known opening variations and is a collation of multiple chess opening sources including lichess, SCID database, Wikipedia, ChessTempo, and other public chess databases. The original eco.json data was compiled by Ömür Yanıkoğlu, with credit to Shane Hudson for the original SCID opening data. The database files (eco_base.json and eco_interpolated.json) were merged from the original source files (ecoA.json, ecoB.json, ecoC.json, ecoD.json, ecoE.json) that were organized by ECO code starting letter, simplifying lookup operations while maintaining complete coverage of chess opening theory.
Polyglot Opening Books: CARA supports Polyglot-format opening books, a binary format originally developed by Fabien Letouzey. The application includes a collection of Polyglot opening books organized by opening type (all openings, closed, flank, Indian, open, semi-closed, and semi-open). These books were compiled from publicly available sources and converted to the Polyglot format. For more information about the Polyglot format and tools, see the Polyglot repository maintained by sshivaji (a fork of Fabien Letouzey's original work).
Both resources work together to provide complete opening identification: the ECO database offers position-based classification with standardized codes and names, while the Polyglot books provide move-based detection of book moves during game analysis.
The author would like to express sincere appreciation to the creators and maintainers of these opening resources.
CARA (Chess Analysis and Review Application) is released under the GNU General Public License version 3 (GPL-3.0).
The GPL-3.0 license grants you the following freedoms:
When distributing CARA (whether modified or unmodified), you must:
GPL-3.0 was chosen for CARA because:
For the complete license text, see the LICENSE file in the CARA distribution or visit gnu.org/licenses/gpl-3.0.html.
Special thanks to the members of the HIARCS chess forum for their help in testing and refining the application.
.tar.gz per architecture).
macOS users: Due to macOS security settings, you may need to allow the app to run. If you see a security warning when trying to open the app, follow these steps:
Manual Installation: The following sections describe how to manually install Python and CARA dependencies, if you don't want to use the pre-built application bundles.
Before installing CARA, ensure your system meets the following requirements:
The application has been tested on Windows 11, macOS Tahoe 26.2, and Linux Ubuntu, Debian (Gnome) and Fedora (KDE Plasma). Linux app bundles are provided for x86_64 (amd64) and aarch64 (arm64).
Python 3.8 or higher is required. CARA uses PyQt6, which requires Python 3.8+. See section 3.2 for installation instructions.
A minimum screen resolution of 1280×1024 pixels is recommended. Some dialogs require at least 800 pixels in width and 900 pixels in height to display properly. Lower resolutions may cause dialogs to be cut off or difficult to use.
No specific hardware requirements beyond what is needed to run Python and the operating system. For optimal performance when analyzing games with chess engines, a modern multi-core processor is recommended.
CARA requires Python 3.8 or higher. If you don't have Python installed, you can install it using the methods below:
Method 1: Using Windows Package Manager (Recommended)
Open PowerShell or Windows Terminal and run:
winget install Python.Python.3This automatically installs Python and adds it to your PATH.
Method 2: Manual Download
Method 1: Using Homebrew (Recommended)
If you have Homebrew installed, open Terminal and run:
brew install python3Method 2: Manual Download
After installation, open a terminal (PowerShell/Command Prompt on Windows, Terminal on macOS) and run:
python --versionThis should display the Python version number (e.g., "Python 3.11.5").
Note: On macOS, you may need to use python3 instead of python to access Python 3.
Windows PATH Troubleshooting: If you see a "python is not recognized" error on Windows, Python may not be in your system PATH. Re-run the installer and ensure "Add Python to PATH" is checked, or manually add Python to your system PATH:
C:\Users\YourUsername\AppData\Local\Programs\Python\Python3XX or C:\Python3XX).Win+X and select "System", then click "Advanced system settings".C:\Python3XX\Scripts).CARA requires several Python libraries to function (see section 2.1 for a complete list). These can be installed all at once using the provided requirements file.
pip --version in your terminal.
cd path/to/carapath/to/cara with the actual path to your CARA installation directory.pip install -r requirements.txtpip listIf pip is not available after installing Python, you can install it manually:
get-pip.py script from bootstrap.pypa.io/get-pip.py and save it to a folder on your computer.get-pip.py, and run:python get-pip.pypython3 instead of python.pip --versionIf you prefer to install dependencies individually instead of using the requirements file, you can install each library separately:
pip install PyQt6>=6.6.0pip install python-chess>=1.999pip install requests>=2.31.0pip install asteval>=0.9.31pip install charset-normalizer>=3.0.0After installing all dependencies, verify they are installed correctly using pip list.
App bundles: Download the bundle for your platform, extract it, and start CARA from the extracted folder.
To start CARA, open a terminal (PowerShell or Command Prompt on Windows, Terminal on macOS), navigate to the CARA directory, and run:
python cara.pyNote: On macOS, you may need to use python3 instead of python.
CARA uses three configuration files to manage settings and preferences:
app/config/ directory and defines the visual appearance and behavior of the application. You can customize CARA's appearance by modifying this file without changing any source code.The file location for user_settings.json and engine_parameters.json is determined by CARA's configuration settings. By default, these files are stored in the CARA root directory.
However, when running CARA as an app bundle, the files are stored in different locations:
%APPDATA%\CARA\ (usually C:\Users\YourUsername\AppData\Roaming\CARA\).~/Library/Application Support/CARA/.$XDG_DATA_HOME/CARA/ (if set) or ~/.local/share/CARA/.Win+R, type %APPDATA%\CARA, and press Enter to open the folder in File Explorer.⌘+Shift+G (Go to Folder), type ~/Library/Application Support/CARA, and press Enter.CARA provides an integrated environment for analyzing and reviewing chess games. The application window is organized into three main panels that work together to give you complete insight into your games: the Main Panel displays the chessboard and game information, the Detail Panel provides detailed analysis views and tools, and the Database Panel manages your game collections.
The interface is designed to be intuitive and efficient. You can resize panels by dragging the splitter handles between them, customize which information is displayed, and use keyboard shortcuts for quick navigation. The application automatically updates all views when you navigate through a game, ensuring that the chessboard, move lists, evaluations, and statistics stay synchronized.
← (Left Arrow) and → (Right Arrow) keys to navigate through game moves. This is the primary and most efficient way to review games move-by-move. The board, moves list, and all analysis views update automatically as you navigate.
All aspects of CARA's appearance can be customized through the config.json configuration file. This includes fonts, colors, sizes, dimensions, panel layouts, and all UI styling. The configuration system follows a strict structure with no hardcoded values in the application code, allowing you to completely customize the application's appearance without modifying any source code.
All functions and features in CARA can be accessed through the menu bar at the top of the application window. Most menu items have keyboard shortcuts displayed next to them for quick access.
CARA's main window is organized into three resizable panels:
You can resize any panel by dragging the splitter handles between them. The database panel can be collapsed by double-clicking its splitter handle or using (Ctrl+Shift+D / ⌘+Shift+D). The status bar at the bottom of the window displays status messages and progress indicators during long-running operations.
The Main Panel displays the chessboard along with game information and analysis widgets. The board updates automatically as you navigate through moves using the arrow keys.
The chessboard displays the current position.
Rotate the board 180 degrees using the X key or . Rotation is visual only and does not change the position—FEN notation always represents positions from White's perspective.
Context menu: You can also right-click on the chessboard to open a context menu with quick access to common actions. These entries mirror the corresponding options from the menu bar.
The following visual indicators can be toggled on or off:
Alt+C / ⌥+C or .Alt+T / ⌥+T or .Alt+P / ⌥+P or .Alt+B / ⌥+B or .Alt+2 / ⌥+2, Alt+3 / ⌥+3 or .Alt+A / ⌥+A or .Alt+4 / ⌥+4 or .Alt+H / ⌥+H or .The game information header at the top of the Main Panel shows:
Toggle visibility with Alt+I / ⌥+I or .
The evaluation bar appears on the left side of the chessboard and shows the engine's evaluation of the current position. The bar uses white and black colors: positive values (White advantage) are shown in white extending upward from the center, negative values (Black advantage) are shown in black extending downward from the center. The scale ranges from -1000 to +1000 centipawns, with division marks at 100, 200, 300, 500, and 1000 centipawns to help gauge the evaluation magnitude. Toggle with Alt+E / ⌥+E or . When the evaluation bar is shown, the status bar displays detailed engine information including the engine name, search depth, evaluation score, principal variation, and performance metrics such as nodes per second and hash table usage.
Note: The evaluation bar requires a chess engine to be assigned to the evaluation task. See section 5.1 for instructions on configuring engines.
The material widget appears in the upper right corner of the chessboard and shows captured pieces and the material difference between the two sides. The widget updates automatically as you navigate through the game. Toggle with Alt+U / ⌥+U or .
The widget is divided into three distinct sections, reading from top to bottom:
Pieces are displayed using standard chess notation letters: P for Pawn, N for Knight, B for Bishop, R for Rook, and Q for Queen.
The Game Tags widget is shown next to the chessboard and displays the tags assigned to the active game.
To show or hide the widget, use (see section 6.3).
The turn indicator shows which side is to move in the current position. Toggle with Alt+T / ⌥+T or .
The positional heatmap is a color-coded overlay that visualizes positional factors for each piece on the chessboard. It helps you quickly identify positional strengths and weaknesses by displaying colored gradients on squares containing pieces.
Toggle with Alt+H / ⌥+H or .
The heatmap evaluates nine positional factors:
Color Coding: The heatmap uses color gradients to represent positional scores:
The intensity of the color indicates the strength of the positional factor—darker colors represent stronger effects. The heatmap only displays on squares that contain pieces, and each piece is evaluated from its own color's perspective.
Tooltip Information: Hovering your mouse over any piece displays a detailed tooltip showing:
This detailed information helps you understand why a piece is evaluated as strong or weak and which specific positional factors contribute to the assessment.
The Database Panel, located at the bottom of the application window, manages your chess game collections. It displays all open PGN databases in a tabbed interface, allowing you to work with multiple game collections simultaneously. Each database appears in its own tab, and you can switch between them by clicking the tab labels.
The panel uses tabs to organize multiple databases:
Ctrl+Shift+S / ⌘+Shift+S), or clear it at any time using (Ctrl+Shift+C / ⌘+Shift+C).Each tab displays a pulsing orange dot indicator when the database has unsaved changes. This visual reminder helps you track which databases need to be saved. The indicator appears next to the tab label and pulses continuously until the database is saved.
Right-clicking a database tab opens a context menu with (close that database) and (close all other database tabs, keeping only the one you clicked).
Each database tab displays a table listing all games in that database. The table includes the following columns:
You can interact with the game table in several ways:
Shift+Click to select a range of games, or Ctrl+Click / ⌘+Click to select multiple individual games.Right-click context menu: Right-clicking anywhere in the game table opens a context menu with the following options:
The Database Panel can be collapsed to maximize space for the main and detail panels. Double-click the horizontal splitter handle above the panel, or use (Ctrl+Shift+D / ⌘+Shift+D) to toggle its visibility. When collapsed, the panel is minimized to a thin strip, and you can expand it again using the same method.
The panel automatically updates when games are added, removed, or modified in any database. Changes are reflected immediately in the table view, and unsaved indicators appear as needed to help you track which databases contain games with unsaved changes.
You can perform common database operations using the File menu or keyboard shortcuts:
Ctrl+O / ⌘+O) to open one or multiple PGN files. In the file dialog, you can select multiple files by clicking and dragging, holding Ctrl / ⌘ for individual selection, or Shift for range selection. Each file appears as a separate tab in the Database Panel.Ctrl+S / ⌘+S) to save the active database. This overwrites the existing database file with the current contents.Ctrl+Shift+S / ⌘+Shift+S) to save the active database as a new copy.Ctrl+W / ⌘+W) to close the active database tab.Ctrl+Alt+W / ⌘+⌥+W) to close all file-based database tabs. The Clipboard and Search Results tabs are preserved.Ctrl+V / ⌘+V) to paste into the Clipboard database, or (Ctrl+Alt+V / ⌘+⌥+V) to paste into the active database instead.
The Detail Panel contains the PGN Notation Pane at the top and a set of tabbed views below for detailed analysis.
The PGN Notation Pane displays the complete PGN notation for the current game. The PGN notation contains several different types of elements:
The content is displayed in a formatted, color-coded view with syntax highlighting to distinguish between different elements.
config.json. See section 7.1.6 "Customizing PGN Display Formatting" for advanced customization options.
As you navigate through the game using the ← (Left Arrow) and → (Right Arrow) keys, the active move is highlighted in the PGN notation. A single click on any main-line move jumps to that position. Single clicks on variation moves, comment text, or metadata tags do not change the current position.
With enabled, double-click inside a main-line comment (text in curly braces on the main line) to open the move-comments editor for that full move. For what the dialog contains and how changes are saved, see Editing move comments in section 4.5.1.
Context menu: You can also right-click inside the PGN notation pane to open a context menu with quick access to common PGN actions. These entries mirror the corresponding options from the menu bar.
You can control what elements are displayed in the PGN Notation Pane using the PGN menu. The following options are available:
Ctrl+M / ⌘+M): Toggle display of PGN header tags (Event, Site, Date, etc.)Ctrl+Shift+M / ⌘+Shift+M): Toggle display of move commentsCtrl+Shift+V / ⌘+Shift+V): Toggle display of move variationsCtrl+Shift+T / ⌘+Shift+T): Toggle display of non-standard tags like [%evp] and [%mdl] within commentsCtrl+Shift+A / ⌘+Shift+A): Toggle display of move annotations, including symbol-based annotations (!, !!, ?, ??, !?, ?!) and NAGs (Numeric Annotation Glyphs).Ctrl+R / ⌘+R): Toggle display of game results (1-0, 0-1, 1/2-1/2)The PGN menu also provides options to permanently remove elements from the game's PGN. The following options are available:
These changes modify the game's actual PGN content which will persist when you save the database.
Below the PGN Notation Pane, the Detail Panel contains seven tabs, each offering distinct functionality for analyzing and working with the active game:
The Moves List tab displays all moves in a table format with comprehensive per-move information: move notation, evaluations, move classifications, best move alternatives, Centipawn Loss (CPL) values, engine depth, material counts, FEN positions, and more. You can customize which columns are visible and their order using column profiles. The active move is highlighted as you navigate; click any move to jump to that position in the game. Access this tab using or press F1.
Editing move comments: Main-line comments for White and Black half-moves are edited in a dedicated dialog. Double-click the Comment column for a row, or right-click that cell and choose . The same dialog opens from the PGN pane when you double-click a main-line comment, as described in section 4.5. The dialog shows the move number and SANs, with separate text areas for White's and Black's comments; if the game ends on White's move, the Black field is disabled. OK applies changes to the game's PGN; Cancel discards them. Save the database (for example ) to persist changes to disk.
The application comes with several pre-configured column profiles that organize the available columns for different analysis purposes. Switch between profiles using the number keys 1 through 9 (assigned to the first nine profiles in order), or select them from the menu. The following default profiles are available:
1): A minimal view showing only the move number, White and Black moves, and comments. Use this profile when you want a clean, uncluttered view focused on the moves themselves.2): Displays moves along with ECO codes and opening names. This profile is useful for studying opening theory and identifying which openings were played in your games.3): Shows the most important analysis columns for both White and Black moves, including evaluations, CPL values, move assessments, best move alternatives, engine depth, and top-3 move indicators. Use this comprehensive profile when you want to analyze both sides' play in detail, comparing evaluations and move quality for the entire game.4): Focuses exclusively on White's moves and their analysis. All White-related columns are visible (evaluations, CPL, assessments, best moves, depth), while Black's analysis columns are hidden. This profile is ideal when you played White and want to focus on analyzing your own moves without the distraction of your opponent's move evaluations.5): Focuses exclusively on Black's moves and their analysis. All Black-related columns are visible, while White's analysis columns are hidden. Use this profile when you played Black and want to concentrate on your own moves.You can modify any of these default profiles or create your own custom profiles. For smaller adjustments, you can reorder columns by dragging and dropping column headers in the moves list, resize columns by dragging column borders, and show or hide columns using the menu. For configuring multiple columns at once, use which provides a convenient dialog for managing all column settings. After making changes, save them with (to update the current profile) or (to create a new profile with a custom name). Custom profiles you create will also be accessible via number keys 1 through 9 based on their position in the profile list.
Right-clicking in the table opens a context menu to copy the cell value under the cursor or to export the table as CSV or TSV (visible columns only or all columns).
For a complete reference of all available columns and their descriptions, see section 7.7 "Moves List Columns Reference".
The PGN header tags tab displays all PGN header tags for the current game in an editable table format. You can view, edit, add, and remove PGN header tags. Common tags include Event, Site, Date, Round, White, Black, Result, ECO, WhiteElo, and BlackElo. Changes are applied to the game's PGN data in memory. The database is marked as having unsaved changes, and your modifications will be persisted to the database file when you save it. Access this tab using or press F2.
To edit a tag value, double-click on the value cell in the table and type the new value. Tag names cannot be edited, but you can remove a tag and add a new one with a different name if needed. To add a new tag, click the Add button at the top of the metadata view, enter the tag name and value in the dialog, then click OK. To remove a tag, select the tag row in the table and click the Remove button. You will be asked to confirm the removal. Note that some tags (such as CARA analysis and annotation tags) are read-only and cannot be edited or removed.
The Manual Analysis tab provides continuous engine analysis of the current position with MultiPV (Multiple Principal Variations) support. Access this tab using or press F3.
Note: Manual analysis requires a chess engine to be assigned to the manual analysis task. See section 5.1 for instructions on configuring engines.
MultiPV Analysis: The standard analysis mode displays multiple candidate moves and their evaluations. You can analyze any number of principal variation lines simultaneously, each displaying the engine's recommended moves, evaluations, and depths. The first three PV lines (PV1, PV2, PV3) have color-coded indicators in the analysis display that match the colors of the corresponding arrows on the chessboard when enabled. This visual connection helps you quickly identify which analysis line corresponds to which arrow on the board. Right-clicking on a PV line opens a context menu so you can copy that PV line or all PV lines to the clipboard. The following options are available:
Alt+M / ⌥+M): Start or stop continuous engine analysis of the current positionAlt+N / ⌥+N): Add an additional principal variation lineAlt+R / ⌥+R): Remove the last added PV line (requires at least two lines)Positional Plan Exploration: This unique feature helps you understand the engine's positional plans by visualizing where the engine wants to move specific pieces and how they coordinate through the recommended sequence. Instead of just seeing individual moves, you can see the complete trajectory of each piece—where it starts, where it moves to, and the path it takes through multiple moves. The system automatically identifies the pieces that move most frequently in each PV line and tracks their movement patterns. Each of these selected pieces is assigned a distinct color and highlighted in that color in the PV display, while on the chessboard, their trajectories are visualized as colored lines connecting the squares each piece visits through the engine's suggested sequence. This helps you recognize positional themes, piece coordination patterns, and strategic plans that might not be immediately obvious from traditional engine analysis alone.
The following options are available:
The Game Summary tab provides a comprehensive overview of the current game by synthesizing data from the Game Analysis function into key performance indicators (KPIs) and valuable insights. Access this tab using or press F4.
Ctrl+G / ⌘+G).
Evaluation Graph: At the top of the view, a visual graph shows how the position evaluation changed throughout the game over time. The graph includes indicators marking phase transitions (opening to middlegame, middlegame to endgame) and highlights the worst and best moves for each player, making it easy to see critical moments and how the game's balance shifted. The graph is displayed in a resizable panel that can be adjusted to show more or less detail.
The evaluation graph supports two display modes that you can toggle using (Ctrl+Shift+N / ⌘+Shift+N):
Key Statistics: The summary displays per-player statistics for both White and Black, including:
Move Classification: The view displays pie charts showing the distribution of move quality throughout the game for each player. You can see how many moves were strong (Best Move, Good Move, Brilliant) versus how many were errors (Inaccuracy, Mistake, Blunder), giving you a quick visual overview of each player's performance. The charts also show book moves and missed opportunities.
Phase Analysis: The view breaks down performance for each player across the three phases of a chess game—Opening, Middlegame, and Endgame—showing how each player performed in different stages of the game. This helps you identify strengths and weaknesses in specific phases. Each phase section shows accuracy, average CPL, and move counts for that phase. The system automatically detects phase boundaries based on opening theory, material exchanges, and endgame classification. When an endgame is detected, the system also classifies the specific endgame type (such as Pawn Endgame, Rook Endgame, Minor Piece Endgame, or Queen Endgame) based on the material composition, which is displayed in the phase analysis section.
Game Highlights: The view displays detected tactical and positional patterns that occurred during the game. Highlights are organized by game phase and help you quickly identify key moments. Each highlight entry is a clickable link that navigates directly to the move where the pattern occurred, allowing you to quickly review the position and context.
Critical Moments: The summary identifies the top best and worst moves for each player, allowing you to quickly review and navigate to critical moments in the game. Each critical moment shows the move number, move notation, evaluation, and best alternative move when applicable. Each critical moment entry is a clickable link that navigates directly to that move in the game, making it easy to jump to and analyze these important positions.
Copying to clipboard: Right-click in the Game Summary view to open a context menu. You can copy the section you clicked on (e.g. Key Statistics, Phase Analysis, Critical Moments) or copy the full summary to the clipboard.
This comprehensive overview helps you quickly understand the flow of the game, identify critical moments, and assess each player's performance across different phases of play.
The Player Stats tab answers questions about a player across many games at once (not to be confused with Game Summary, which describes a single game). Open it with or press F5.
In short: pick a Source (which set of games to use) and a player. Only players with at least two analyzed games in that source appear in the list, because the figures are meant to reflect a pattern rather than a single outing.
The page is made of separate sections you can turn on or off; several charts offer their own display options. For prerequisites, every section, chart interactions (such as opening games from a heatmap or a pattern), and settings in everyday language, read section 5.7 Viewing Player Statistics.
The Annotations tab provides tools for creating and managing custom CARA annotations on the chessboard. Unlike regular PGN annotations, CARA annotations include free-form text that can be positioned anywhere on the board, adjusted in size and rotated.
You can also add arrows, circles, and square highlighting with customizable colors. Annotations are position-specific, attached to individual moves in the game, and are compressed and serialized in a PGN metadata tag to keep the PGN move notation clean.
Access this tab using or press F6.
The AI Summary tab provides an interactive chat interface for discussing any position in a game with a Large Language Model (LLM). The AI model has access to extensive game data, including detailed engine analysis, move classifications, evaluation metrics, and positional information, enabling it to provide accurate assessments of the game, played moves, and current position. You can ask questions about the game, request explanations of moves, or generate summaries. Access this tab using or press F7.
CARA supports OpenAI, Anthropic, and custom OpenAI-compatible endpoints. Configure your provider and API key through the AI Model Settings dialog; see section 6.12. See section 7.9 for more information on setting up a custom endpoint.
Use the Notes tab to keep your own comments, plans, or post-mortem thoughts with a game.
When you type move notation (e.g. 1. e4, 13... Rb7), CARA recognizes it and formats it for you. Moves that were actually played in the current game become clickable links—click one to jump to that position. Other move notation (for example from variations or lines you're discussing) is shown in bold only, so it still stands out but doesn't link. That way you can refer to specific moves or positions and jump straight to them when the move is in the game.
Markdown formatting in Notes: Use the formatting toolbar above the editor to apply a small Markdown subset to the currently selected text. Supported syntax:
# , ## , ### at the start of a line (H1/H2/H3 buttons).**text** (also supported: __text__).*text* (also supported: _text_).***text*** (also supported: ___text___).`code`.~~text~~.> text at the start of a line.To attach your text to the current game, use (Ctrl+Alt+N). To remove the notes for the current game, use (Ctrl+Shift+E). Notes are written to the PGN when you save the database.
Open the Notes tab from or press F8.
Below you can find a list of the most common keyboard shortcuts, allowing you to work efficiently with the features described in this section. For a complete reference of all keyboard shortcuts organized by category, see section 6.15.
← (Left Arrow): Navigate to the previous move in the game→ (Right Arrow): Navigate to the next move in the gameX: Rotate the board 180 degreesAlt+C / ⌥+C: Toggle coordinates displayAlt+T / ⌥+T: Toggle turn indicatorAlt+P / ⌥+P: Toggle played move arrowAlt+B / ⌥+B: Toggle best next move arrow (PV1)Alt+2 / ⌥+2: Toggle PV2 arrowAlt+3 / ⌥+3: Toggle PV3 arrowAlt+A / ⌥+A: Toggle best alternative move arrowAlt+H / ⌥+H: Toggle positional heatmapAlt+E / ⌥+E: Toggle evaluation barAlt+U / ⌥+U: Toggle material widgetAlt+I / ⌥+I: Toggle game information displayAlt+L / ⌥+L: Toggle annotations layerCtrl+Shift+F / ⌘+Shift+F: Search games across databasesCtrl+Shift+W / ⌘+Shift+W: Close search resultsCtrl+Shift+I / ⌘+Shift+I: Import online gamesCtrl+Shift+R / ⌘+Shift+R: Bulk replace in databasesCtrl+Alt+T / ⌘+⌥+T: Bulk tag gamesCtrl+Shift+L / ⌘+Shift+L: Bulk clean PGNCtrl+Shift+U / ⌘+Shift+U: Deduplicate gamesF1: Switch to Moves List tabF2: Switch to PGN header tags tabF3: Switch to Manual Analysis tabF4: Switch to Game Summary tabF5: Switch to Player Stats tabF6: Switch to Annotations tabF7: Switch to AI Summary tabF8: Switch to Notes tabCtrl+G / ⌘+G: Start game analysis for the current gameEscape: Cancel ongoing game analysisCtrl+Shift+N / ⌘+Shift+N: Toggle normalized evaluation graph modeCtrl+Shift+K / ⌘+Shift+K: Configure move classification settingsAlt+M / ⌥+M: Start or stop continuous engine analysis of the current positionAlt+N / ⌥+N: Add an additional principal variation lineAlt+R / ⌥+R: Remove the last added PV lineCtrl+O / ⌘+O: Open PGN databaseCtrl+S / ⌘+S: Save active PGN databaseCtrl+Shift+S / ⌘+Shift+S: Save active PGN database as...Ctrl+W / ⌘+W: Close active PGN databaseCtrl+Alt+W / ⌘+⌥+W: Close all PGN databasesCtrl+Q / ⌘+Q: Close applicationCtrl+V / ⌘+V: Paste PGN to Clipboard databaseCtrl+Alt+V / ⌘+⌥+V: Paste PGN to active databaseCtrl+P / ⌘+P: Copy PGN to clipboardShift+F: Copy FEN to clipboardCtrl+F / ⌘+F: Paste FEN to boardCtrl+Shift+C / ⌘+Shift+C: Copy selected gamesCtrl+Shift+X: Cut selected gamesCtrl+M / ⌘+M: Toggle metadata displayCtrl+Shift+M / ⌘+Shift+M: Toggle comments displayCtrl+Shift+V / ⌘+Shift+V: Toggle variations displayCtrl+Shift+T / ⌘+Shift+T: Toggle non-standard tags displayCtrl+Shift+A / ⌘+Shift+A: Toggle annotations displayCtrl+R / ⌘+R: Toggle results display1 - 9: Switch to column profile 1 through 9Ctrl+Shift+P / ⌘+Shift+P: Save current profileCtrl+Alt+P / ⌘+⌥+P: Save current profile as...Ctrl+Shift+Delete / ⌘+Shift+Delete: Remove current profileCtrl+Alt+S: Save annotationsCtrl+Shift+D / ⌘+Shift+D: Clear all annotationsCtrl+Alt+D: Clear move annotationsCtrl+Shift+D / ⌘+Shift+D: Toggle database panel visibilityCtrl+Shift+E: Clear notes for current gameCtrl+Alt+N: Save notes to current gameCtrl+E: Add or configure chess engineFollow these steps to analyze your first game:
Ctrl+O / ⌘+O), or paste PGN text into the Clipboard database using (Ctrl+V / ⌘+V)—the pasted game gets loaded automatically.F1 to switch to the Moves List tab, then press 3 to select the "Game Analysis - Full" profile. This profile displays all the important analysis columns you'll need to review the game.Ctrl+G / ⌘+G (or use ) to begin analyzing the game. Watch as the moves list fills in with evaluation data, move classifications, CPL values, and best move alternatives as the analysis progresses. Progress and estimated time remaining are shown in the status bar.F4 to switch to the Game Summary tab for a condensed overview showing key statistics, the evaluation graph, critical moments, and detected game highlights.CARA requires at least one UCI-compatible chess engine to perform game analysis. Adding your first engine is straightforward and doesn't require any special configuration—default settings are usually sufficient to get started.
There are two general types of chess engines you can use with CARA:
For a short, consistent list of engine suggestions (free and commercial) and best use cases inside CARA, see section 7.10.
To add your first engine:
Ctrl+E.stockfish.exe on Windows, or stockfish on Linux/macOS).Once you have your first engine set up, you can add additional engines and configure per-engine, per-task settings to optimize performance for different analysis scenarios:
The dialog includes "Copy" and "Paste" buttons on each tab so you can copy settings from one task to another. The "Reset to Defaults" button restores the recommended default settings for all tasks.
CARA provides several ways to import and open games. This section covers the three main methods.
The quickest way to import a single game is to paste PGN text directly from your system clipboard:
Ctrl+V / ⌘+V) to paste into the Clipboard database, or (Ctrl+Alt+V / ⌘+⌥+V) to paste into the currently active database. The pasted game gets loaded automatically and becomes the active game.To import games from one or more PGN files on your computer:
Ctrl+O / ⌘+O) to open the file selection dialog.Ctrl on Windows or ⌘ on macOS while clicking to select individual files, or hold Shift while clicking to select a range of files.CARA can import games directly from online chess platforms:
Ctrl+Shift+I / ⌘+Shift+I) to open the import dialog.CARA provides several tools for managing your game databases, including basic file operations and powerful bulk operations for batch processing multiple games at once.
Ctrl+S / ⌘+S) or (Ctrl+Shift+S / ⌘+Shift+S). The unsaved changes indicator (orange dot) on database tabs helps you track which databases have unsaved modifications.
For opening, saving, and closing databases, see section 4.4.5.
Game tags are simple labels you can assign to a game so you can organize and recognize games quickly (for example “Training”, “Tournament”, “Must review”, “Opening prep”). They are separate from the PGN header tags (like Event, Site, White, etc.).
CARA distinguishes two kinds of game tag definitions:
If you hide a built-in tag, it no longer appears in the tag picker: not in the Game Tags widget, not in the Game tags column of the database table, and not in the checkable entries under on the menu bar (or the widget’s context menu). Hidden tags can still be listed in so you can turn them back on or adjust their color.
Game tags are shown as small chips in the database view and in the Game Tags widget next to the chessboard (when visible).
To assign tags to the active game, right-click inside the Game Tags widget and toggle tags in the list, or use the menu on the menu bar. In , hover a custom tag chip to reveal a color control and a remove control; built-in chips use color and visibility (eye) controls instead.
Use (Ctrl+Shift+R / ⌘+Shift+R) to find and replace text in PGN header tags across multiple games. This is useful for correcting typos, standardizing player names, or updating event information.
The dialog allows you to:
If you enable Use regex, the Find field is treated as a regular expression. Here are a few practical examples you can try:
| Goal | Find (regex) | Replace | Notes |
|---|---|---|---|
| Append a suffix to specific sites | ^(lichess\.org|chess\.com)$ |
\1 (Live) |
Example for the Site tag: matches only values that are exactly lichess.org or chess.com and appends (Live). Enable Case sensitive. |
| Normalize whitespace | \s+ |
single space | Replaces any whitespace run with a single space (names, events, etc.). |
| Remove trailing engine/site annotations | \s*[-–—]\s*(lichess|chess\.com|engine).*?$ |
(empty) | Deletes a suffix like “ - lichess” or “ — engine …”. Use with care. |
^(lichess\.org|chess\.com)$\1 (Live)Site tag: matches only values that are exactly lichess.org or chess.com and appends (Live). Enable Case sensitive.\s+\s*[-–—]\s*(lichess|chess\.com|engine).*?$The dialog also includes two smart update options:
Use (Ctrl+Alt+T / ⌘+⌥+T) to add or remove PGN header tags across multiple games. This is useful for adding missing information or cleaning up tag sets.
The dialog allows you to:
Use (Ctrl+Shift+L / ⌘+Shift+L) to remove unwanted elements from PGN notation across multiple games.
The dialog allows you to remove:
You can select any combination of these options and process all games or only selected games in the database table.
Use (Ctrl+Shift+U / ⌘+Shift+U) to identify and remove duplicate games from the active database.
The deduplication dialog allows you to choose how games are matched:
When duplicates are found, the active game (if it's a duplicate) is preserved, and other duplicates are removed. Progress is displayed in the status bar during the operation.
CARA provides powerful search functionality to find games across your databases based on multiple criteria. You can search within a single database or across all open databases simultaneously, and combine criteria using logical operators (AND/OR) and grouping.
When you open the search dialog using (Ctrl+Shift+F / ⌘+Shift+F), you can choose where to search:
Each search criterion consists of three parts:
For "Custom PGN Tag", you must also specify the tag name in an additional field that appears when this option is selected.
Search criteria are combined using logical operators (AND/OR) to create complex queries. By default, criteria are combined with AND logic, meaning all criteria must match for a game to be included in the results.
Each criterion row (except the first) has an AND/OR selector that determines how it relates to the previous criterion:
For more complex searches, you can group criteria together using the "Start Group" and "End Group" buttons. Groups allow you to create logical expressions like "(A AND B) OR (C AND D)".
To create a group:
Groups can be nested to create complex logical expressions. Nested groups are visually indicated by increased indentation levels. The search system evaluates groups from innermost to outermost, allowing you to create sophisticated queries like "((A OR B) AND C) OR (D AND E)".
When a group is created, the AND/OR operator on the group start row determines how the entire group relates to criteria before it. Criteria within a group are combined according to their individual AND/OR operators.
Once you've set up your search criteria:
The search dialog remembers your last search query during the current session, so you can easily modify and re-run searches. Double-click any game in the search results to open it for review.
CARA's game analysis feature uses a chess engine to evaluate every move in a game, providing detailed insights into move quality, evaluation changes, and alternative moves. This section explains how to analyze a single game.
To analyze the currently active game:
Ctrl+G / ⌘+G) to begin analyzing the game. CARA will automatically switch to the Moves List tab if configured to do so (see section 5.5.4).During analysis, CARA processes each move sequentially, evaluating the position before and after each move, calculating Centipawn Loss (CPL), and classifying move quality. Progress is displayed in the status bar, showing the current move being analyzed, the engine name, search depth, and evaluation.
As moves are analyzed, the Moves List shows detailed information for each move:
Ctrl+Shift+K / ⌘+Shift+K).
You can review this information in the Moves List, or switch to the tab (F4) for a condensed overview of key game moments, statistics, and highlights.
CARA includes a brilliancy detection system that identifies exceptional moves by analyzing them at shallow engine depths.
How Brilliancy Detection Works:
When brilliancy detection is enabled, CARA performs an additional analysis pass after the main game analysis completes. This process:
Why This Works:
Brilliant moves often involve material sacrifices or complex tactical sequences that appear bad at shallow depths but reveal their strength when analyzed more deeply. By requiring that a move shows as an error at multiple shallow depths, the system identifies moves that are counterintuitive and require deeper calculation to appreciate.
Configuration:
Brilliancy detection can be enabled/disabled via . The detection criteria can be customized in the Classification Settings dialog (), including:
See section 6.7.4 for more information about configuring brilliancy detection settings.
config.json under game_analysis.brilliant_criteria:append_depthlevels_to_classification_text: Appends the shallow depth levels at which the move was still considered an error to the Move Classification text. This can be useful when you want to fine-tune the settings and understand at which levels the move matched the criteria.shallow_error_classifications: Array of move classification names that count as an error at shallow depth (e.g. ["Mistake", "Blunder", "Miss"]). A candidate move is marked brilliant only if at least Min Agreement shallow depths classify it as one of these. Default includes Miss, Mistake, and Blunder. Use e.g. ["Blunder"] for stricter detection.incompatible_engines: List of engine name keywords that should skip brilliancy detection. Neural network engines like lc0 or Maia are usually too slow for this process, due to how they work in terms of their calculation depth. Remove/Re-enable at your own risk.
CARA provides several settings to customize the analysis workflow:
These settings can be toggled in the menu and are saved in your user settings.
Auto-tagging can assign game tags automatically after game analysis (single-game and bulk). Turn it on or off with (see section 6.7).
When auto-tagging is on, you can still choose which rules may apply: use and check or uncheck each tag name. Your choices are saved with your user preferences. If every tag is unchecked, analysis will not add any of these automatic tags (existing manual tags on the game are unchanged). The submenu is available only while is enabled.
Numeric thresholds for the evaluation-based rules below are defined in config.json (under game_analysis.auto_game_tagging). The Sharp rule uses average CPL (both sides), minimum full-move rows, median engine depth and book-move share (sharp_data_quality), and is suppressed when the opening disaster, blunder-decided, or chaotic patterns would apply. The Brilliant Move auto-tag depends on moves being classified as Brilliant in the moves list, which requires to be on and a compatible engine assignment; see section 5.5.3.
The following auto-tag rules are available:
| Auto-tag | When it applies (high level) |
|---|---|
| Blunder-decided | After the first recorded blunder, the evaluation becomes decisive for the other side and never meaningfully recovers. |
| Brilliant Move | At least one move in the game was classified as Brilliant after analysis (including the optional brilliancy-detection pass). |
| Clean win | The winner reaches a large advantage and keeps it stable with limited evaluation swings until the end. |
| Missed win | At some point a winning advantage is reached, but the final result is not a win for that side (or the game is not decisive). |
| Opening disaster | The evaluation at the end of the opening phase is already strongly favoring one side. |
| Endgame grind | A long endgame stays in a relatively stable evaluation band for an extended stretch before finally resolving decisively. |
| Chaotic game | Both sides reach large advantages during the game and the evaluation swings back and forth multiple times. |
| Sharp | Both sides show low average centipawn loss, enough engine depth, and a bounded share of book moves; no blunders, few mistakes/misses, and none of the opening disaster, blunder-decided, or chaotic patterns. |
You can cancel an ongoing analysis at any time using or press Escape. When cancelled, analysis stops at the current move, and all moves analyzed up to that point retain their analysis data.
To analyze multiple games at once, use .
CARA automatically optimizes available CPU cores to analyze multiple games in parallel, maximizing analysis speed. Progress and estimated time remaining are displayed in the status bar, and you can cancel and resume bulk analysis at any time.
Manual Analysis provides continuous engine analysis of any position, allowing you to explore candidate moves and understand the engine's recommendations in real-time. Unlike game analysis which processes all moves in a game, manual analysis focuses on the current position and updates continuously as you navigate through the game.
To start analyzing the current position:
F3).Alt+M / ⌥+M) to begin continuous analysis. The engine will analyze the current position and display principal variation lines with evaluations, depths, and move sequences.Analysis continues automatically as you navigate to different positions in the game. To stop analysis, use the same menu item or keyboard shortcut again.
Manual Analysis supports MultiPV (Multiple Principal Variations), allowing you to see multiple candidate moves simultaneously. By default, analysis shows one principal variation line (PV1). You can add additional lines to compare different candidate moves:
Alt+N / ⌥+N) to add another principal variation line. You can add as many lines as needed.Alt+R / ⌥+R) to remove the last added line (requires at least two lines).Each PV line displays the engine's recommended move sequence, evaluation, search depth, and performance metrics. The first three PV lines (PV1, PV2, PV3) have color-coded indicators that match the colors of the corresponding arrows on the chessboard when enabled, helping you visually connect the analysis lines to the board arrows.
You can explore variations by hovering over moves in the PV lines:
Alt+B / ⌥+B, Alt+2 / ⌥+2, Alt+3 / ⌥+3) show the recommended moves from each analysis line, making it easy to see candidate moves visually.Positional Plan Exploration visualizes how pieces move through the engine's recommended sequence, helping you understand strategic plans and piece coordination. Instead of just seeing individual moves, you can see complete piece trajectories—where pieces start, where they move, and the path they take through multiple moves.
To explore positional plans:
When enabled, the chessboard displays colored lines showing the trajectory of each tracked piece through the engine's recommended sequence. Each piece is assigned a distinct color that matches its indicator in the PV display, making it easy to follow piece movement patterns and understand positional themes.
The Player Stats tab helps you see how a player tends to perform across many games: habits over time, typical accuracy, weak spots, played opening variants, and much more. Open it with or F5.
The view refreshes automatically in the background if your chosen data source changes.
Analyzed games. Only games that have been run through CARA’s game analysis are included. A player appears in the player list only if they have two or more analyzed games in the current source.
Source dropdown. Choose which pool of games to aggregate:
Player dropdown. Each entry shows analyzed and total game counts (for example, “15 analyzed, 20 total”). Pick a player to display their statistics.
Dates in PGN. Some sections (activity heatmap, date-based progression charts) use the game dates stored in the PGN headers. If dates are missing or incomplete, those sections may be hidden and a short notice will be shown on the top of view.
The tab is built from independent sections (Overview, charts, trees, lists). Use the menu to toggle each section on or off. As with most user settings, your choices will be persisted to your user settings file when you exit the application, so when you open the app again later they will remain exactly as you left them.
Several sections also offer context-menu settings when you right-click inside that section (for example chart colors or time grouping).
Purpose: Provide high-level, aggregated statistics for the selected player across the games included in the current computation—for example win rate, accuracy, average centipawn loss, estimated ELO rating, and move-classification totals.
Interactions: Right-click to copy this section or the full stats.
Settings: None specific to this section beyond showing or hiding it through the menu.
Purpose: Aggregate analyzed games by calendar date and show the counts in a heatmap calendar so you can compare activity from day to day and see busy periods, gaps, and long quiet stretches at a glance.
Interactions: Double-click a day that has at least one game to open a Search Results tab listing those games. Hover a cell for the date and count.
Settings:
Purpose: Show a histogram of per-game accuracy for the selected player across the games in the current computation, so you can see how often games fall into each accuracy band (tight clusters, wide spread, or multiple peaks).
Interactions:
Settings:
Purpose: Aggregates every classified move for the selected player across the games in the current computation and shows the overall mix as a pie chart with a percentage list: book moves, brilliancies, best and good moves, inaccuracies, mistakes, misses, and blunders (the same classification family as in Game Summary, but pooled across many games instead of one).
Interactions:
Settings: None specific to this section beyond showing or hiding it through the menu.
Purpose: Summarizes the selected player’s results in the three game phases—opening, middlegame, and endgame—across the games in the current computation. A horizontal bar chart shows average accuracy (%) per phase; beside it, a small table lists the same phases with average centipawn loss (CPL) so you can compare solid play vs typical cost of errors in each phase.
Interactions: Right-click in the section for (this block only) or (full Player Stats text). Hover the bars to compare the selected player’s phase accuracy against opponents in the same phase.
Settings: None specific to this section beyond showing or hiding it through the menu.
Purpose: For the selected player and the games in the current computation, plots how running game accuracy (accuracy of all moves played so far in the game) typically changes as a game goes on. The horizontal axis is game progress from start to finish (0–100% of the game’s plies). For each progress step, CARA averages running accuracy across games for the player’s moves and, separately, across the same games for the opponent’s moves, then draws two lines: the player’s series and the opponents’ average series at the same progress. This answers “how does accuracy tend to evolve within a game?” and how the selected player’s accuracy over the game duration compares to their opponents.
Interactions:
Settings: None specific to this section beyond showing or hiding it through the menu.
Purpose: For the selected player and the games in the current computation that have usable PGN game dates, buckets those games along the calendar (from the earliest to the latest dated game in the data). In each time bin CARA plots the median per-game accuracy so a few outliers do not dominate: a combined line plus separate lines for games played as White and as Black. The horizontal axis is real-world time.
Interactions:
Settings:
Show or hide this section from the menu like other Player Stats blocks. The same apply to Move quality progression and ACPL progression by phase; these charts share the time-series settings.
Purpose: For the selected player, groups dated games from the current computation into the same calendar time bins as Accuracy progression (games need usable PGN dates). In each bin the chart shows the median per-game rate of best moves, top-three moves, and blunders—three percentage lines on the vertical axis.
Interactions:
Settings: All items (progression bins, binning mode, X axis layout, gap segment length, line style, smoothing strength) work the same way as for Accuracy progression; see that section for descriptions. Show or hide this section from the menu like other Player Stats blocks.
Purpose: For the selected player, groups dated games from the current computation into the same calendar time bins as Accuracy progression (games need usable PGN dates). In each bin the chart shows the median per-game average centipawn loss (ACPL) separately for the opening, middlegame, and endgame—three lines on the vertical axis. Lower ACPL is better play in that phase.
Interactions:
Settings: All items work the same way as for Accuracy progression; see that section for descriptions. Show or hide this section from the menu like other Player Stats blocks.
Purpose: For the selected player and the games in the current computation, summarizes a few opening lines by ECO code and name. Up to three blocks appear when there is data: Most played (how many games reached each line), Worst accuracy (highest average CPL among openings with data), and Best accuracy (lowest average CPL). Each block is a small table with game counts; worst and best also show average CPL for that opening across the counted games.
Interactions:
Settings: None specific to this section beyond showing or hiding it through the menu.
Purpose: For the selected player and the games in the current computation, shows an expandable tree of opening variations reached. Each row is a branch for one SAN move; the ECO code and opening name are shown when available from the opening book, along with aggregated counts: total games, games as White and as Black, overall game accuracy (%), and accuracy in the opening phase only (%). Lines are arranged by opening family: continuations nest under their parent line, so related variations stay grouped and you can see how performance correlates along each branch. Together this gives repertoire shape beyond the flat Openings summary.
Interactions:
Settings: None specific to this section beyond showing or hiding it through the menu.
Purpose: For the selected player and the games in the current computation, shows a two-level tree of classified endgames. Top-level rows are endgame groups (material-style families); expanding a group lists specific endgame types under it. Each row carries aggregated counts—total games, games as White and as Black—plus overall game accuracy (%) and accuracy in the endgame phase only (%), so you can compare whole-game results with performance after the position was classified as endgame. Groups and types are ordered by how many games fall into them (largest first). Together with Performance by phase, this helps you see which endgame categories the selected player reaches and how that player tends to score in them.
Interactions:
Settings: None specific to this section beyond showing or hiding it through the menu.
Purpose: Under the Games by Performance heading, the panel surfaces standout analyzed games for the selected player from the current Player Stats run. Best Games are the ones with the lowest average centipawn loss (CPL) for that player across the whole game; Worst Games are those with the highest average CPL. Each sub-row summarizes how many games qualify and the accuracy (%) range spanned by those picks. The worst list is built from games after reserving slots for the best list, so a game does not appear in both.
Interactions:
Settings: Show or hide this block with the menu entry . Caps on how many best and worst games are considered live under ui → panels → detail → player_stats → top_games in config.json (max_best and max_worst); see section 7.1 Customizing config.json.
Purpose: Under the Significant Moves heading, the panel highlights three move classes for the selected player across analyzed games in the current Player Stats run: Brilliant Moves, Misses, and Blunders (as recorded in stored analysis). Each row shows how many such moves occurred in aggregate and what share that is of the player’s total moves in those games; it also states how many individual instances are listed for the View action (capped by configuration). Together with Move accuracy, this gives both headline counts and a direct way to jump into concrete positions. Brilliant classifications depend on analysis settings—see Settings below.
Interactions:
Settings:
max_moves: In config.json, open ui → panels → detail → player_stats → significant_moves. The settings brilliant_moves, misses, and blunders can each set max_moves—the maximum number of moves that row’s View button will include when it opens Search Results (defaults are large). Details: section 7.1 Customizing config.json.Purpose: When Player Stats finds candidate issues for the selected player across the current analyzed games, this section lists them as separate cards. Each card has a short description, a severity color (for example critical vs moderate), and a frequency line (how often the pattern shows up and what share of relevant play that is). Rules cover several families of behavior—examples include blunders piling up in one phase, tactical misses, shaky opening error rates, persistently high centipawn loss, conversion or defensive trouble, and repeated slips in the same position.
Interactions:
Settings:
ui → panels → detail → player_stats → error_patterns → thresholds in config.json you can tune when each rule fires (phase blunder share, tactical miss counts, opening error rates, CPL and conversion heuristics, repeated-position minima, and similar). See section 7.1 Customizing config.json.CARA annotations allow you to add custom markings to the chessboard, including text, arrows, circles, and square highlighting. Unlike regular PGN annotations, CARA annotations are not added to PGN notation as special encoded comments but are kept separate. Text can be freely positioned, sized, and rotated. Access the Annotations tab using or press F6.
The Annotations tab provides several tools for creating annotations:
All annotation types support customizable colors, size adjustments (0.5x to 2.0x), and optional shadow effects for better visibility. Select a tool from the toolbar, choose a color, and click on the chessboard to add annotations.
You can customize the annotation color palette and text font settings using .
The dialog provides the following options:
Changes are saved to your user settings when you click "Save" and will persist across sessions.
Annotations are automatically attached to the current move (position) in the game. As you navigate through the game, annotations for each position are shown or hidden automatically.
You can manage annotations using the following options:
Ctrl+Alt+S) to save all annotations to the active game. Annotations are compressed and stored in a PGN metadata tag, keeping the PGN move notation clean.Ctrl+Alt+D) to remove all annotations for the current position.Ctrl+Shift+D / ⌘+Shift+D) to remove all annotations from the entire game.Alt+L / ⌥+L) to show or hide the annotation layer on the chessboard.CARA provides practical copy, cut, and paste functionality that allows you to move games between databases, share games with other applications, and work with board positions. This section covers all clipboard operations for games and positions. You can also copy, cut, or paste selected games from the database table's right-click context menu (see section 4.4.3).
To copy one or more games from a database to the clipboard:
Ctrl (individual selection) or Shift (range selection) while clicking.Ctrl+Shift+C / ⌘+Shift+C) to copy the selected games to your system clipboard as PGN text. The games remain in the source database.The copied games are stored as standard PGN text, separated by double newlines. You can paste them into another database in CARA, or into any other application that accepts PGN text.
To move games from one database to another (or remove them from a database):
Ctrl+Shift+X) to copy the selected games to your system clipboard and remove them from the source database. If the active game is among the cut games, it will be cleared.The cut games are stored as PGN text in your clipboard, ready to be pasted into another database. The source database is marked as having unsaved changes.
To paste games from the clipboard into a database:
Ctrl+V / ⌘+V) to paste into the Clipboard database, or (Ctrl+Alt+V / ⌘+⌥+V) to paste into the currently active database.All games in the clipboard PGN text are added to the selected database. If the clipboard contains multiple games, all are added, and the first game automatically becomes the active game. The destination database is marked as having unsaved changes.
To copy the currently active game's PGN to the clipboard:
Ctrl+P / ⌘+P) to copy the active game's complete PGN text to your system clipboard.This copies the full PGN notation of the active game, including all metadata tags, moves, comments, and variations. You can then paste it into another application or share it with others.
CARA also supports copying and pasting board positions using FEN (Forsyth-Edwards Notation):
Shift+F) to copy the current board position as FEN notation to your system clipboard. This is useful for sharing specific positions or setting up positions in other chess applications.Ctrl+F / ⌘+F) to paste a FEN position from your clipboard and update the chessboard to that position. When a FEN is pasted, the active game is cleared (set to None) since the board position is no longer part of a game sequence.Shortcut: Ctrl+O / ⌘+O
Opens one or more PGN files from your computer. Each file appears as a separate tab in the Database Panel.
See section 5.2.2 for detailed instructions.
Shortcut: Ctrl+W / ⌘+W
Closes the currently active database tab. Any unsaved changes will be lost if you haven't saved the database first.
See section 4.4.5 for more information.
Shortcut: Ctrl+Alt+W / ⌘+⌥+W
Closes all file-based database tabs. The Clipboard and Search Results tabs are preserved. Any unsaved changes will be lost if you haven't saved the databases first.
See section 4.4.5 for more information.
Shortcut: Ctrl+Shift+C / ⌘+Shift+C
Removes all games from the Clipboard database.
Shortcut: Ctrl+S / ⌘+S
Saves the active database to disk, overwriting the existing file.
See section 4.4.5 for more information.
Shortcut: Ctrl+Shift+S / ⌘+Shift+S
Saves the active database to a new file location. This allows you to create a copy of the database without overwriting the original.
See section 4.4.5 for more information.
Shortcut: Ctrl+Shift+I / ⌘+Shift+I
Opens a dialog to import games from Lichess or Chess.com.
See section 5.2.3 for detailed instructions.
Shortcut: Ctrl+Shift+R / ⌘+Shift+R
Opens a dialog to find and replace text in metadata tags across multiple games.
See section 5.3.2 for detailed instructions.
Shortcut: Ctrl+Alt+T / ⌘+⌥+T
Opens a dialog to add or remove metadata tags across multiple games.
See section 5.3.3 for detailed instructions.
Shortcut: Ctrl+Shift+L / ⌘+Shift+L
Opens a dialog to remove unwanted elements (comments, variations, annotations, etc.) from PGN notation across multiple games.
See section 5.3.4 for detailed instructions.
Shortcut: Ctrl+Shift+U / ⌘+Shift+U
Opens a dialog to identify and remove duplicate games from the active database.
See section 5.3.5 for detailed instructions.
Shortcut: Ctrl+Shift+F / ⌘+Shift+F
Opens a dialog to search for games across databases using multiple criteria and logical operators.
See section 5.4 for detailed instructions.
Shortcut: Ctrl+Shift+W / ⌘+Shift+W
Closes the Search Results tab in the Database Panel. This menu item is only enabled when a search results tab is open.
Shortcut: Ctrl+Q / ⌘+Q
Closes the CARA application. Any unsaved changes in open databases will be lost if you haven't saved them first.
Shortcut: Shift+F
Copies the current board position as FEN (Forsyth-Edwards Notation) to your system clipboard.
See section 5.9.5 for more information.
Shortcut: Ctrl+P / ⌘+P
Copies the currently active game's complete PGN text to your system clipboard.
See section 5.9.4 for more information.
Shortcut: Ctrl+Shift+C / ⌘+Shift+C
Copies the selected games from the active database to your system clipboard as PGN text. The games remain in the source database.
See section 5.9.1 for more information.
Shortcut: Ctrl+Shift+X
Copies the selected games to your system clipboard and removes them from the source database.
See section 5.9.2 for more information.
Shortcut: Ctrl+F / ⌘+F
Pastes a FEN position from your clipboard and updates the chessboard to that position. The active game is cleared when a FEN is pasted.
See section 5.9.5 for more information.
Shortcut: Ctrl+V / ⌘+V
Pastes PGN text from your system clipboard into the Clipboard database. All games in the clipboard are added, and the first game becomes active.
See section 5.2.1 and section 5.9.3 for more information.
Shortcut: Ctrl+Alt+V / ⌘+⌥+V
Pastes PGN text from your system clipboard into the currently active database. All games in the clipboard are added, and the first game becomes active.
See section 5.2.1 and section 5.9.3 for more information.
Shortcut: X
Toggles the board orientation, rotating it 180 degrees. This is useful for viewing positions from the opposite side's perspective.
Shortcut: Alt+I / ⌥+I
Toggles the display of game information (players, result, date, etc.) above the chessboard.
Shortcut: Alt+C / ⌥+C
Toggles the display of coordinate labels (a-h, 1-8) around the chessboard edges.
Shortcut: Alt+T / ⌥+T
Toggles the display of the turn indicator showing which side is to move.
See section 4.3.6 for more information.
Shortcut: Alt+U / ⌥+U
Toggles the display of the material widget showing captured pieces and material difference.
See section 4.3.4 for more information.
Shortcut: Alt+G
Toggles the visibility of the Game Tags widget next to the chessboard.
Shortcut: Alt+E / ⌥+E
Toggles the display of the evaluation bar showing the engine's assessment of the current position.
See section 4.3.3 for more information.
Shortcut: Alt+H / ⌥+H
Toggles the display of the positional heatmap overlay showing positional factors through color-coded gradients.
See section 4.3.7 for detailed information.
Shortcut: Alt+P / ⌥+P
Toggles the display of an arrow on the chessboard indicating the last move played in the game.
Shortcut: Alt+B / ⌥+B
Toggles the display of an arrow showing the engine's best recommended move (PV1) from manual analysis.
Shortcut: Alt+2 / ⌥+2
Toggles the display of an arrow showing the engine's second-best recommended move (PV2) from manual analysis.
Shortcut: Alt+3 / ⌥+3
Toggles the display of an arrow showing the engine's third-best recommended move (PV3) from manual analysis.
Shortcut: Alt+A / ⌥+A
Toggles the display of an arrow showing the best alternative move found during game analysis (the move that should have been played instead of the actual move).
Shortcut: Alt+4 / ⌥+4
Toggles small badges on the played move's destination square that show the move assessment (e.g. book move, best move, good move, brilliant, inaccuracy, mistake, miss, blunder). Available once the game has been analyzed.
Shortcut: Alt+L / ⌥+L
Toggles the visibility of the annotations layer on the chessboard, showing or hiding all custom annotations (text, arrows, circles, squares).
See section 5.8 for more information.
Selects the visual style for piece trajectory lines displayed during positional plan exploration:
The menu provides actions for working with game tags on the currently active game.
After the top items ( and ), the menu lists your predefined tags (only those you have left visible) and your custom tags as checkable entries so you can turn each one on or off for the active game (see section 6.4.3). The same choices appear when you right-click the Game Tags widget.
Opens the Manage game tags dialog. The dialog has two areas:
At the bottom, Reset to Defaults clears your overrides for built-in tags only (colors and hide/show state); it does not delete custom tag definitions. OK saves changes; Cancel discards changes made in this session. Built-in and custom choices you save are stored with your user preferences.
Removes all game tags from the currently active game in one step (the full tag list stored on that game). This still applies if some assigned tags no longer appear in the menu because their built-in definition is hidden—you may use this to clean up those assignments even though you cannot toggle them individually from the menu until you show the tag again in .
After , a separator, and , the menu lists every visible tag definition: built-in tags first, then a separator and your custom tags (if any). Each entry is checkable and turns the corresponding tag on or off for the active game only.
Built-in tag definitions you have marked hidden in are not listed here (and not in the widget’s context menu), so you cannot assign or remove them from the pick list until you show them again. They may still be stored on the game from earlier; use if you want to remove every tag at once.
If the active game contains a tag name that is not part of your current definitions (for example text imported from elsewhere), those names appear under Unmanaged game tags (this game) so you can still toggle them off.
Shortcut: Ctrl+M / ⌘+M
Toggles the display of PGN header tags (Event, Site, Date, etc.) in the PGN Notation Pane.
See section 4.5 for more information.
Shortcut: Ctrl+Shift+M / ⌘+Shift+M
Toggles the display of move comments in the PGN Notation Pane.
See section 4.5 for more information.
Shortcut: Ctrl+Shift+V / ⌘+Shift+V
Toggles the display of move variations in the PGN Notation Pane.
See section 4.5 for more information.
Shortcut: Ctrl+Shift+T / ⌘+Shift+T
Toggles the display of non-standard tags like [%evp] and [%mdl] within comments in the PGN Notation Pane.
See section 4.5 for more information.
Shortcut: Ctrl+Shift+A / ⌘+Shift+A
Toggles the display of move annotations (symbols like !, ?, and NAGs) in the PGN Notation Pane.
See section 4.5 for more information.
Shortcut: Ctrl+R / ⌘+R
Toggles the display of game results (1-0, 0-1, 1/2-1/2) in the PGN Notation Pane.
See section 4.5 for more information.
This submenu allows you to choose how NAG (Numeric Annotation Glyph) move assessments are displayed in the PGN Notation Pane:
The selected option is saved in your user settings and persists between application sessions.
See section 4.5 for more information.
Permanently removes all comments from the active game's PGN notation. This action modifies the game's actual PGN content and cannot be undone. The game will be marked to contain unsaved changes and the changes will be persisted when you save the database.
See section 4.5 for more information.
Permanently removes all move variations from the active game's PGN notation. This action modifies the game's actual PGN content and cannot be undone. The game will be marked to contain unsaved changes and the changes will be persisted when you save the database.
See section 4.5 for more information.
Permanently removes non-standard tags (like [%evp] and [%mdl]) from comments in the active game's PGN. This action modifies the game's actual PGN content and cannot be undone. The game will be marked to contain unsaved changes and the changes will be persisted when you save the database.
See section 4.5 for more information.
Permanently removes all move annotations (symbols and NAGs) from the active game's PGN notation. This action modifies the game's actual PGN content and cannot be undone. The game will be marked to contain unsaved changes and the changes will be persisted when you save the database.
See section 4.5 for more information.
The Moves List menu displays all available column profiles at the top. Each profile is a named configuration that defines which columns are visible and their order. Switch between profiles by selecting them from the menu or using number keys 1 through 9 (assigned to the first nine profiles).
See section 4.5.1 for detailed information about column profiles and default profiles.
Shortcut: Ctrl+Shift+P / ⌘+Shift+P
Saves the current column profile, overwriting the existing profile with the current column visibility, order, and width settings.
See section 4.5.1 for more information.
Shortcut: Ctrl+Alt+P / ⌘+⌥+P
Creates a new column profile with a custom name, using the current column visibility, order, and width settings. The new profile is then accessible via the Moves List menu and is assigned a keyboard shortcut (1-9) based on its position in the profile list.
See section 4.5.1 for more information.
Shortcut: Ctrl+Shift+Delete / ⌘+Shift+Delete
Permanently removes the currently active column profile.
Opens a dialog for configuring all column settings at once, including column visibility, order, and widths. This provides a convenient way to manage multiple columns simultaneously rather than toggling them individually.
See section 4.5.1 for more information.
The Moves List menu includes submenus organized by column category for toggling individual column visibility:
Toggle any column's visibility by selecting it from the appropriate submenu. Changes are applied immediately but are not persisted until you save the profile.
See section 4.5.1 for more information.
Shortcut: Ctrl+G / ⌘+G
Initiates automatic analysis of the currently active game using the engine assigned to the Game Analysis task. The engine analyzes each move in the game, providing evaluations, move classifications, and best move alternatives.
See section 5.5 for detailed instructions.
Shortcut: Escape
Cancels an ongoing game analysis. This menu item is only enabled while analysis is in progress. When cancelled, analysis stops and any moves already analyzed remain in the Moves List. You can resume analysis later from where it left off.
See section 5.5.6 for more information.
Opens a dialog to analyze multiple games at once. CARA automatically optimizes available CPU cores to analyze multiple games in parallel, maximizing analysis speed. Progress and estimated time remaining are displayed in the status bar, and you can cancel and resume bulk analysis at any time.
See section 5.5.7 for detailed instructions.
Shortcut: Ctrl+Shift+K / ⌘+Shift+K
Opens a dialog to customize the thresholds used for move classification (Brilliant, Best Move, Good Move, Inaccuracy, Mistake, Blunder). These thresholds determine how moves are categorized based on Centipawn Loss (CPL) values. The dialog also includes settings for brilliancy detection, including shallow depth ranges, minimum agreement requirements, and candidate move selection. See section 5.5.2 for more information about move classifications and section 5.5.3 for details on brilliancy detection.
Shortcut: Ctrl+Shift+N / ⌘+Shift+N
Toggles the normalized evaluation graph display mode in the Moves List. When enabled, evaluation values are normalized to a scale that better highlights relative evaluation changes throughout the game, making it easier to identify critical moments and evaluation swings.
Toggles whether CARA performs brilliancy detection after initial game analysis. When enabled, CARA analyzes candidate moves at shallow engine depths to identify exceptional moves that appear suboptimal at shallow depths but are actually strong when analyzed more deeply. This detection step runs automatically after the main analysis completes. See section 5.5.3 for a detailed explanation of how brilliancy detection works.
Toggles whether CARA performs auto-tagging after analysis completes. When enabled, CARA may assign game tags according to the rules described in section 5.5.5 and the tags you allow under (see section 6.7.8). When disabled, no automatic game tags are applied by this feature.
Opens a submenu with a checkable entry for each supported auto-tag (see the table in section 5.5.5). Only checked tags can be added or refreshed by auto-tagging; unchecked rules are skipped. Your selection is saved with your user preferences. This submenu is disabled while is turned off.
Toggles whether CARA automatically navigates to the starting position (PLY 0) when analysis completes. When enabled, the board and Moves List automatically return to PLY 0 after analysis finishes.
Toggles whether CARA automatically switches to the Moves List tab when analysis begins. This is enabled by default, ensuring you can immediately see analysis results as they are generated.
Toggles whether CARA automatically switches to the Game Summary tab when analysis completes. When enabled, you are taken directly to the condensed overview of key game moments and statistics after analysis finishes.
Toggles whether analysis results (evaluations, CPL values, move classifications) are saved in a PGN metadata tag for persistence across sessions. When enabled, analysis data is serialized and stored in the game's PGN, allowing you to preserve analysis results even after closing and reopening the database.
Shortcut: Alt+M / ⌥+M
Starts or stops continuous engine analysis of the current position. When enabled, the engine analyzes the current position and displays principal variation lines with evaluations, depths, and move sequences. Analysis continues automatically as you navigate to different positions. Use the same menu item or shortcut again to stop analysis.
See section 5.6.1 for detailed instructions.
Shortcut: Alt+N / ⌥+N
Adds an additional principal variation line to the MultiPV analysis display. This allows you to compare multiple candidate moves simultaneously. You can add as many lines as needed.
See section 5.6.2 for more information.
Shortcut: Alt+R / ⌥+R
Removes the last added principal variation line from the MultiPV analysis display.
See section 5.6.2 for more information.
Toggles the miniature board preview feature. When enabled, hovering over moves in any PV line displays a small chessboard preview showing the position after that move. This helps you quickly visualize the resulting position.
See section 5.6.3 for more information.
Toggles positional plan exploration for the first principal variation line. When enabled, the chessboard displays colored trajectory lines showing how pieces move through the engine's recommended sequence. Only one plan can be active at a time.
See section 5.6.4 for detailed instructions.
Toggles positional plan exploration for the second principal variation line. When enabled, the chessboard displays colored trajectory lines showing how pieces move through the engine's recommended sequence. Only one plan can be active at a time.
See section 5.6.4 for detailed instructions.
Toggles positional plan exploration for the third principal variation line. When enabled, the chessboard displays colored trajectory lines showing how pieces move through the engine's recommended sequence. Only one plan can be active at a time.
See section 5.6.4 for detailed instructions.
Sets how many pieces to track in the positional plan exploration visualization. Options are 1, 2, or 3 pieces. The system automatically selects the pieces that move most frequently in the active PV line up to this limit. Each tracked piece is assigned a distinct color and displayed with trajectory lines on the chessboard.
See section 5.6.4 for more information.
Sets the exploration depth for piece trajectories in positional plan exploration. Options are 2, 3, or 4 moves ahead. This determines how many moves into the future the trajectory visualization extends, showing the complete path each piece takes through the engine's recommended sequence.
See section 5.6.4 for more information.
Toggles whether other board arrows (played move, best alternative move, PV arrows) are hidden when positional plan exploration is active. When enabled, only the piece trajectory lines are displayed, providing a cleaner view focused on the positional plan visualization.
The menu on the menu bar controls the Player Stats tab in the detail panel: which sections are visible and several chart-specific options. The same nested settings also appear when you right-click inside the matching section on the tab. For what each block shows and how to use it, see section 5.7 Viewing Player Statistics.
Restores Player Stats options to the application template values after confirmation: section visibility, , , and (bins, binning mode, axis layout, gap segments, line style, smoothing, and related choices).
and turn every section’s visibility on or off together, so you can quickly show the full page or clear it and then turn individual sections back on—handy when you want a simpler layout without flipping each toggle option one by one. They only update those section visibility toggles; they do not change the saved options inside , , or .
The remaining entries are toggle options for each Player Stats section (on means the section is shown on the tab). Three submenus supply extra display options where they apply: , , and (for the date-based progression charts). What each section shows is described in section 5.7 Viewing Player Statistics.
Shortcut: Ctrl+Shift+D / ⌘+Shift+D
Removes all annotations from the entire active game. This action affects all positions in the game and cannot be undone.
See section 5.8.3 for more information.
Shortcut: Ctrl+Alt+D
Removes all annotations for the current position (move) in the game. Annotations for other positions remain unchanged.
See section 5.8.3 for more information.
Shortcut: Ctrl+Alt+S
Saves all annotations to the active game by serializing them into a PGN metadata tag. Annotations are compressed and stored separately from the PGN move notation, keeping the PGN clean. This marks the game as modified, and annotations will be persisted when you save the database.
See section 5.8.3 for more information.
When checked, moves that have annotations are highlighted in the Moves List: the White and Black move columns (algebraic notation) use the dominant color from the annotations for that move as a background, with contrasting text so the move remains readable. This makes it easy to see at a glance which moves in the game have annotations. The setting is saved in your user preferences.
Opens the Annotation Preferences dialog for customizing the annotation color palette and text font settings. Changes are saved to your user settings and persist across sessions.
See section 5.8.2 for detailed instructions.
Shortcut: Ctrl+E
Opens a dialog to add a new UCI-compatible chess engine to CARA. You can browse for the engine executable file, and CARA will automatically validate that it supports the UCI protocol. The first engine you add is automatically assigned to all analysis tasks.
See section 5.1.1 for detailed instructions.
For each configured engine, a submenu is displayed with the engine's name. Each submenu provides the following options:
Only one engine can be assigned to each task at a time.
See section 5.1.2 for more information about task assignment.
Opens a dialog for configuring AI model settings. CARA supports three options: OpenAI, Anthropic, and Custom endpoint (e.g. a local LLM). You must configure at least one provider and select a model before using the AI Summary feature. For custom endpoints, set the base URL (and optionally an API key) and choose a model; see section 7.9.
To acquire API keys for cloud providers:
For a custom endpoint, an API key is optional (e.g. leave empty for local servers).
Toggles whether to use OpenAI models for AI Summary. When enabled, OpenAI models are available for selection. This option is mutually exclusive with "Use Anthropic Models" and "Use Custom Endpoint"—only one provider can be active at a time.
Toggles whether to use Anthropic models for AI Summary. When enabled, Anthropic models are available for selection. This option is mutually exclusive with "Use OpenAI Models" and "Use Custom Endpoint"—only one provider can be active at a time.
Toggles whether to use the custom endpoint (e.g. local LLM) for AI Summary. When enabled, models from the configured custom base URL are available. This option is mutually exclusive with "Use OpenAI Models" and "Use Anthropic Models"—only one provider can be active at a time.
Toggles whether game analysis data (evaluations, move classifications, CPL values, best move alternatives) is included in the pre-prompt sent to the AI model. When enabled, the AI has access to detailed engine analysis, enabling more accurate assessments of moves and positions.
Toggles whether PGN header tags (player names, ELO ratings, event information, etc.) are included in the pre-prompt sent to the AI model. When enabled, the AI has access to this PGN header context, providing more informed responses.
The Notes menu provides actions for managing game notes stored in the current game's PGN (CARANotes tag).
Removes the notes from the current game in memory (clears the CARANotes tag). Shortcut: Ctrl+Shift+E.
Saves the text from the Notes tab into the current game's PGN as a CARANotes tag (in memory). The database is marked as having unsaved changes until you save the database. Shortcut: Ctrl+Alt+N.
Opens the application manual in your default web browser, providing comprehensive documentation and instructions for using CARA.
Opens the CARA Chess YouTube channel in your default web browser, where you can watch video tutorials for using CARA.
Opens the CARA project repository on GitHub in your default web browser, where you can view the source code, report issues, or contribute to the project.
Checks if a newer version of CARA is available.
Opens the About dialog displaying application information, including the application name, version number, description, and copyright information. The dialog provides a quick reference for identifying the CARA version you are using.
This section provides a comprehensive reference of all keyboard shortcuts in CARA.
Essential shortcuts for navigating through games:
Right Arrow: Navigate to next moveLeft Arrow: Navigate to previous moveQuick access to different analysis views:
F1: Switch to Moves List tabF2: Switch to PGN header tags tabF3: Switch to Manual Analysis tabF4: Switch to Game Summary tabF5: Switch to Player Stats tabF6: Switch to Annotations tabF7: Switch to AI Summary tabF8: Switch to Notes tabShortcuts for analyzing games:
Ctrl+G / ⌘+G: Start game analysis for the current gameEscape: Cancel ongoing game analysisCtrl+Shift+K / ⌘+Shift+K: Configure move classification settingsCtrl+Shift+N / ⌘+Shift+N: Toggle normalized evaluation graph modeStandard file management shortcuts:
Ctrl+O / ⌘+O: Open PGN databaseCtrl+S / ⌘+S: Save active PGN databaseCtrl+Shift+S / ⌘+Shift+S: Save active PGN database as...Ctrl+W / ⌘+W: Close active PGN databaseCtrl+Alt+W / ⌘+⌥+W: Close all PGN databasesCtrl+Q / ⌘+Q: Close applicationShortcuts for importing and opening games:
Ctrl+V / ⌘+V: Paste PGN to Clipboard databaseCtrl+Alt+V / ⌘+⌥+V: Paste PGN to active databaseCtrl+Shift+I / ⌘+Shift+I: Import games from online platformsShortcuts for copying and moving game data:
Ctrl+P / ⌘+P: Copy active game PGN to clipboardShift+F: Copy current board position (FEN) to clipboardCtrl+F / ⌘+F: Paste FEN position to boardCtrl+Shift+C / ⌘+Shift+C: Copy selected games to clipboardCtrl+Shift+X: Cut selected games to clipboardShortcuts for managing and switching column profiles:
1 - 9: Switch to column profile 1 through 9Ctrl+Shift+P / ⌘+Shift+P: Save current profileCtrl+Alt+P / ⌘+⌥+P: Save current profile as...Ctrl+Shift+Delete / ⌘+Shift+Delete: Remove current profileShortcuts for toggling board display elements:
X: Rotate board 180 degreesAlt+C / ⌥+C: Toggle coordinates displayAlt+T / ⌥+T: Toggle turn indicatorAlt+I / ⌥+I: Toggle game information displayAlt+E / ⌥+E: Toggle evaluation barAlt+U / ⌥+U: Toggle material widgetAlt+G: Toggle Game Tags widgetAlt+H / ⌥+H: Toggle positional heatmapAlt+P / ⌥+P: Toggle played move arrowAlt+B / ⌥+B: Toggle best next move arrow (PV1)Alt+2 / ⌥+2: Toggle PV2 arrowAlt+3 / ⌥+3: Toggle PV3 arrowAlt+A / ⌥+A: Toggle best alternative move arrowAlt+4 / ⌥+4: Toggle move classification iconsAlt+L / ⌥+L: Toggle annotations layerShortcuts for manual position analysis:
Alt+M / ⌥+M: Start or stop continuous engine analysisAlt+N / ⌥+N: Add principal variation lineAlt+R / ⌥+R: Remove principal variation lineShortcuts for managing annotations:
Ctrl+Alt+S: Save annotations to current gameCtrl+Alt+D: Clear all annotations for current moveCtrl+Shift+D / ⌘+Shift+D: Clear all annotations for current gameShortcuts for managing chess engines:
Ctrl+E: Add engineShortcuts for database management and bulk operations:
Ctrl+Shift+F / ⌘+Shift+F: Search games across databasesCtrl+Shift+W / ⌘+Shift+W: Close search results tabCtrl+Shift+R / ⌘+Shift+R: Bulk replace tagsCtrl+Alt+T / ⌘+⌥+T: Bulk add/remove tagsCtrl+Shift+L / ⌘+Shift+L: Bulk clean PGNCtrl+Shift+U / ⌘+Shift+U: Deduplicate gamesCtrl+Shift+C / ⌘+Shift+C: Clear Clipboard databaseShortcuts for controlling PGN notation display:
Ctrl+M / ⌘+M: Toggle metadata displayCtrl+Shift+M / ⌘+Shift+M: Toggle comments displayCtrl+Shift+V / ⌘+Shift+V: Toggle variations displayCtrl+Shift+T / ⌘+Shift+T: Toggle non-standard tags displayCtrl+Shift+A / ⌘+Shift+A: Toggle annotations displayCtrl+R / ⌘+R: Toggle results displayShortcuts for game notes:
Ctrl+Shift+E: Clear notes for current gameCtrl+Alt+N: Save notes to current gameThe config.json file controls all UI styling, layout dimensions, colors, fonts, and application-wide default settings. While the file is read-only from the application's perspective, you can manually edit it to customize CARA's appearance without modifying any source code.
The config.json file is located in the app/config/ directory and uses a hierarchical JSON structure. Colors are specified as RGB arrays with values from 0 to 255 (e.g., [217, 217, 217] for light gray). Font sizes are specified in points, and dimensions are in pixels.
To change the colors of the chessboard squares:
config.json in a text editor and navigate to: ui → panels → main → board → squares"light_color": [217, 217, 217] - Color for light squares (default: light gray)"dark_color": [58, 117, 196] - Color for dark squares (default: blue)"squares": {
"light_color": [240, 217, 181],
"dark_color": [181, 136, 99]
}
config.json before making changes. Invalid JSON syntax will prevent CARA from starting. Use a JSON validator or text editor with JSON syntax checking to ensure your changes are valid.
You can customize many other visual elements in config.json:
ui → panels → main → boardfont_family and font_size propertiesui → dialogsui → panelsui → panels → detail → moveslist → colorsCARA allows you to customize how PGN files are formatted when saving databases. The PGN export settings control whether move notation is wrapped at a fixed width or saved as a single line.
To configure PGN export formatting:
config.json in a text editor and navigate to: pgn → export"use_fixed_width": true - When true, move notation is wrapped at the specified width. When false, move notation is saved as a single continuous line."fixed_width": 80 - The character width limit when use_fixed_width is true. Default is 80 characters, which is a common standard for PGN files."pgn": {
"export": {
"use_fixed_width": true,
"fixed_width": 80
}
}
CARA allows you to configure how PGN files are processed when importing games. The PGN import settings control character handling during file loading.
To configure PGN import settings:
config.json in a text editor and navigate to: pgn → import"strip_pua_characters": true - When true, removes Unicode Private Use Area (PUA) characters (U+E000-U+F8FF) from PGN text during import. These characters are used by ChessBase and other chess software for special font symbols. When fonts don't support these characters, they appear as blue boxes or other visual artifacts. Setting this to true removes them automatically during import to ensure clean PGN text."pgn": {
"import": {
"strip_pua_characters": true
}
}
CARA allows you to customize the visual appearance of PGN notation in the Detail Panel, including colors, fonts, and how annotations and NAGs are displayed.
Note: The display format for NAG move assessments (symbols vs. text) can be changed via the PGN menu (Display NAG move assessments as...) and is not configured through config.json.
To customize PGN display formatting:
config.json in a text editor and navigate to: ui → panels → detail → pgn_notation → formattingElement Colors and Styling:
"headers" - Color and bold styling for PGN header tags (Event, Site, Date, etc.)"move_numbers" - Color and bold styling for move numbers (1., 2., etc.)"moves" - Color and bold styling for chess moves (e4, Nf3, etc.)"comments" - Color and italic styling for move comments"variations" - Color and italic styling for move variations (alternative lines)"results" - Color and bold styling for game results (1-0, 0-1, 1/2-1/2)Active Move Highlighting:
"active_move" - Background color, text color, and bold styling for the currently active move in the main lineAnnotation Display Settings:
"annotations.good" - Color and bold styling for good move annotations (!)"annotations.bad" - Color and bold styling for poor move annotations (?)"annotations.interesting" - Color and bold styling for interesting move annotations (!?)"annotations.dubious" - Color and bold styling for dubious move annotations (?!)NAG (Numeric Annotation Glyph) Settings:
"nags.color" - Text color for NAG text"nags.bold" - Whether NAG text is displayed in bold"nags.italic" - Whether NAG text is displayed in italic"formatting": {
"headers": {
"color": [100, 150, 255],
"bold": true
},
"moves": {
"color": [220, 220, 220],
"bold": false
},
"annotations": {
"use_symbols": true,
"good": {
"color": [100, 255, 100],
"bold": true
}
},
"nags": {
"color": [200, 150, 255],
"bold": false,
"italic": true,
"show_text": true
},
"comments": {
"color": [180, 200, 255],
"italic": true
},
"variations": {
"color": [180, 180, 180],
"italic": true
},
"results": {
"color": [255, 255, 100],
"bold": true
},
"active_move": {
"background_color": [100, 120, 180],
"text_color": [255, 255, 255],
"bold": true
}
}
CARA provides configurable logging to help with debugging and troubleshooting. Logging can be configured for both console output and file output, with separate log levels for each.
Important: Console logging is only visible when you launch CARA from a terminal. This is always true for manual installations. For app bundles, it depends on the platform: Windows and macOS bundles are typically started via the GUI (no console), while Linux bundles can be started from a terminal to see console output.
To configure logging settings:
config.json in a text editor and navigate to: logging"enabled": true - Enable or disable console logging. Set to false to disable console output."level": "ERROR" - Log level for console output. Valid values are: "DEBUG", "INFO", "WARNING", "ERROR". Only messages at or above this level will be displayed."enabled": true - Enable or disable file logging. Set to false to disable log file creation."level": "ERROR" - Log level for file output. Valid values are: "DEBUG", "INFO", "WARNING", "ERROR". Only messages at or above this level will be written to the log file."max_size_mb": 10 - Maximum size of the log file in megabytes before rotation. When the file reaches this size, it is rotated to a backup file."backup_count": 5 - Number of backup log files to keep. Older files are automatically deleted when this limit is exceeded."filename": "cara.log" - Base filename for log files. Log files are automatically timestamped with the date (e.g., cara_2026-01-15.log)."logging": {
"console": {
"enabled": true,
"level": "ERROR"
},
"file": {
"enabled": true,
"level": "DEBUG",
"max_size_mb": 10,
"backup_count": 5,
"filename": "cara.log"
}
}
user_settings.json and engine_parameters.json:
cara.py is located).%APPDATA%\CARA\ (usually C:\Users\YourUsername\AppData\Roaming\CARA\).~/Library/Application Support/CARA/.$XDG_DATA_HOME/CARA/ (if set) or ~/.local/share/CARA/.Win+R, type %APPDATA%\CARA, and press Enter to open the folder in File Explorer.⌘+Shift+G (Go to Folder), type ~/Library/Application Support/CARA, and press Enter.In addition to the standard logging levels, CARA provides detailed debug logging for UCI engine communication and AI service interactions. These debug logs provide detailed information about:
To enable these advanced debug logs:
config.json in a text editor and navigate to: debug → show_debug_menu"show_debug_menu": true to enable the Debug menu in the application.The user_settings.json file stores your personal preferences and settings. While most settings are managed through the application interface, understanding the file structure can be helpful for advanced users who want to manually edit settings or transfer configurations between installations.
The file contains several main sections:
While you can manually edit user_settings.json, be aware that:
active_profile must reference a profile that exists in moves_list_profiles)The engine_parameters.json file stores engine-specific parameters and options for each configured chess engine. This file is automatically managed by the application, but understanding its structure can help with advanced engine configuration.
The file contains a dictionary mapping engine IDs to parameter configurations. Each engine entry includes:
evaluation, game_analysis, and manual_analysis tasksManual editing of engine_parameters.json is generally not recommended, as the application manages this file automatically. However, if you need to make advanced changes:
user_settings.jsonCARA uses several custom PGN metadata tags to store analysis data and annotations. Understanding these tags can help you work with CARA-generated PGN files in other applications or manually inspect the stored data.
When "Store Analysis results in PGN Tag" is enabled, CARA stores analysis data in compressed format:
The analysis data is stored as gzip-compressed JSON, then base64-encoded to ensure it's valid within PGN tag values. This keeps the PGN file size manageable while preserving all analysis information.
When annotations are saved to a game, CARA stores them in a similar compressed format:
Each annotation includes its type, position, color, size, rotation, and other properties. The data is compressed and encoded to keep PGN files clean and manageable.
These custom tags are automatically hidden from the PGN Notation Pane display to keep the move notation clean. They are always excluded from PGN view, regardless of the "Show Non-Standard Tags" setting. The tags remain in the PGN file and are preserved when saving databases.
This section covers common issues and their solutions.
If CARA fails to start, check the following:
config.json, verify the JSON syntax is valid. Use a JSON validator or text editor with JSON syntax checking. Restore from backup if needed.pip list to verify PyQt6, python-chess, requests, asteval, and charset-normalizer are present.python --version.If an engine fails validation:
If your settings aren't being saved:
user_settings.json and engine_parameters.jsonIf game analysis isn't working:
This section provides tips for optimizing CARA's performance, especially when working with large databases or performing intensive analysis.
Optimize engine performance by configuring appropriate parameters:
Improve performance when working with large databases:
Optimize your analysis workflow:
The following table describes all available columns:
| Column Name | Description |
|---|---|
| Basic Columns | |
| # | Move number (1, 2, 3, ...) |
| White | White's move in SAN notation |
| Black | Black's move in SAN notation |
| Comment | Move comments from PGN |
| Evaluation Columns | |
| Eval White | Evaluation after white's move (formatted as "+X.X" or "M{N}") |
| Eval Black | Evaluation after black's move (formatted as "-X.X" or "-M{N}") |
| CPL White | Centipawn loss for white's move. CPL measures evaluation lost by playing a move instead of the best move: CPL = |eval_after_best_move - eval_after_played_move| |
| CPL Black | Centipawn loss for black's move |
| CPL White 2 | CPL for white's move vs. PV2 (second-best engine move) |
| CPL White 3 | CPL for white's move vs. PV3 (third-best engine move) |
| CPL Black 2 | CPL for black's move vs. PV2 (second-best engine move) |
| CPL Black 3 | CPL for black's move vs. PV3 (third-best engine move) |
| Best Moves Columns | |
| Best White | Engine's best move suggestion for white (SAN notation) |
| Best Black | Engine's best move suggestion for black (SAN notation) |
| Best White 2 | Engine's second-best move (PV2) for white |
| Best White 3 | Engine's third-best move (PV3) for white |
| Best Black 2 | Engine's second-best move (PV2) for black |
| Best Black 3 | Engine's third-best move (PV3) for black |
| White Is Top 3 | "✓" if white's move matches any top 3 engine moves, empty otherwise |
| Black Is Top 3 | "✓" if black's move matches any top 3 engine moves, empty otherwise |
| Analysis Columns | |
| Assess White | Move quality assessment for white's move (Brilliant, Best Move, Good Move, Inaccuracy, Mistake, Blunder, Miss, or Book Move). Assessment thresholds are configurable in the classification settings. |
| Assess Black | Move quality assessment for black's move. Assessment thresholds are configurable in the classification settings. |
| White Depth | Engine search depth for white's move analysis |
| Black Depth | Engine search depth for black's move analysis |
| White SelDepth | Engine selective depth (depth of principal variation) for white's move analysis. If the engine does not report seldepth on every info line, the displayed value is at least the search depth. |
| Black SelDepth | Engine selective depth (depth of principal variation) for black's move analysis. If the engine does not report seldepth on every info line, the displayed value is at least the search depth. |
| Material Columns | |
| White Capture | Piece captured by white's move (e.g., "P", "N", "R") |
| Black Capture | Piece captured by black's move (e.g., "P", "N", "R") |
| White Material | White's material balance in centipawns after move (calculated using piece values: Pawn: 100, Knight/Bishop: 300, Rook: 500, Queen: 900) |
| Black Material | Black's material balance in centipawns after move |
| Position Columns | |
| Eco | ECO code (opening classification, e.g., "B20") |
| Opening Name | Opening name from ECO database |
| FEN White | FEN string of position after white's move |
| FEN Black | FEN string of position after black's move |
CARA allows you to customize the formulas used to calculate estimated ELO ratings and accuracy percentages for players. These formulas are defined in config.json.
The formula configurations are located in config.json under the game_analysis section:
game_analysis → elo_estimation - Formula for estimating player ELOgame_analysis → accuracy_formula - Formula for calculating overall player accuracygame_analysis → phase_accuracy_formulas - Formulas for calculating phase-specific accuracy (opening, middlegame, endgame)Each formula configuration contains the following fields:
formula: A string containing the mathematical expression to evaluate. If omitted or empty, CARA uses the default formula.value_on_error: The value to return if the formula evaluation fails (default: 0 for ELO, 0.0 for accuracy)._examples: (Optional) A dictionary of example formulas for reference. These are not used by the application but serve as documentation.config.json before making changes. Invalid JSON syntax will prevent CARA from loading the configuration file. Formula evaluation errors will cause CARA to use the value_on_error value. If the formula field is missing or empty, CARA will use the default formula.
Variables for Overall Accuracy and ELO Formulas: The following variables are available for use in overall accuracy and ELO estimation formulas:
total_moves: Total number of moves in the game (integer)non_book_moves: Number of moves analyzed (excluding book moves) (integer)book_moves: Number of book moves (moves found in opening books) (integer)blunders: Number of blunders made by the player (integer)mistakes: Number of mistakes made by the player (integer)inaccuracies: Number of inaccuracies made by the player (integer)misses: Number of missed opportunities (e.g., missing a checkmate, missing a winning move, or missing a critical tactical opportunity) (integer)best_moves: Number of best moves played (integer)good_moves: Number of good moves played (integer)brilliant_moves: Number of brilliant moves played (integer)average_cpl: Average centipawn loss across all analyzed moves (float)median_cpl: Median centipawn loss across all analyzed moves (float)min_cpl: Minimum centipawn loss (best move) (float)max_cpl: Maximum centipawn loss (worst move) (float)blunder_rate: Blunder rate as a decimal (0.0 to 1.0) (float)mistake_rate: Mistake rate as a decimal (0.0 to 1.0) (float)accuracy: Calculated accuracy percentage (0.0 to 100.0) (float) - Note: This variable is only available in the ELO formula, not in the accuracy formula itself (to avoid circular dependency)has_won: 1 if the player won the game, 0 otherwise (integer)has_drawn: 1 if the game was a draw or had an undefined result, 0 otherwise (integer)opening_moves: Total number of moves in the opening phase (integer)middlegame_moves: Total number of moves in the middlegame phase (integer)endgame_moves: Total number of moves in the endgame phase (integer)average_cpl_opening: Average centipawn loss in the opening phase (float)average_cpl_middlegame: Average centipawn loss in the middlegame phase (float)average_cpl_endgame: Average centipawn loss in the endgame phase (float)Variables for Phase-Specific Accuracy Formulas: Phase-specific accuracy formulas (opening, middlegame, endgame) have access to all the variables above, plus the following phase-specific and overall comparison variables:
total_moves: Number of moves in this specific phase (integer) - Note: In phase formulas, this refers to the phase-specific move count, not the overall gameblunders: Number of blunders in this specific phase (integer)mistakes: Number of mistakes in this specific phase (integer)inaccuracies: Number of inaccuracies in this specific phase (integer)misses: Number of misses in this specific phase (integer)best_moves: Number of best moves in this specific phase (integer)good_moves: Number of good moves in this specific phase (integer)brilliant_moves: Number of brilliant moves in this specific phase (integer)blunder_rate: Blunder rate for this specific phase (0.0 to 1.0) (float)mistake_rate: Mistake rate for this specific phase (0.0 to 1.0) (float)average_cpl: Average centipawn loss for this specific phase (float) - Note: In phase formulas, this refers to the phase-specific CPLtotal_moves_overall: Total number of moves in the entire game (integer)non_book_moves_overall: Total number of analyzed moves in the entire game (integer)book_moves_overall: Total number of book moves in the entire game (integer)blunders_overall: Total number of blunders in the entire game (integer)mistakes_overall: Total number of mistakes in the entire game (integer)inaccuracies_overall: Total number of inaccuracies in the entire game (integer)misses_overall: Total number of misses in the entire game (integer)best_moves_overall: Total number of best moves in the entire game (integer)good_moves_overall: Total number of good moves in the entire game (integer)brilliant_moves_overall: Total number of brilliant moves in the entire game (integer)blunder_rate_overall: Overall blunder rate for the entire game (0.0 to 1.0) (float)mistake_rate_overall: Overall mistake rate for the entire game (0.0 to 1.0) (float)average_cpl (overall context): Overall average centipawn loss for the entire game (float) - Note: This is also available as a separate variable for comparison_overall suffix refer to statistics for that specific phase, while variables with the _overall suffix refer to statistics for the entire game. This allows you to compare phase performance against overall game performance.
The following functions are available in all formulas:
min(x, y): Returns the minimum of two valuesmax(x, y): Returns the maximum of two valuesabs(x): Returns the absolute value of a numberint(x): Converts a value to an integernot(x): Returns the logical negation of a value (1 if x is 0/false, 0 if x is non-zero/true)Standard mathematical operators are also supported: +, -, *, /, ** (exponentiation), and parentheses for grouping.
min() and max() functions in your formulas to ensure values stay within desired ranges. For example, to clamp accuracy between 5.0 and 100.0, use: max(5.0, min(100.0, your_formula))
The ELO estimation formula calculates an estimated ELO rating based on player performance. You should use max(0, ...) in your formula to ensure negative ELO values are not returned.
Default Formula:
"formula": "max(0, int(2800 - (average_cpl * 8.5) - ((blunder_rate * 50 + mistake_rate * 20) * 40)))"
Example Custom Formulas:
A simplified formula that only considers average centipawn loss:
"formula": "max(0, int(2800 - (average_cpl * 10)))"
Add a bonus for wins and a penalty for losses (when the player has not won and has not drawn):
"formula": "max(0, int(2800 - (average_cpl * 8.5) - ((blunder_rate * 50 + mistake_rate * 20) * 40) + (has_won * 50) - ((1 - has_won) * (1 - has_drawn) * 30)))"
Directly converts accuracy percentage to ELO (e.g., 90% accuracy ≈ 2520 ELO):
"formula": "max(0, int(accuracy * 28))"
The accuracy formula calculates a player's accuracy percentage. You should use max(min_value, min(100.0, your_formula)) in your formula to ensure the result stays within the desired range (typically 0.0 to 100.0, though the default formula uses 5.0 as the minimum).
Default Formula:
"formula": "max(5.0, min(100.0, 100.0 - (average_cpl / 3.5)))"
Example Custom Formulas:
A simplified formula with a different scaling factor:
"formula": "100.0 - (average_cpl / 2.0)"
Ensures accuracy never drops below 10%:
"formula": "max(10.0, 100.0 - (average_cpl / 3.0))"
Applies an additional penalty based on blunder rate:
"formula": "max(0.0, 100.0 - (average_cpl / 3.5) - (blunder_rate * 100))"
CARA supports separate accuracy formulas for each game phase (opening, middlegame, and endgame). These formulas are configured under game_analysis → phase_accuracy_formulas in config.json.
Each phase has its own formula configuration with the same structure as the overall accuracy formula:
phase_accuracy_formulas → opening → formula - Formula for opening phase accuracyphase_accuracy_formulas → middlegame → formula - Formula for middlegame phase accuracyphase_accuracy_formulas → endgame → formula - Formula for endgame phase accuracyDefault Phase Formulas:
"opening": {
"formula": "max(5.0, min(100.0, 100.0 - (average_cpl_opening / 3.5)))",
"value_on_error": 0.0
},
"middlegame": {
"formula": "max(5.0, min(100.0, 100.0 - (average_cpl_middlegame / 3.5)))",
"value_on_error": 0.0
},
"endgame": {
"formula": "max(5.0, min(100.0, 100.0 - (average_cpl_endgame / 3.5)))",
"value_on_error": 0.0
}
Example: Comparing Phase Performance to Overall Game:
"formula": "max(5.0, min(100.0, 100.0 - (average_cpl_opening / 3.5) - ((blunder_rate - blunder_rate_overall) * 30.0)))"
This formula penalizes the opening phase accuracy if the opening blunder rate is higher than the overall game blunder rate.
To customize a formula:
Locate the formula configuration:
Open config.json in a text editor and navigate to: game_analysis → elo_estimation, game_analysis → accuracy_formula, or game_analysis → phase_accuracy_formulas (for phase-specific formulas)
Modify the formula string:
Edit the "formula" field with your desired expression. For example:
"elo_estimation": {
"formula": "max(0, int(2800 - (average_cpl * 10)))",
"value_on_error": 0
}
Set error handling (optional):
Adjust "value_on_error" to specify what value should be returned if the formula evaluation fails. This is useful for debugging or providing fallback values.
Save and restart:
Save the file and restart CARA for the changes to take effect. The new formulas will be used for all game summaries and player statistics calculations.
value_on_error value.
When calculating player statistics across multiple games, CARA calculates ELO and accuracy for each individual game using the configured formulas, then averages these values. This approach ensures that each game contributes equally to the final statistics, regardless of game length or number of moves analyzed.
For example, if a player has three games with ELO estimates of 1800, 1900, and 2000, the player's average ELO will be 1900, not a single calculation based on all moves combined.
CARA can use any OpenAI-compatible API as an AI Summary provider. That includes local servers such as LM Studio or Ollama, so you can run a model on your own machine for privacy, no cloud cost, or offline use.
http://localhost:1234/v1).The same custom endpoint flow works with other servers that expose an OpenAI-compatible API (e.g. Ollama, or your own deployment). Use their base URL in AI Model Settings and, if required, add an API key.
http://localhost:1234/v1 for LM Studio’s default).{%- set enable_thinking = false %} to the prompt template (Jinja) in AI Model Settings.CARA works with any UCI-compatible engine. If you just want one strong default, start with Stockfish.
Conventional (alpha-beta) engines are typically faster, making them a great choice for responsive analysis and day-to-day use. They run well on standard CPUs and don’t require specialized hardware.
Neural network-based engines can provide a different evaluation perspective. They are often slower and may benefit from stronger hardware (especially a GPU, depending on the engine/build), but they can be very insightful for exploring plans and positional ideas.