> For the complete documentation index, see [llms.txt](https://docs.wproofreader.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.wproofreader.com/deployment/configuration/application-server/check-kits.md).

# Check kits

A **check kit** is a named proofreading profile.

It defines:

* which engines run for a language
* engine options (locale, dictionaries, models)
* engine **priority** when results overlap

Check kits are configured per language in `AppServerX.xml`.

### Where check kits are used

* **On-premise / self-hosted**: the language default check kit can be modified in the configuration.
* **API / client override**: you can override the default per request with the `check_kit` parameter.

Related:

* [Check API](/api-reference/check-api.md)

### Default check kit behavior

Most languages ship with a single predefined kit.

Some languages ship with multiple kits.

* The usual default is `lt_hs`.
* If AI is installed for a language, the `ai_lt_hs1` kit is typically enabled and set as default.

{% hint style="info" %}
The default kit is defined **inside the language node**.

It is not a global setting.
{% endhint %}

### Check kit inheritance

A check kit can inherit from another one with `Parent="..."`.

* Parent kit settings are copied first.
* Child kit settings override the parent.

Example:

* `ai_lt_hs1` inherits from `lt_hs`
* `ai_lt_hs0` inherits from `ai_lt_hs1` and disables Hunspell suggestions

### Engine priority

Engines have a `Priority` attribute.

Higher number means higher priority.

Related:

* [Engines prioritization while using AI-check kit while proofreading](/faq/technical/languages/engines-prioritization-while-using-ai-check-kit-while-proofreading.md)

### Change the default check kit for a language (self-hosted)

You do it in `AppServerX.xml`.

You then restart AppServer.

{% hint style="warning" %}
Keep **exactly one** kit with `Default="true"` per language.

Make sure the chosen kit is `Enabled="true"`.
{% endhint %}

{% stepper %}
{% step %}

#### Back up AppServerX.xml

Make a copy of `AppServerX.xml` before editing.
{% endstep %}

{% step %}

#### Edit AppServerX.xml

Open `AppServerX.xml`.

Find the target language:

```xml
<Language Id="en_US" Enabled="true">
  ...
  <SupportedCheckKits>
    ...
  </SupportedCheckKits>
  ...
</Language>
```

Inside `<SupportedCheckKits>`, set `Default="true"` on the kit you want.

Remove `Default="true"` from the previous default kit.

**Example: switch default from lt\_hs to ai\_lt\_hs1**

```xml
<SupportedCheckKits>
  <CheckKit Name="lt_hs" Enabled="true">
    ...
  </CheckKit>

  <CheckKit Name="ai_lt_hs1" Default="true" Enabled="true" Parent="lt_hs">
    ...
  </CheckKit>
</SupportedCheckKits>
```

**Example: switch default back to lt\_hs**

```xml
<SupportedCheckKits>
  <CheckKit Name="lt_hs" Default="true" Enabled="true">
    ...
  </CheckKit>

  <CheckKit Name="ai_lt_hs1" Enabled="true" Parent="lt_hs">
    ...
  </CheckKit>
</SupportedCheckKits>
```

{% hint style="danger" %}
If the XML becomes invalid, AppServer may fail to start.

If that happens, check AppServer logs for the exact parse error.
{% endhint %}
{% endstep %}

{% step %}

#### Restart AppServer

Restart AppServer to apply changes in `AppServerX.xml`.

To restart: [stop](https://docs.wproofreader.com/deployment/configuration/application-server/pages/IA2KNQLXDh85TwDivL4y#mainappservercommands-stopappserverwindowslinux2.stopappserver) the application, then [start](https://docs.wproofreader.com/deployment/configuration/application-server/pages/IA2KNQLXDh85TwDivL4y#mainappservercommands-startappserverwindowslinux1.startappserver) it again.

Use [Main AppServer commands](/deployment/configuration/application-server/main-appserver-commands.md).
{% endstep %}
{% endstepper %}

Related:

* [Status API](/api-reference/auxiliary-api-commands/status-api.md)
* [AI engine setup](/deployment/configuration/ai-engine-setup.md)
