kpr

reap plans, sweep deletes

Push. Pull. Forget.

Just enough on top of your registry:3 to stop your disk — and your life — from bloating. Push with a TTL, pull while it lasts, forget the rest. Your registry, your disk back.

$ docker tag my-app:build my-registry:5000/my-app:10m
$ docker push my-registry:5000/my-app:10m
# …10 minutes later it's due — the next sweep deletes it.

Try it.

Note this is not a drop-in replacement — kpr is not a registry, it keeps one clean and tidy. You run a stock registry:3 beside it on a shared volume; kpr marks, sweeps, and collects around it.

Ten minutes, two containers, no database: quickstart. Already run distribution? bolt it on instead.

In short: compose.yml + registry-config.yml per the quickstart, then:

$ docker compose up -d
$ crane copy busybox:latest localhost:5000/test/hello:10s
# ...wait ~10s for the TTL to elapse, then arm both explicitly:
$ docker exec kpr kpr reap --no-dry-run
$ docker exec kpr kpr plan      # see what's due
$ docker exec kpr kpr sweep --no-dry-run

To test the waters first, the console alone:

# console only — this is NOT a registry, pair it with one above
$ docker run --rm -p 8080:8080 -p 9300:9300 ghcr.io/noroutine/kpr:latest