# Configuration

The `ta` command will work out-of-the-box with no configuration file, using default values.

Configuration is read from `taskchampion.toml` in your config directory.
On Linux systems, that directory is `~/.config`.
On OS X, it's `~/Library/Preferences`.
On Windows, it's `AppData/Roaming` in your home directory.
This can be overridden by setting `TASKCHAMPION_CONFIG` to the configuration filename.

The file format is [TOML](https://toml.io/).
For example:

```toml
data_dir = "/home/myuser/.tasks"
```

## Directories

* `data_dir` - path to a directory containing the replica's task data (which will be created if necessary).
  Default: `taskchampion` in the local data directory.

## Command-Line Preferences

* `modification_count_prompt` - when a modification will affect more than this many tasks, the `ta` command will prompt for confirmation.
  A value of `0` will disable the prompts entirely.
  Default: 3.

## Sync Server

If using a local server:

* `server_dir` - path to a directory containing the local server's data.
  This is only used if `server_origin` or `server_client_key` are not set.
  Default: `taskchampion-sync-server` in the local data directory.

If using a remote server:

* `server_origin` - Origin of the TaskChampion sync server, e.g., `https://taskchampion.example.com`.
  If not set, then sync is done to a local server.
* `encryption_secret` - Secret value used to encrypt all data stored on the server.
  This should be a long random string.
  If you have `openssl` installed, a command like `openssl rand -hex 35` will generate a suitable value.
  This value is only used when synchronizing with a remote server -- local servers are unencrypted.
  Treat this value as a password.
* `server_client_key` -  Client key to identify this replica to the sync server (a UUID)
  If not set, then sync is done to a local server.

## Snapshots

* `avoid_snapshots` - If running on a CPU-, memory-, or bandwidth-constrained
  device, set this to true.  The effect is that this replica will wait longer
  to produce a snapshot, in the hopes that other replicas will do so first.

## Reports

* `reports` - a mapping of each report's name to its definition.
  See [Reports](./reports.md) for details.

## Editing

As a shortcut, the simple, top-level configuration values can be edited from the command line:

```shell
ta config set data_dir /home/myuser/.taskchampion
```
