Version Files
version.files declares which files carry managed versions. atmos version track apply rewrites those files from the lock file, and verify fails when they drift.
Configuration
When version.files is omitted, managers with default paths run over those defaults. An explicit files: [] is different from omitting the key: it means "manage zero files," and suppresses the default-path fallback.
version.files, like every other atmos.yaml setting, follows Atmos's standard import precedence: the main atmos.yaml's own value always wins over an import: fragment or atmos.d/ file that also sets version.files, including files: []. An imported fragment can only supply version.files when the main file doesn't mention the key at all — it can never override or clear a list the main file already declares.
Managers
github-actions- Rewrites
uses:refs in workflow files by matchingowner/repopackages. marker- Rewrites version tokens on lines annotated with
atmos:versioncomments. json- Writes locked values into JSON files at configured field paths, preserving formatting and key order.
template- Renders
*.tmplsource files to sibling files using the.versioncontext.
Updating Dockerfiles
Annotate the line to update with an atmos:version comment. The marker manager rewrites the version token in place from the lock file, matching entries by name. Given this atmos.yaml:
atmos version track apply prod keeps annotated lines in sync with the locked versions:
- Single Tool
- Multiple Tools
- YAML
- Custom Match Pattern
A file can track more than one tool — each just needs its own marker line:
The same annotation works in any commented format — the manager rewrites whatever token it finds on the marked line, not just Dockerfile ENV statements:
Use match= when the default token detection is ambiguous, for example a version-shaped path segment appearing before the actual version. A trailing comment marks its own line:
A standalone comment on the preceding line marks the next non-blank, non-comment line instead:
Updating JSON Files
The json manager writes locked values into JSON files at configured field paths, using sjson/gjson dot-path syntax. Unlike a full JSON parse and re-serialize, sjson patches only the targeted field and leaves the rest of the file's bytes — formatting, key order, whitespace — untouched.
atmos version track apply prod writes the resolved value at the configured path:
- Single Field
- Multiple Fields
Only the version value's bytes change — every other key, its ordering, and any unusual spacing in the file is preserved exactly.
A file can have more than one managed field — each just needs its own set entry, and a rule can list more than one target file:
path follows sjson/gjson dot syntax: dots nest into objects, a bare number indexes into an array, and a literal dot inside a key name is escaped as \.. path is always a YAML string — quote numeric segments (path: "0"), or the value decodes as a YAML integer and fails validation.
A simple path (no wildcards) that doesn't exist yet in the file is created rather than rejected, so double-check path for typos — a misspelled path silently adds a new field instead of updating the intended one. Wildcard/query paths (items.#.version, *, ?, @) update every matching location when the path resolves against the current document, but error instead of silently doing nothing when it resolves to nothing — for example, an empty array or a missing parent key.
A few configurations are rejected outright rather than risking silent data loss:
- Array-append paths (any
-1segment) — there's no way to tell "already applied" from "not yet applied" by reading the array back, so everyapplywould append another element forever. - A
pathwhose current value is an object or array — writing a scalar there would silently discard the whole subtree. Target the specific field inside it instead (engines.node, notengines). - Two
setentries targeting the samepath— the second write would otherwise silently discard the first.
Updating GitHub Action Workflows
The github-actions manager rewrites uses: refs in workflow files, matching entries by owner/repo package.
- Version Bump
- Pinned to SHA
Add a dependency for the action and register the manager:
atmos version track apply prod rewrites the matching uses: line to the locked version:
Set update.pin: sha to pin third-party actions to their immutable commit SHA instead — Atmos writes the SHA with the human-readable version as a trailing comment, matching the Renovate/Dependabot convention:
Examples
atmos version track apply prod
atmos version track apply prod --check
atmos version track apply prod --manager=github-actions