DevCleaner All docs Download .dmg
Docs / Project Hibernation

Project Hibernation

Move whole inactive projects off your local disk — source, lockfiles, git history and optionally Docker state — then bring them back months later with one click. Archiving requires Pro; restore is always free.

How it works

DevCleaner finds projects under your configured project roots (Settings → Folders) that have not been touched for longer than the abandoned after threshold. In the dashboard:

  • Unused Projects — candidates to archive (Pro)
  • Archived Projects — breadcrumbs pointing at off-disk archives (restore free)

Hibernation is its own flow — it never rides the Clean Now button and never inflates Quick Clean totals.

Light vs full archive

ModeWhat stays in the archiveBest for
LightSource, .git, lockfiles; strips node_modules, Pods, .build, target, etc.Maximum space savings; reinstall deps on restore
FullEverything in the project folderOffline restore with no reinstall step

Choose the default in Settings → Folders → Unused Projects. You can override per archive.

Safety chain

  1. Build archive next to the project
  2. Verify integrity (unzip -t / tar -tzf) and non-zero size
  3. Checksum, move to destination, re-verify
  4. Write a .devcleaner breadcrumb sidecar
  5. Only then delete the original folder

Any failure leaves the project on disk untouched.

Docker projects

For projects with docker-compose.yml or a Dockerfile, DevCleaner can capture the runtime environment:

  • Compose volumes — snapshotted into the archive (requires Docker daemon at archive + restore)
  • Light + Docker — images rebuilt via docker compose build on restore
  • Full + Docker — images saved with docker save for offline restore

Docker-only projects (compose/Dockerfile without git) are detected as archivable. Running containers must be stopped by you before archive.

Restore

Restore from the Archived Projects card, by double-clicking a .devcleaner breadcrumb, or via Preview restore (eye button) to see destination path, file count and top-level contents without downloading an iCloud-parked archive.

If the archive lives in iCloud and is only a placeholder, DevCleaner downloads it first (with a disk-space preflight), then extracts. Conflicts restore as ProjectName (restored) — never overwrites an existing folder.

Dependency reinstall (polyglot)

After a light restore, DevCleaner offers one-click reinstall for every package manager it detects from lockfiles and markers:

EcosystemDetected byCommand
pnpmpnpm-lock.yamlpnpm install
Yarnyarn.lockyarn install
Bunbun.lockbbun install
npmpackage-lock.json / package.jsonnpm install
CocoaPodsPodfilepod install
CargoCargo.tomlcargo fetch
Swift PMPackage.swiftswift package resolve
Gogo.modgo mod download
Composercomposer.jsoncomposer install
Poetry / pip / pipenvpoetry.lock, requirements.txt, Pipfilepoetry install, pip install -r …, pipenv install
Bundler / Maven / GradleGemfile, pom.xml, build.gradle*bundle install, mvn install, ./gradlew build

Commands run in your login shell ($SHELL -ilc) so nvm, Homebrew and other PATH tools work from a GUI app.

Batch archive (Pro)

Archive All in Unused Projects archives every listed project sequentially — with a confirmation showing count and total GB, a progress row, and skip-on-error behaviour.