# atmos config

The `atmos config get|set|delete|list|format` commands read and edit values in your
`atmos.yaml` configuration using dot-notation paths — this is already the canonical
form for the config domain (there's no separate `atmos config config` sub-namespace,
unlike `stack`/`vendor`). Edits preserve comments, anchors/aliases, Atmos YAML
functions, and Go templates, so you can script configuration changes without
`sed`/`yq` and without losing formatting.

## Usage

```shell
atmos config get <path>
atmos config set <path> <value> [--type <type>]
atmos config delete <path>
atmos config list [path-pattern] [--format <format>]
atmos config format
```

By default these commands target the `atmos.yaml` (or `.atmos.yaml`) in the current
directory or git root. Use the global `--config` flag to target a specific file.

## Subcommands

- [`atmos config get`](/cli/commands/config/config-get) — read a value by path.
- [`atmos config set`](/cli/commands/config/config-set) — set a value by path.
- [`atmos config delete`](/cli/commands/config/config-delete) — delete a value by path.
- [`atmos config list`](/cli/commands/config/config-list) — list editable setting paths.
- [`atmos config format`](/cli/commands/config/config-format) — format the active `atmos.yaml` file.

## Examples

```shell
# Read the configured log level.
atmos config get logs.level

# Set a string value.
atmos config set logs.level Debug

# Set a typed (boolean) value.
atmos config set --type=bool components.terraform.apply_auto_approve true

# Delete a value.
atmos config delete logs.file

# List every editable path.
atmos config list

# Format the active atmos.yaml file.
atmos config format

# Target a specific file.
atmos config set logs.level Trace --config ./atmos.yaml
```
