# CLI config is loaded from the following locations (from lowest to highest priority): # system dir ('/usr/local/etc/atmos' on Linux, '%LOCALAPPDATA%/atmos' on Windows) # home dir (~/.atmos) # current directory # ENV vars # Command-line arguments # # It supports POSIX-style Globs for file names/paths (double-star '**' is supported) # https://en.wikipedia.org/wiki/Glob_(programming) vendor: # Path to vendor configuration file or directory containing vendor files # Supports both absolute and relative paths # If a directory is specified, all `.yaml` and `.yaml` files in the directory will be processed in lexicographical order # Can also be set using 'ATMOS_VENDOR_BASE_PATH' ENV var, or '--vendor-base-path' command-line argument # Examples: # base_path: "./vendor.yaml" # Single file # base_path: "./vendor.d/" # Directory containing multiple vendor configuration files base_path: "./vendor.yaml" components: terraform: # Optional `command` specifies the executable to be called by `atmos` when running Terraform commands # If not defined, `terraform` is used # Examples: # command: terraform # command: /usr/local/bin/terraform # command: /usr/local/bin/terraform-1.8 # command: tofu # command: /usr/local/bin/tofu-1.7.1 # Can also be set using 'ATMOS_COMPONENTS_TERRAFORM_COMMAND' ENV var, or '--terraform-command' command-line argument command: terraform # Can also be set using 'ATMOS_COMPONENTS_TERRAFORM_BASE_PATH' ENV var, or '--terraform-dir' command-line argument # Supports both absolute and relative paths base_path: "components/terraform" # Can also be set using 'ATMOS_COMPONENTS_TERRAFORM_APPLY_AUTO_APPROVE' ENV var apply_auto_approve: false # Can also be set using 'ATMOS_COMPONENTS_TERRAFORM_DEPLOY_RUN_INIT' ENV var, or '--deploy-run-init' command-line argument deploy_run_init: true # Can also be set using 'ATMOS_COMPONENTS_TERRAFORM_INIT_RUN_RECONFIGURE' ENV var, or '--init-run-reconfigure' command-line argument init_run_reconfigure: true # Can also be set using 'ATMOS_COMPONENTS_TERRAFORM_AUTO_GENERATE_BACKEND_FILE' ENV var, or '--auto-generate-backend-file' command-line argument auto_generate_backend_file: false init: # Can also be set using 'ATMOS_COMPONENTS_TERRAFORM_INIT_PASS_VARS' ENV var, or '--init-pass-vars' command-line argument pass_vars: false helmfile: # Can also be set using 'ATMOS_COMPONENTS_HELMFILE_BASE_PATH' ENV var, or '--helmfile-dir' command-line argument # Supports both absolute and relative paths base_path: "components/helmfile" # Can also be set using 'ATMOS_COMPONENTS_HELMFILE_USE_EKS' ENV var # If not specified, defaults to 'true' use_eks: true # Can also be set using 'ATMOS_COMPONENTS_HELMFILE_KUBECONFIG_PATH' ENV var kubeconfig_path: "/dev/shm" # Can also be set using 'ATMOS_COMPONENTS_HELMFILE_HELM_AWS_PROFILE_PATTERN' ENV var helm_aws_profile_pattern: "{namespace}-{tenant}-gbl-{stage}-helm" # Can also be set using 'ATMOS_COMPONENTS_HELMFILE_CLUSTER_NAME_PATTERN' ENV var cluster_name_pattern: "{namespace}-{tenant}-{environment}-{stage}-eks-cluster" stacks: # Can also be set using 'ATMOS_STACKS_BASE_PATH' ENV var, or '--config-dir' and '--stacks-dir' command-line arguments # Supports both absolute and relative paths base_path: "stacks" # Can also be set using 'ATMOS_STACKS_INCLUDED_PATHS' ENV var (comma-separated values string) included_paths: - "orgs/**/*" # Can also be set using 'ATMOS_STACKS_EXCLUDED_PATHS' ENV var (comma-separated values string) excluded_paths: - "**/_defaults.yaml" # Can also be set using 'ATMOS_STACKS_NAME_PATTERN' ENV var name_pattern: "{tenant}-{environment}-{stage}" workflows: # Can also be set using 'ATMOS_WORKFLOWS_BASE_PATH' ENV var, or '--workflows-dir' command-line argument # Supports both absolute and relative paths base_path: "stacks/workflows" logs: # Can also be set using 'ATMOS_LOGS_FILE' ENV var, or '--logs-file' command-line argument # File or standard file descriptor to write logs to # Logs can be written to any file or any standard file descriptor, including `/dev/stdout`, `/dev/stderr` and `/dev/null` file: "/dev/stderr" # Supported log levels: Trace, Debug, Info, Warning, Off # Can also be set using 'ATMOS_LOGS_LEVEL' ENV var, or '--logs-level' command-line argument level: Info validate: # The configuration settings for the editorconfig-checker. editorconfig: # A list of glob patterns (matched the same way as every other # `validate ... --exclude` flag in this repo) to exclude from checks. # *.go is excluded because editorconfig-checker is a naive line-by-line # scanner with no notion of Go syntax: it can't tell a raw string literal's # embedded content (e.g. space-indented YAML test fixtures) from actual Go # source, and flags the former as a tab-indentation violation. gofumpt (via # `atmos lint`) already fully owns real Go source formatting, so editorconfig # checking .go files is both redundant and produces false positives. # # tests/snapshots/**/*.golden captures exact CLI output (lipgloss padding, # trailing whitespace, and no-final-newline are all deliberate parts of # what's being asserted -- see CLAUDE.md's Golden Snapshots section). # .editorconfig has its own override block for this same path, but this # exclude list is the one that actually takes effect here: touching # .editorconfig itself is treated as a rule change that forces a full # non-affected-scoped repo scan (see affectedEditorConfigFiles in # cmd/validate_affected.go), which would surface unrelated pre-existing # violations far outside any single PR's scope. exclude: - "**/*.go" - "tests/snapshots/**/*.golden" # specs/ holds Spec Kit planning docs (spec.md, plan.md, tasks.md, etc.) # generated/edited outside repo formatting conventions; not shipped code. - "specs/**" # If set to true, the default ignore patterns (like .git/*) will not be applied. ignore_defaults: false # Runs the checker without making any changes or producing output, useful for testing configuration. dry_run: false # Specifies the output format. Options: "default", "json". format: "default" # Enables/Disables colored output in the terminal if . color: true # Disables checking for trailing whitespace at the end of lines. disable_trim_trailing_whitespace: false # Disables checking for consistent line endings (e.g., LF vs. CRLF). disable_end_of_line: false # Disables checking for the presence of a newline at the end of files. disable_insert_final_newline: false # Disables checking for consistent indentation style (e.g., tabs or spaces). disable_indentation: false # Disables checking for consistent indentation size (e.g., 2 spaces or 4 spaces). disable_indent_size: false # Disables checking for lines exceeding a maximum length. disable_max_line_length: false # Integrations integrations: # Atlantis integration # https://www.runatlantis.io/docs/repo-level-atlantis-yaml.html atlantis: # Path and name of the Atlantis config file 'atlantis.yaml' # Supports absolute and relative paths # All the intermediate folders will be created automatically (e.g. 'path: /config/atlantis/atlantis.yaml') # Can be overridden on the command line by using '--output-path' command-line argument in 'atmos atlantis generate repo-config' command # If not specified (set to an empty string/omitted here, and set to an empty string on the command line), the content of the file will be dumped to 'stdout' # On Linux/macOS, you can also use '--output-path=/dev/stdout' to dump the content to 'stdout' without setting it to an empty string in 'atlantis.path' path: "atlantis.yaml" # Config templates # Select a template by using the '--config-template ' command-line argument in 'atmos atlantis generate repo-config' command config_templates: config-1: version: 3 automerge: true delete_source_branch_on_merge: true parallel_plan: true parallel_apply: true allowed_regexp_prefixes: - dev/ - staging/ - prod/ # Project templates # Select a template by using the '--project-template ' command-line argument in 'atmos atlantis generate repo-config' command project_templates: project-1: # generate a project entry for each component in every stack name: "{tenant}-{environment}-{stage}-{component}" workspace: "{workspace}" dir: "{component-path}" terraform_version: v1.2 delete_source_branch_on_merge: true autoplan: enabled: true when_modified: - "**/*.tf" - "varfiles/$PROJECT_NAME.tfvars.json" apply_requirements: - "approved" # Workflow templates # https://www.runatlantis.io/docs/custom-workflows.html#custom-init-plan-apply-commands # https://www.runatlantis.io/docs/custom-workflows.html#custom-run-command workflow_templates: workflow-1: plan: steps: - run: terraform init -input=false # When using workspaces, you need to select the workspace using the $WORKSPACE environment variable - run: terraform workspace select $WORKSPACE || terraform workspace new $WORKSPACE # You must output the plan using '-out $PLANFILE' because Atlantis expects plans to be in a specific location - run: terraform plan -input=false -refresh -out $PLANFILE -var-file varfiles/$PROJECT_NAME.tfvars.json apply: steps: - run: terraform apply $PLANFILE # GitHub integration github: gitops: opentofu-version: 1.8.4 terraform-version: 1.9.8 infracost-enabled: false # Validation schemas (for validating atmos stacks and components) schemas: # https://json-schema.org jsonschema: # Can also be set using 'ATMOS_SCHEMAS_JSONSCHEMA_BASE_PATH' ENV var, or '--schemas-jsonschema-dir' command-line argument # Supports both absolute and relative paths base_path: "stacks/schemas/jsonschema" # https://www.openpolicyagent.org opa: # Can also be set using 'ATMOS_SCHEMAS_OPA_BASE_PATH' ENV var, or '--schemas-opa-dir' command-line argument # Supports both absolute and relative paths # If not specified in `atmos.yaml` in `schemas.atmos.manifest`, an embedded schema will be used base_path: "stacks/schemas/opa" # JSON Schema to validate Atmos manifests # https://atmos.tools/cli/schemas/ # https://atmos.tools/cli/commands/validate/stacks/ # https://atmos.tools/quick-start/advanced/configure-validation/ # https://json-schema.org/draft/2020-12/release-notes # https://www.schemastore.org/json # https://github.com/SchemaStore/schemastore # atmos: # Can also be set using 'ATMOS_SCHEMAS_ATMOS_MANIFEST' ENV var, or '--schemas-atmos-manifest' command-line argument # Supports both absolute and relative paths (relative to the `base_path` setting in `atmos.yaml`) # Supports URLs like https://atmos.tools/schemas/atmos/atmos-manifest/1.0/atmos-manifest.json # manifest: "stacks/schemas/atmos/atmos-manifest/1.0/atmos-manifest.json" # manifest: "https://atmos.tools/schemas/atmos/atmos-manifest/1.0/atmos-manifest.json" # `Go` templates in Atmos manifests # https://atmos.tools/core-concepts/stacks/templates # https://pkg.go.dev/text/template templates: settings: enabled: true evaluations: 1 # https://masterminds.github.io/sprig sprig: enabled: true # https://docs.gomplate.ca gomplate: enabled: true timeout: 5 # https://docs.gomplate.ca/datasources datasources: {} settings: # `list_merge_strategy` specifies how lists are merged in Atmos stack manifests. # Can also be set using 'ATMOS_SETTINGS_LIST_MERGE_STRATEGY' environment variable, or '--settings-list-merge-strategy' command-line argument # The following strategies are supported: # `replace`: Most recent list imported wins (the default behavior). # `append`: The sequence of lists is appended in the same order as imports. # `merge`: The items in the destination list are deep-merged with the items in the source list. # The items in the source list take precedence. # The items are processed starting from the first up to the length of the source list (the remaining items are not processed). # If the source and destination lists have the same length, all items in the destination lists are # deep-merged with all items in the source list. list_merge_strategy: replace # Terminal settings for displaying content terminal: # max_width is unlimited by default (0): output uses the full detected # terminal width. Set a positive value only to force narrower wrapping. pager: false # Pager setting for all terminal output unicode: true # Use unicode characters syntax_highlighting: enabled: true formatter: terminal # Output formatter (e.g., terminal, html) theme: dracula # Highlighting theme line_numbers: true # Display line numbers wrap: false # Wrap long lines # Markdown element styling markdown: document: color: "${colors.text}" heading: color: "${colors.primary}" bold: true code_block: color: "${colors.secondary}" margin: 1 link: color: "${colors.primary}" underline: true strong: color: "${colors.secondary}" bold: true emph: color: "${colors.muted}" italic: true docs: generate: # Generate README in current working directory readme: base-dir: . input: - "./README.yaml" # To Do: template can be a remote URL/github, using this local for testing template: "https://raw.githubusercontent.com/cloudposse/.github/5a599e3b929f871f333cb9681a721d26b237d8de/README.md.gotmpl" # The final README output: "./README.md" terraform: source: src/ enabled: false format: "markdown" show_providers: false show_inputs: true show_outputs: true sort_by: "name" hide_empty: false indent_level: 2 # CI build cache (dogfooded in .github/workflows/test.yml). The cache archives # the Atmos XDG cache root (~/.cache/atmos), where CI keeps toolchain installs, # and Terraform's provider plugin cache. The key is defined here (once) rather # than in the workflow because Atmos supplies {{.OS}}/{{.Arch}}, avoiding any # GitHub Actions context juggling. # # The cache is purely an accelerator: the workflow always installs exact pinned # versions, so it stays correct no matter what the cache already holds. The # trailing version token is a manual cache-bust — bump it to start from a clean # cache. restore_keys lets a bumped token still seed from the previous blob. ci: # Enable native CI summaries and failure annotations for repository validation. enabled: true cache: enabled: true key: 'atmos-toolchain-{{.OS}}-{{.Arch}}-v2' restore_keys: - 'atmos-toolchain-{{.OS}}-{{.Arch}}-' toolchain: registries: # Default Aqua registry - name: aqua type: aqua priority: 10 version: check: enabled: true timeout: 1000 # ms frequency: 1h ai: enabled: true mcp: enabled: true servers: atmos: command: atmos args: - mcp - start description: Atmos's own AI tools (describe, list, validate, ...) exposed via MCP