Minimal vs Minimus

Both projects ship small, hardened, low-CVE container images. This page is the measured comparison: 81 exact or same-major/minor version pairs, scanned with the same Grype binary against the same frozen database on 2026-10-15. Another 23available pairs have mismatched or unknown versions and are excluded from the score.

74
Minimal lower
6
Tied
1
Minimal higher
81
Version-matched

Summed across those 81 images, Minimal carries 215 unique CVEs against Minimus's 1089. That total is dominated by a handful of images on both sides, so the per-image table below matters more than the sum.

Where Minimal is worse

Leading with this because it is the part a vendor comparison normally hides. On1 of 81 images Minimal reports more unique CVEs than Minimus:

ImageMinimalMinimusΔMinimal crit/highMinimus crit/high
temporal-server3717+205 / 281 / 4

These are current scan observations, not permanent product properties. The complete raw dataset and version classifications are published below so each difference can be checked.

Full head-to-head

Every exact or same-major/minor version pair, best result first. Δ is Minimal minus Minimus, so negative is better for Minimal.

ImageMinimalMinimusΔMinimal crit/highMinimus crit/high
solr451-470 / 11 / 19
airflow845-370 / 00 / 12
gitlab-runner133-320 / 03 / 25
opensearch330-270 / 01 / 65
node-slim023-230 / 00 / 6
trufflehog525-200 / 31 / 9
seaweedfs019-190 / 01 / 6
cassandra4058-181 / 171 / 19
etcd119-180 / 03 / 14
gitea017-170 / 01 / 5
metrics-server017-170 / 01 / 12
tailscale017-170 / 03 / 12
consul117-160 / 01 / 5
deno016-160 / 00 / 3
openbao117-160 / 01 / 6
skopeo117-160 / 01 / 5
wordpress016-160 / 00 / 2
cosign419-150 / 01 / 6
telegraf116-150 / 01 / 4
zookeeper1529-140 / 70 / 9
flink316-130 / 00 / 2
kube-state-metrics013-130 / 01 / 9
patroni013-130 / 00 / 2
gitleaks113-120 / 00 / 3
postgres-slim012-120 / 00 / 2
python012-120 / 00 / 2
qdrant012-120 / 00 / 1
ruby113-120 / 00 / 3
dotnet011-110 / 00 / 2
erlang011-110 / 00 / 2
fluent-bit011-110 / 00 / 2
go011-110 / 00 / 2
httpd011-110 / 00 / 2
kafka3849-110 / 160 / 15
keycloak314-110 / 00 / 2
kong011-110 / 00 / 2
kustomize011-110 / 00 / 2
nats011-110 / 00 / 1
nginx011-110 / 00 / 2
perl011-110 / 00 / 2
pgbouncer011-110 / 00 / 2
php011-110 / 00 / 2
bun010-100 / 00 / 1
haproxy010-100 / 00 / 1
memcached010-100 / 00 / 1
mosquitto010-100 / 00 / 1
notation111-100 / 00 / 1
rclone111-100 / 00 / 1
redis-slim010-100 / 00 / 1
sqlite010-100 / 00 / 1
unbound010-100 / 00 / 1
valkey010-100 / 00 / 1
neo4j1119-80 / 180 / 10
thanos513-80 / 21 / 6
coredns29-70 / 11 / 6
dex18-70 / 02 / 7
alertmanager17-60 / 02 / 8
descheduler06-60 / 01 / 3
grype511-60 / 31 / 6
kyverno28-60 / 01 / 3
loki39-60 / 01 / 3
syft06-60 / 01 / 3
velero17-60 / 02 / 7
zot17-60 / 01 / 3
blackbox-exporter16-50 / 01 / 3
caddy05-50 / 01 / 3
external-dns16-50 / 01 / 3
kube-vip16-50 / 01 / 3
kubectl16-50 / 01 / 3
kubeseal16-50 / 01 / 3
pushgateway16-50 / 01 / 3
node-exporter15-40 / 01 / 3
oauth2-proxy15-40 / 01 / 3
traefik15-40 / 01 / 3
crane00—0 / 00 / 0
helm11—0 / 00 / 0
opa11—0 / 00 / 0
oras11—0 / 00 / 0
regctl00—0 / 00 / 0
trivy11—0 / 00 / 0
temporal-server3717+205 / 281 / 4

Minimus had 104 public equivalents in this run: 81 were version-matched and scored, while 23 were excluded for mismatched or unknown versions. Minimal also publishes 31 scanned images with no Minimus equivalent; those are excluded entirely rather than scored as wins.

The differences that are not CVE counts

CostMinimal is $0 for the entire catalog, with no tier above it.
LicenceEvery Minimal build recipe is MIT-licensed and in one public repo.
AuthMinimal images pull from GHCR with no account.
Rebuild cadenceMinimal rebuilds the whole catalog daily, matching Minimus's own cadence.
ProvenanceMinimal publishes cosign signatures, an SPDX SBOM and SLSA v1.0 Build L2 provenance.
Catalogue sizeMinimal is deliberately small. If breadth is what you need, it is the wrong tool.

Statements above describe Minimal, and each is checkable with the commands on theverify page. We deliberately do not characterise Minimus's pricing, licensing or roadmap here — those change, and their site is the authority on them.

Trying it

Pull any image and scan it yourself with the same tool used above:

docker pull ghcr.io/rtvkiz/minimal-python:latest
grype ghcr.io/rtvkiz/minimal-python:latest

Migrating an existing deployment? Seemigrating from Minimus to Minimal.

How these numbers were produced

  • Scanner: Grype 0.109.1, vulnerability DB schema v6.1.10, built 2026-10-15T06:30:36Z.
  • DB checksum: https://grype.anchore.io/databases/v6/vulnerability-db_v6.1.10_2026-10-15T00:29:08Z_1792045836.tar.zst?checksum=sha256%3A2f1597f25b5089e966272b251eb4d1f9977e59d57029af1c8810deb6e5321aa2
  • Platform: linux/amd64. Scan date: 2026-10-15.
  • Production latest tags were resolved to immutable digests before scanning, so the run is repeatable.
  • Every image was scanned with the same Grype binary and the same frozen database.
  • Raw Grype findings. No vendor VEX suppression was applied to anyone, including us.
  • Only publicly pullable images were scanned. No paid or private registry credentials were used.
  • Only exact or same-major/minor upstream version pairs are scored. Mismatched and unknown versions are excluded.

The full 540-row dataset, including the resolved reference and digest for every provider/image pair, is here: cve-comparison-2026-10-15.csv. The scored-pair inputs and version classifications are here:cve-comparison-pairs-2026-10-15.csv. Every figure on this page is derived from those files.

What this does not prove

Exact versions can still bundle different feature sets, and same-major/minor pairs can use different patch releases, so an individual outlier still needs inspection before it is treated as a product-level claim. A scanner reports known findings visible to one database snapshot; a low count is not proof that an image is free of vulnerabilities. An image a vendor does not publish is counted as not available — never as zero.