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
pushmakes the remote match local current statepullrestores that current state on another machine
Commands
artifact-locker bootstrap [--repository <oci-repo>] [--artifact-dir <dir>]artifact-locker initartifact-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|--allartifact-locker pushartifact-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.jsonoverrides 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)
| File | Size | Uploaded | |
|---|---|---|---|
| artifact_locker-0.3.6.tar.gz | 29.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 logRelease 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