# atmos stack config set

Set a component-relative value for a component in a stack. Atmos uses provenance to
find the manifest file that defines the effective value and edits that file in place,
preserving comments, anchors/aliases, Atmos YAML functions, and Go templates. This is
the canonical form; [`atmos stack set`](/cli/commands/stack/stack-set) is a convenience
alias for this command.

## Usage

```shell
atmos stack config set <path> <value> -s <stack> -c <component> [--type <type>] [--file <manifest>]
```

## Examples

```shell
# Set the value where it currently resolves from. Component vars have no fixed
# schema, so --type=auto (the default) infers from the value already there --
# a bool/int stays a bool/int, not a quoted string.
atmos stack config set vars.region us-west-2 -s plat-ue2-prod -c vpc

# A brand-new vars.<name> key with nothing existing to infer from still infers
# correctly if the component's variables.tf declares a type for it -- writes
# an unquoted number, not the string "3", because `variable "replicas" { type
# = number }` says so. This also retypes an existing value if it disagrees
# with the declared type (e.g. a number stored as a quoted string).
atmos stack config set vars.replicas 3 -s plat-ue2-prod -c vpc

# Explicit --type skips inference (needed for a brand-new key with nothing to
# infer from, or to override).
atmos stack config set settings.spacelift.workspace_enabled true --type=bool -s plat-ue2-prod -c vpc

# Edit (or create the key in) a specific manifest. A brand-new key with no
# Terraform-declared type still infers from its own shape -- "true" is
# written as a bool here, not the literal string "true".
atmos stack config set vars.new_flag true --file stacks/deploy/prod.yaml -s plat-ue2-prod -c vpc
```

## Arguments

- **`<path>` (required)**
  Component-relative dot-notation path (e.g. 
  `vars.region`
  ).
- **`<value>` (required)**
  The value to set, interpreted according to 
  `--type`
  .

## Flags

- **`--stack` / `-s` (string, required)**
  The stack name.
- **`--component` / `-c` (string, required)**
  The component name.
- **`--type` (string, default `auto`)**
  How to interpret 
  `<value>`
  : 
  `auto`
   (infer from the component's declared Terraform variable
  type for 
  `vars.*`
   paths, then from the type of the value already at the path, then from the new
  value's own shape, falling back to string with a warning), 
  `string`
  , 
  `int`
  , 
  `bool`
  , 
  `float`
  ,

  `null`
  , or 
  `yaml`
   (raw literal).
- **`--file` (string)**
  Edit this manifest explicitly instead of resolving via provenance. Required when the value is not yet defined anywhere; can also be used to create new keys.

:::note
Edits that would alter or expand a YAML anchor or alias are rejected to avoid silently
mutating shared data, as are multi-document manifests and manifests 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.
:::

## Related

- Alias: [`atmos stack set`](/cli/commands/stack/stack-set)
