CacheKat 🐈
A TUI to see which dev caches eat your disk — and reclaim space safely, risk-graded. Never touches your data.
Main view — cleanable items on the left (select with space, run with c);
report-only facts on the right (docker volumes, unknown liveness) are visible
but untouchable — the layout itself teaches the safety model:
Confirm gate — nothing cleans without an explicit yes; each item carries
its size and a plain-words consequence, and dry-run (d) describes what
would happen without touching the disk:
Why
Every developer machine accumulates caches that nobody watches: pip wheels, npm tarballs, playwright browsers (old versions pile up per release), docker build cache, dangling images, stopped containers... A fresh scan answers the only question that matters: who is eating the disk, and what is actually safe to reclaim?
Safety model (the feature)
| Category | Behavior |
|---|---|
| True caches (pip, npm, playwright orphans, docker build cache) | Selectable — each row states its plain-words consequence before anything runs |
| Docker volumes (your data) | Report-only. Never cleaned. No flag unlocks this. |
| Docker stopped containers / unused images | Containers: cleanable one by one, each warning that docker rm deletes the container itself (recreate via docker run/compose up; volumes untouched). Images: report-only until per-image selection ships. |
| Anything the probe cannot judge | Honest report-only ("liveness unknown"), never a guess |
- Every scan is read-only; cleaning is an explicit, confirmed selection.
- Dry-run mode (
d): rehearse exactly what would happen — disk untouched. - Probes that fail surface as visible error rows, never swallowed.
Install
pipx install cachekat
Or from source: pipx install git+https://github.com/Aeluris/CacheKat.git
Use
cachekat tui # interactive: scan -> select -> confirm -> clean
cachekat scan # read-only report: who eats the disk
cachekat scan --json # machine-readable
# every command accepts --lang auto|en|zh (auto follows the system language)
Docker rows need the docker daemon running — if the TUI shows
docker daemon unreachable, start Docker Desktop and press r to rescan.
Roadmap
- M0 — skeleton, registry,
scanCLI, pip probe, CI (win+linux) - M1 — docker / npm / playwright probes (orphan detection, volumes red-lined)
- M2 — textual TUI: select, confirm, clean, dry-run
- Per-container selection with loud not-a-cache warnings
- i18n: full en/zh,
--lang auto|en|zh - per-image selection, more cache families (cargo, gradle, ...)
See CHANGELOG.md for details, CONTRIBUTING.md to help, AGENTS.md for the engineering rulebook.
License
MIT — © 2026 Aeluris
Metadata
Release files for cachekat 0.4.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cachekat-0.4.8.tar.gz | 31.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cachekat-0.4.8-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 57.5 kB
Release files / cachekat-0.4.8.tar.gz
| Download URL | cachekat-0.4.8.tar.gz |
|---|---|
| Size | 31.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f80d0c34059ec0b9331f7d6a853e7e7b441dc58e8b4cf19c46ee99cc53091017
|
|
BLAKE2b-256 checksum How to use checksums |
e2535cac23e491990f342280256b0243dfa9a0a5e976d81e6b93704be6868f3e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|
Release files / cachekat-0.4.8-py3-none-any.whl
| Download URL | cachekat-0.4.8-py3-none-any.whl |
|---|---|
| Size | 26.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f30fca3e997c9f5071a54e8cdd85c269bcda47b899823f27eae52783d1f34004
|
|
BLAKE2b-256 checksum How to use checksums |
cd923bc053fd2b92fee18428641bb410cb224749efe0dd99cef459473ec71bb5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.14
|