---
title: "Root settings"
description: "Root scalar settings (Threads)"
url: "https://docs.justcat.it/reference/project-file/root-settings/"
---
# Root settings


Root settings are single values written at the root of the project file — no indentation before the key, no list under it.

```yaml
Threads: 3
```

## Threads

How many tests CAT evaluates at the same time.

Accepts
: A positive integer, or a string that resolves to one after [environment variable](https://docs.justcat.it/reference/project-file/environment-variables/ "Environment variables") expansion, such as `"%CAT_THREADS%"`.

Default
: `1`. The key may be omitted, and `Threads: 1` has exactly the same effect as omitting it.

Synonyms
: `Threads`.

Rejected
: `0`, a negative number, or a value that is not an integer. Each is reported as an error before any test starts.

### What it does

CAT builds one queue holding all tests of the run, then starts the requested number of threads. Each thread takes the next test off the queue — no other thread sees that test afterwards — evaluates it, and comes back for the next one. A thread ends when it finds the queue empty. Tests are therefore distributed by availability, not split up front, and no ordering between tests is guaranteed.

Once every thread has finished, the results from all of them are assembled and the [outputs](https://docs.justcat.it/reference/outputs/introduction/ "Outputs") are written. That happens on a single thread.

At `Debug` logging level the log records which thread executed which test and when each test started.

> **🙀:** Parallel execution means several queries hitting your servers at the same time. Choosing a level that your systems and their other users can carry is described in [Run tests in parallel](https://docs.justcat.it/how-to-guides/organize-and-run-tests/run-tests-in-parallel/ "Run tests in parallel").



