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.

FAQ

Do I need Pro to restore a hibernated project?
No. Restore is always free. Only archiving requires Pro.
What is the difference between light and full archive?
Light strips heavy artifacts like node_modules but keeps source and lockfiles. Full keeps everything for offline restore without reinstall.
What if archiving fails?
The original project folder stays untouched. DevCleaner verifies the archive before deleting anything.