DevCleaner 1.6.2 hibernate Docker Compose projects (volumes + images) and one-click polyglot restore
I've been iterating on DevCleaner - a Mac menu bar app that scans dev junk (Xcode DerivedData, simulators, node_modules graveyards, Docker/OrbStack/Colima bloat, Homebrew caches, AI tool caches, etc.) and lets you clean safely with risk labels.
The last couple releases ( 1.6.1 + 1.6.2 ) are mostly about project hibernation - archiving dead side projects off your SSD instead of keeping 30 GB on disk because "setting it back up later is annoying."
The problem I was solving
I keep old repos around for bad reasons. Source is small; dependencies and Docker runtime aren't. A docker-compose folder might be 200 MB of YAML and 8 GB of Postgres + custom images. Zipping the repo never felt like a real archive.
Docker project hibernation (1.6.1)
For projects with a Docker Compose file, hibernation now captures runtime state, not just files:
Named volumes are always snapshotted - DBs, Redis, persistent compose data. Non-negotiable; that's the data you'd lose with a plain zip.
Images:
Light archive - source + volume snapshots; images rebuilt via docker compose build on restore
Full archive - images saved with docker save for offline restore
Restore imports volumes back, loads or rebuilds images, restores project files
Docker-only folders count - docker-compose.yml without a git repo is now detected as an archivable project
Caveats I'll be upfront about: Docker daemon should be running during archive/restore; bind mounts outside the project tree aren't captured as volumes; running containers aren't stopped for you.
One-click polyglot restore
Light archives strip all regenerable deps (node_modules, .venv, target, .gradle, etc.) but keep lockfiles.
On restore, DevCleaner detects every package manager in the project and chains them into one command, e.g.:
npm install && pip install -r requirements.txt && docker compose -f 'docker-compose.yml' build
One Run button - not "here's npm, good luck with Python."
(Repo with only package.json → npm install. Repo with npm + pip + compose → all three. Full archive skips reinstall - everything was kept.)
Restore preview
Before you commit to a restore, you can preview what will happen: archive integrity, destination path (including (restored) if the original folder still exists), file count, top-level listing, Docker summary. Eye button in Archived Projects - won't pull down an iCloud-evicted archive just to peek.
1.6.2 - small but important fix
Smart Triggers (auto-clean safe caches when you quit Xcode, Cursor, etc.) were too conservative - 7-day age filter + stale scan data meant 0 KB freed. Fixed: resolves that app's categories fresh on each quit, default is any age, notification says e.g. "Cleaned Cursor caches - freed 1.2 GB".
Pricing / what's free
Free: scanners, menu bar clean, Docker prune helpers, restore from archives
Pro (14-day trial): project hibernation / archiving - yearly or lifetime
Download: devcleaner.app
If you run a graveyard of compose stacks or polyglot repos on a 512 GB MacBook, curious whether this matches how you think about "archiving" dev projects. Happy to answer technical questions in the comments.


Replies
My SSD is currently hosting a retirement community of abandon side projects . This feels like the first tool that's actually designed for developers who refuse to let anything go. 😆
DevCleaner
@philip_coleman1 Ha - the retirement home metaphor is painfully accurate. I built DevCleaner because my own SSD was basically a museum of “I’ll definitely come back to this” repos, each one dragging along 4 GB of DerivedData and a Docker graveyard.
The goal wasn’t “delete your history” - it was “stop paying rent on projects you’re not actively touching.” Glad it resonates. If you try it, I’d love to hear what category surprised you most on the first scan. 😄
@dawedeveloper This is a very real dev problem. The source code is usually not what fills the disk — it’s the forgotten runtime state, volumes, images, caches, and dependencies around it. I like the hibernation idea because it treats old projects as something you may actually want to restore later, not just delete and hope for the best.
DevCleaner
@alpertayfurr You nailed the diagnosis - source trees are tiny compared to the orbit around them: Docker volumes, simulator runtimes, node_modules, Gradle caches… that’s where the real GBs hide.
Hibernation came from exactly that: most “old” projects aren’t trash, they’re maybe later. Archive strips the regenerable junk, keeps lockfiles/git, and lets you restore without the “did I just nuke something important?” panic. Really appreciate you getting the design intent - that comment is going in my notes. 🙏
@dawedeveloper Thanks for the thoughtful reply, David. That “maybe later” framing makes a lot of sense. I’ll keep following the updates — really curious to see how DevCleaner evolves from here.
DevCleaner
@alpertayfurr Thank you so much. 😊 DevCleaner to the moon 🚀
@dawedeveloper I see that and I wish you continued success :)