a private Docker registry that remembers
docker login and you're connected: a pull-through cache for
Docker Hub, GHCR, and Quay, hosted repositories for your own images, and underneath, a
registry that pins everything it learns to the digest, records every pull, and can tell
you exactly which images contain the thing that just got an advisory.
connecting is as easy as
docker login gastropod.io # username + an API token as the password # pull through a seeded proxy (dockerhub, ghcr, quay): docker pull gastropod.io/dockerhub/library/nginx:latest # push to a hosted repo: docker tag nginx:latest gastropod.io/<org>/<repo>/nginx:1.0 docker push gastropod.io/<org>/<repo>/nginx:1.0
podman uses identical commands. Proxy vs. hosted is selected by the first path segment; there are no per-repo ports to manage.
what happens on every pull
- Identity is the digest. OCI got this right natively: sha256 is the artifact's name, and gastropod builds on it. Intelligence attaches to the digest, not to a tag that can move.
- Provenance rides along. Sigstore/cosign attestations are checked where publishers sign their images, before the image is served.
- Advisories are correlated to the exact digest, with downstream reach mapped through the images and services built from it.
- The pull is recorded. Which principal pulled which digest, when, and from where, on the audit spine and exportable.
- Layers deduplicate. Content-addressed storage means a hundred images sharing a base layer store it once, and intelligence learned about that layer is learned once, for all of them.
tags lie; digests don't
Two structural facts shape container risk. A tag is a pointer, not a
fact: nginx:latest today is not nginx:latest tomorrow, so anything
concluded about the tag is stale the moment upstream re-points it. And since Docker Hub's
rate limits arrived, a pull-through cache stopped being optional for CI at any scale, which
means a registry already sits in the image path; the only question is whether it's a dumb
cache or a control point. Gastropod is the second thing. Every conclusion, verification,
SBOM, findings, who pulled it, keys to the immutable digest, so it stays true no matter
where tags wander. When an advisory lands on a base image half a fleet is built from, the
blast-radius graph and pull history answer which images, which services, and which teams,
without a manual archaeology session.
proxy, hosted, virtual
proxy
Seeded pull-through caches for Docker Hub, GHCR, and Quay. The first pull fetches and caches; repeat pulls of a digest serve locally and stop counting against upstream rate limits.
hosted
Your own images, pushed with standard
docker push, token-gated with reader and publisher roles.
virtual
One registry hostname aggregating both.
Every feature is on every tier: OIDC SSO, scoped tokens, CycloneDX SBOMs on demand, blast radius, and audit are all present starting at our published rates.
FAQ
can gastropod be a pull-through cache for Docker Hub?
Yes, that's the seeded default, alongside GHCR and Quay. The first pull fetches and caches; later pulls of the same digest serve from local deduplicated storage, which also takes CI out of the rate-limit business.
how do I push private images?
docker login with an API token, then standard
docker tag and docker push to
your-instance/<org>/<repo>/image:tag. Repositories are private by
default; reader and publisher roles are enforced per token.
does it generate SBOMs for images?
Yes. A CycloneDX SBOM is reconstructed on demand for any artifact it serves, keyed to the exact digest, on every tier.
how is this different from running registry:2 or Harbor?
A plain registry moves bytes; Harbor adds scanning per instance. Gastropod's difference is memory: verification, advisories, SBOMs, and findings pin to the digest and follow it everywhere it appears, and every pull attributes to a principal, so incident response starts from a query, not a hunt. Migrating is a login-and-URL change.
do you support cosign / signed images?
Sigstore attestations are checked where publishers provide them, and identity is always pinned to the immutable digest regardless, so a re-tagged or substituted image can't inherit another image's record.
Part of the full product overview. Also speaking: Alpine · Helm.
Docker is a trademark of Docker, Inc. OCI refers to the Open Container Initiative, a Linux Foundation project. Gastropod is not affiliated with either. Details current as of July 2026.