Skip to main content

artifact-locker

artifact-locker stores a small local catalog of files and syncs that current state through OCI with oras.

The installed CLI is available as both artifact-locker and the shorter artlock.

The model is intentionally simple:

  • every artifact is a real stored file
  • the local catalog is the source of truth
  • push makes the remote match local current state
  • pull restores that current state on another machine

Commands

  • artifact-locker bootstrap [--repository <oci-repo>] [--artifact-dir <dir>]
  • artifact-locker init
  • artifact-locker add [source-or-url]
  • artifact-locker list [query]
  • artifact-locker find <query>
  • artifact-locker show <query>
  • artifact-locker remove <query>
  • artifact-locker verify --catalog|--local|--all
  • artifact-locker push
  • artifact-locker pull

Repo Layout

.
├── catalog/
│   ├── artifacts.json
│   └── checksums.txt
├── config.json
└── staging/
    └── release-assets/

config.json stores the OCI repository and the local artifact directory. By default the managed repo lives under ~/.local/share/artifact-locker/ and the managed payload directory is ~/.local/share/artifact-locker/artifacts.

Managed payloads are stored in a flat local tree by platform and filename:

~/.local/share/artifact-locker/artifacts/<platform>/<filename>

Artifact IDs remain in the catalog and OCI tags. Older local trees that still use per-artifact ID directories are tolerated and are migrated forward on write. Category remains catalog metadata for filtering and notes, but it is no longer part of the local serving path.

Registry authentication is external. For ECR Public:

aws ecr-public get-login-password --region us-east-1 | \
  oras login -u AWS --password-stdin public.ecr.aws

Usage

artifact-locker bootstrap \
  --repository public.ecr.aws/o7l3z5i2/artifact-locker \
  --artifact-dir ~/tools/payloads
artifact-locker init
artifact-locker add ./Seatbelt.exe --platform windows --category bin --no-input
artifact-locker add https://example.test/tool.zip --platform linux --category archive --no-input
artifact-locker find seatbelt
artifact-locker show Seatbelt.exe
artifact-locker remove seatbelt
artifact-locker push
artifact-locker pull

The OCI repository is treated as fully owned by artifact-locker. Any remote tag not part of the current live state may be removed on push.

bootstrap is the intended first-run setup command for a consumer machine:

  • initializes the local repo layout if needed
  • writes config.json overrides when provided
  • pulls the current remote catalog by default

Use --skip-pull if you only want local initialization/config without a networked sync.

Development

./scripts/test.sh

Install:

pipx install artifact-locker

Upgrade:

pipx upgrade artifact-locker

Uninstall:

pipx uninstall artifact-locker

Release:

./scripts/release.sh patch

Release files for artifact-locker 0.3.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for artifact-locker 0.3.6
File Size Uploaded
artifact_locker-0.3.6.tar.gz 29.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for artifact-locker 0.3.6
File Interpreter ABI Platform
artifact_locker-0.3.6-py3-none-any.whl Python 3 none any Details

Total release size: 56.2 kB

Release files / artifact_locker-0.3.6.tar.gz

Download URL artifact_locker-0.3.6.tar.gz
Size 29.6 kB
Tags Source
SHA-256 checksum
How to use checksums
cd73e12d503fb743f909e5e91b34dbf390b7ec1f72ab333dfac2eafd6514a762
BLAKE2b-256 checksum
How to use checksums
69dfa992b371715ab19bde83f661c4aba1685b026b408624dee2e0c0eb46d69a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 21, 2026.

Transparency log

Release files / artifact_locker-0.3.6-py3-none-any.whl

Download URL artifact_locker-0.3.6-py3-none-any.whl
Size 26.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1fa936c9ac6623aa1418450495b07ef549fce10af161f0d9d0bda1667c5de72e
BLAKE2b-256 checksum
How to use checksums
d00f50e6671a37e73c2007a1785a551b9d626347b2f987a5de3d302e230a2471
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 21, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.3.6 This release

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page