atmos artifacts
Publish files and directories as named, versioned artifacts, then pull, copy, inspect, list, search, sign, and verify them from one command space. Repositories live in local directories, local archives, S3 buckets, and OCI registries or layouts, and each one is addressed by an alias that you define in atmos.yaml.
Define repositories, authentication identities, packaging, write coordination, and signature verification policy under the top-level artifacts section of atmos.yaml.
Usage
atmos artifacts <subcommand> [flags]
Quick Start
Define artifact-writer under auth.identities first, then define two repositories, publish a directory to one, and copy it to the other:
artifacts:
repositories:
backups:
kind: local/dir
options:
path: ./.artifacts/backups
shared:
kind: aws/s3
identity: artifact-writer
options:
bucket: acme-artifacts
prefix: shared
atmos artifacts publish ./dist --repository=backups --name=builds/app --version=build-123
atmos artifacts list --repository=backups
atmos artifacts copy builds/app:build-123 --from=backups --to=shared
atmos artifacts pull builds/app:build-123 --repository=shared --output=./restore
Repositories and References
A repository is a collection root that holds many named artifacts. The keys under artifacts.repositories (backups, shared) are arbitrary aliases that you choose, and every command selects a repository by alias with --repository. A command that needs a repository fails when you omit it, even when only one is configured. Only list and search default to all configured repositories.
An artifact reference takes one of two forms:
name:versionA name and an explicit version label, for example
components/terraform/vpc:1.2.0. Names are lowercase, slash-separated paths. Versions follow the OCI tag grammar and are opaque labels; they do not need to be SemVer. A reference without a version is rejected, because there is no implicitlatest.name@sha256:<digest>An immutable digest reference.
signaccepts only this form. Other commands accept it wherever they acceptname:version.
Digests
Results label each digest by what it identifies:
resolved_digestThe digest the repository resolved the reference to. On OCI repositories it is the manifest or index digest. On local and S3 repositories it is the Record digest.
record_digestThe digest of the portable Record, which binds the name, version, metadata, inventory, content digest, and document digests. For Atmos packages, signatures cover the Record, so evidence survives changes of physical representation. Foreign OCI graphs are signed at their original OCI root.
content_digestThe portable digest of the package content (the file inventory and documents), independent of how a repository stores it.
representation_digestThe checksum of the stored or transferred representation, such as an archive. It changes when packaging changes, while
content_digestdoes not.
A checksum is never a signature. Use atmos artifacts verify to check signature evidence against your trust policy.
Output
Every command except show prints a result to stdout and reports progress and status messages on stderr, so output pipes cleanly. The --format flag selects the rendering:
text(default for single-artifact commands): alignedname: valuelines. Optional values that do not apply are omitted.jsonandyaml: a structured result with the same field names, whichever format you choose.table,csv, andtsv(additional formats forlistandsearch).
Single-artifact commands share these named result fields:
outcomecreated,unchanged,replaced,deleted,read,dry-run, orfailed.ref- The resolved
name:versionreference. location- The primary storage location: a path, object key, or registry reference.
resolved_digest,record_digest,content_digest,representation_digest- The digests described above.
size- The payload size in bytes.
lock_scope- The actual write-coordination scope of a mutation:
hostorrepository.
The structured result also carries operation_id, action, repository, requested_ref, duration_ns, and diagnostics, plus command-specific fields. list and search return an artifacts array in which each entry carries repository, ref, name, version, kind, labels, and the digests.
Failures
A failed command exits with a nonzero status. For a command that runs, --format=json or --format=yaml writes a result to stdout with outcome: failed and an error field. Usage errors, such as invalid argument counts or unknown flags, stop execution without a structured result. In text mode, a failure writes nothing to stdout and the error appears on stderr with hints.
Environment Variables
Every flag has an ATMOS_ARTIFACTS_ environment variable: ATMOS_ARTIFACTS_REPOSITORY, ATMOS_ARTIFACTS_NAME, ATMOS_ARTIFACTS_VERSION, ATMOS_ARTIFACTS_KIND, ATMOS_ARTIFACTS_FORCE, ATMOS_ARTIFACTS_DRY_RUN, ATMOS_ARTIFACTS_LABELS, ATMOS_ARTIFACTS_README, ATMOS_ARTIFACTS_CHANGELOG, ATMOS_ARTIFACTS_OUTPUT, ATMOS_ARTIFACTS_FROM, ATMOS_ARTIFACTS_TO, ATMOS_ARTIFACTS_REFRESH, ATMOS_ARTIFACTS_FORMAT, and ATMOS_ARTIFACTS_YES. A command-line flag overrides its environment variable, which overrides the default.
Authentication and CI
Repositories authenticate through Atmos Auth identities named in artifacts.repositories.<alias>.identity, so there is no separate login. Signing can prompt for Sigstore confirmation or identity-provider login. In CI, pass --yes or set ATMOS_ARTIFACTS_YES to accept confirmation; configure the identity provider for unattended authentication. Use --dry-run to validate a publication without contacting a repository or resolving credentials.
Subcommands
Build and maintain the optional discovery catalog of an artifact repository.
List releases in the repository's published catalog.
Build a catalog snapshot from an inventory without publishing it.
Publish a catalog snapshot to the repository's configured catalog.
Unlist a release from the repository's published catalog.
Merge an inventory's releases into the repository's published catalog.
Copy an artifact between two configured repositories.
Delete one published artifact reference from a repository.
Show the metadata, digests, and signature status of an artifact without downloading its payload.
List artifacts and versions across the configured repositories.
Publish a file or directory as a versioned artifact in a configured repository.
Verify and materialize an artifact into a local directory.
Search artifacts by name, kind, description, and labels.
Show the README or CHANGELOG of an artifact without downloading its payload.
Add signature evidence to an immutable artifact digest.
Require a trusted, valid signature for an artifact.
Related
- Artifacts Configuration: repositories, identities, packaging, locking, and verification policy
- Authentication: identities used by
identity