RegShape (from REGistry reSHAPE) is a CLI tool and a Python library for manipulating artifacts in an OCI registry. While there are many other tools that can do this (see ORAS, regclient, or Google's crane), the goal of RegShape is to provide flexibility to manipulate the requests with an intention to break the consistency of the artifacts.
You can use RegShape in two modes:
- Standard mode — interact with registries as you would with any other tool: pull and push manifests, blobs, tags, and more.
- Expert / break mode — manually craft requests to test registry implementations and probe their security boundaries.
RegShape is written in Python and offers Python libraries that can be leveraged to build your own tools. The CLI is built on top of the libraries and uses the Click framework.
Note: The tool is still in early development and the API is not stable yet.
git clone https://github.com/toddysm/regshape.git
cd regshape
pip install -e .Ping a registry to verify connectivity:
regshape ping registry-1.docker.ioRetrieve a manifest:
regshape manifest get -i docker.io/library/alpine:latestList tags for a repository:
regshape tag list -i docker.io/library/alpine| Command | Spec |
|---|---|
| Auth | specs/cli/auth.md |
| Blob | specs/cli/blob.md |
| Catalog | specs/cli/catalog.md |
| Manifest | specs/cli/manifest.md |
| Tag | specs/cli/tag.md |
| Referrer | specs/cli/referrer.md |
| Ping | specs/cli/ping.md |
| Layout | specs/cli/layout.md |
| Layout Push | specs/cli/layout-push.md |
| Formatting | specs/cli/formatting.md |
- Models — Blob, Catalog, Error, Manifest, Referrer, Tags
- Operations — Blobs, Catalog, Manifests, Referrers, Tags
See CONTRIBUTING.md for instructions on setting up your development environment.
To report a vulnerability, please see SECURITY.md.
This project is licensed under the Apache License 2.0 — see the LICENSE file for details.
