# atmos config set

Set a value in your `atmos.yaml` configuration using a dot-notation path. The edit
preserves comments, anchors/aliases, Atmos YAML functions, and Go templates.

## Usage

```shell
atmos config set <path> <value> [--type <type>]
```

By default the value is written as a string. Use `--type` to write a typed scalar
or a raw YAML literal.

## Examples

```shell
# String value (default).
atmos config set logs.level Debug

# Typed values.
atmos config set --type=bool components.terraform.apply_auto_approve true
atmos config set --type=int components.terraform.parallelism 10

# Raw YAML literal (lists, maps).
atmos config set --type=yaml 'logs.exclude' '["a", "b"]'

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

## Arguments

- **`<path>` (required)**
  Dot-notation path to the value (e.g. 
  `logs.level`
  ).
- **`<value>` (required)**
  The value to set. Interpreted according to 
  `--type`
  .

## Flags

- **`--type` (string, default `string`)**
  How to interpret 
  `<value>`
  : 
  `string`
  , 
  `int`
  , 
  `bool`
  , 
  `float`
  , 
  `null`
  , or 
  `yaml`
   (a raw YAML/yq literal inserted verbatim).
- **`--config` (string, inherited)**
  Target a specific 
  `atmos.yaml`
   file instead of the one discovered in the current directory or git root.

:::note
Edits that would alter or expand a YAML anchor or alias (including changing a value
shared by an anchor) are rejected to avoid silently mutating shared data, as are
multi-document YAML files and files that define the same anchor name more than once.
Comments, anchors, indentation width, and line endings (CRLF/LF) are preserved, but
blank lines between entries are dropped and non-indented sequence styles are
normalized when a file is edited.
:::
