A built-in web UI
Same binary, same port, assets compiled in — no build step, no framework, no CDN, so it works air-gapped. Browse repositories, search names, drill into a manifest.
summ is an OCI-conformant container registry in a single binary — with a built-in web UI, pull counts and tag history. No database, no object store, nothing else to stand up alongside it.
curl -fsSL https://summcr.com/install.sh | sh
$ ./summ serve summ 0.1.0-rc.1 listening on 127.0.0.1:3110 registry http://127.0.0.1:3110/v2/ data dir /home/you/data purge every 1h after 1d unreferenced auth mode open - no credential is required, to pull or to push any process on this machine may pull, push and delete; the listener is on loopback, so nothing else can reach it $ docker push 127.0.0.1:3110/demo/alpine The push refers to repository [127.0.0.1:3110/demo/alpine] latest: digest: sha256:beefc0de… size: 527 $ open http://127.0.0.1:3110 # the web UI is already there
One command on Linux and macOS, or one docker run. A single
file, no runtime dependencies.
The built-in web UI on a real registry — repositories, tags, pull grids and tag timelines.
Open the demo →Apache-2.0, written in Rust, with the docs, the API reference and the deployment guide beside it.
GitHub →Same binary, same port, assets compiled in — no build step, no framework, no CDN, so it works air-gapped. Browse repositories, search names, drill into a manifest.
Every repository, tag and manifest gets a thirty-day contribution grid and a last-24-hours strip. Serving a pull never touches the store, so the counters cost the pull path nothing.
What has this tag pointed at, and what has this manifest ever been called — the same endpoint, addressed by tag or by digest. A deleted tag still answers.
Four of the five serial steps in a cold containerd pull
are metadata lookups. summ is built around a key schema over RocksDB:
nothing is a directory walk, and no stored value grows with the size
of the registry.
A background purge reclaims unreferenced layer bytes, unfinished
uploads and empty names, with a grace period in front of it. A
dry-run pass says what it would reclaim before you let
one run.
--auth-mode open|public-pull|private covers /v2/,
the discovery API and the UI at once, with no exemption list. API keys
over HTTP Basic, so docker login works with no token
server to run.
Conformant. The OCI distribution-spec
conformance suite passes at every profile with zero failures — 1032 checks
at the suite's dev profile, referrers included, nothing skipped.
curl -fsSL https://summcr.com/install.sh | sh
Reads uname, downloads the matching build, checks it
against the published SHA-256 and leaves a single summ in
the current directory. No PATH edits, no service files, no sudo.
./summ serve
docker run -d --name summ -p 3110:3110 -v summ-data:/var/lib/summ summcr/summ
Multi-architecture, so that line is the same on x86_64 and arm64.
Name the volume — without -v you still get one, but an
anonymous volume that docker run --rm deletes.
Either way the registry is on http://127.0.0.1:3110, web UI included.
Or take a tarball directly: Linux x86_64 · Linux arm64 · macOS Apple silicon · macOS Intel