The per-owner permission model: pull/push capability and image-path pull scopes.
An owner is a credential (name + password) that authenticates to the registry. Each owner carries a permission scope that controls what it can do.
| Capability | Controls |
|---|---|
| push | Whether the owner may push (write) manifests/blobs to repos under its own name. |
| pull scopes | A list of glob patterns (path.Match) of ‹owner›/‹name› repo paths the owner may pull. |
Pull-only, limited to one image:
REGISTRY_PASSWORD='s3cret' agent-registry owner add acme \
--no-push \
--pull 'agentics/pks-agent-marketplace'
Pull-only across several images (repeat --pull, globs allowed):
REGISTRY_PASSWORD='s3cret' agent-registry owner add acme \
--no-push \
--pull 'agentics/pks-agent-*' \
--pull 'agentics/shared/*'
The password is read from REGISTRY_PASSWORD, or from stdin if that env var is
unset.
# Replace scopes — pull-only, two image globs, no push:
agent-registry owner perms acme --pull 'agentics/pks-agent-*' --pull 'agentics/demo'
# Grant push (to the owner's own namespace) as well:
agent-registry owner perms acme --push --pull 'agentics/pks-agent-*'
# Restore unrestricted full access:
agent-registry owner perms acme --full
agent-registry owner list # list owners + their scopes
agent-registry owner password acme # rotate the password
agent-registry owner delete acme # remove the owner
‹owner›/‹name› matches one of
the owner's pull-scope globs (or the owner has full access). The catalog
listing is filtered to only the repos an owner may pull.This is what makes customer credentials safe: a --no-push --pull 'agentics/pks-agent-marketplace' owner can pull exactly that one image and
nothing else, and can never push.