free & open sourcemacOS 14+Apple silicon & Intel

Your Mac is full of kachra.

कचरा  ·  kachra, Hindi and Marathi for trash

node_modules from projects you forgot about, virtual environments, build output, package caches and AI models you tried once. KachraClean finds them, tells you why each one is safe to remove or not, and moves only what you pick to the Trash.

Released without an Apple Developer account, so macOS asks you to confirm the first launch. Here's why, and how to open it.

illustration · example paths

Read-only scanNothing changes until you confirm
Trash, never deleteUndo the last clean with ⌘Z
Works offlineNo account, no tracking
MIT licensedEvery rule is on GitHub

Where the space goes

Most cleaners look in the wrong places for developers.

Mac cleaners are good at app caches and logs. On a Mac used for code and machine learning, most of the space sits in project folders and model caches, which they usually don't list.

Listed by a leading commercial cleaner17.6 GB
Left out by it, found by KachraClean114.8 GB
Caches & logs Project dependencies & builds (120 folders) AI models & weights
Same Mac, same day, October 2026. KachraClean also covers caches and logs; the second bar shows only what the other cleaner didn't list. Method in the research log.

Every suggestion explains itself

Not just a path and a size.

Each item says what it is, why it's there and what it would take to get it back. You decide with the evidence in front of you.

Project dependenciesSafe
~/code/old-dashboard/node_modules
2.9 GB

Nothing in this project has changed for 7 months, and its lockfile can rebuild the folder exactly.

idle 7 monthspackage-lock.jsongit: clean
$ npm ci
AI modelsReview
stabilityai/stable-diffusion-xl-base-1.0
6.9 GB

Downloaded from Hugging Face. None of your projects mention it. Files shared with other models are kept.

Hugging Faceused by 0 projects2 revisions
$ hf cache rm model/stabilityai/stable-diffusion-xl-base-1.0
DockerCareful
Docker Desktop disk image
38.0 GB

Deleting it removes every image, container and volume. Docker can free much of it safely by itself.

images: 21 GB reclaimablebuild cache: 6 GB
$ docker image prune -a

Examples. KachraClean shows Docker's and Hugging Face's own commands for you to copy; it never runs them.

Project dependencies

node_modules, .venv, target, Gradle builds and more, judged by recent activity, git status and lockfiles.

AI models, one by one

Hugging Face and Ollama models at their true size, weights saved by tools like ComfyUI, and which projects use each.

Tool & app caches

npm, pnpm, pip, uv, Homebrew, Xcode and app caches and logs, grouped by who made them.

Disk Explorer

Every folder in your home, biggest first, in Finder-style columns, with suggestions marked where they live.

What grew since last time

Each scan is compared with the last one, so a runaway cache shows up before the disk fills.

Apps, installers, duplicates

Unused apps with the evidence behind each verdict, installers for apps you already have, and identical downloads.

Safety

Built to be trusted with Full Disk Access.

A cleaner that removes the wrong folder is worse than no cleaner at all. Every suggestion carries a level and a reason, and only Safe ones are pre-selected.

Safe

Comes back by itself: caches, or dependencies of an idle project with a lockfile.

Review

Probably fine, but your call: models, large files, projects you're working on.

Careful

Removing it loses something real, like Docker's containers and volumes. Explained, never pre-selected.

  1. 01
    Scanning only readsNothing on disk changes until you press Move to Trash and confirm.
  2. 02
    The Trash, never deleteEverything goes to the Trash, and the last clean can be undone.
  3. 03
    A second check before anything movesThe cleaner re-checks every path itself. It refuses keychains, mail, Photos, Safari, cloud folders, SSH keys and cloud credentials, and anything outside your home folder.
  4. 04
    Nothing leaves your MacNo account, no analytics, no network calls. Reports stay on disk, readable only by you.
  5. 05
    Open to inspectionFound a way to make it remove the wrong thing? Report it privately.

Install

Three steps, one honest caveat.

Released without an Apple Developer account

KachraClean is a free side project, and notarizing an app requires a paid Apple Developer account, which we don't have. The app is built with Apple's hardened runtime and an ad-hoc signature, but it isn't notarized. The first time you open it, macOS will say it can't verify the developer.

You don't have to take that on trust. Every release lists its SHA-256 so you can check the download, and the source and build scripts are public if you'd rather build it yourself.

Download

Get the .dmg from the latest release, open it, and drag KachraClean to Applications.

Allow the first launch

Open it once and close the warning. Then go to System Settings → Privacy & Security and click Open Anyway.

Grant Full Disk Access

So the scan can see other apps' caches. Without it, KachraClean runs a limited scan and says so.

Check it, or build it yourself

Compare the checksum with the release notes before opening. Or skip the download: the app builds with the Xcode Command Line Tools, no Xcode needed. The same engine also runs as a command-line tool.

# verify the download
$ shasum -a 256 ~/Downloads/KachraClean-*.dmg

# or build the app from source (Swift 6)
$ git clone https://github.com/nikhilrdeshpande/KachraClean
$ cd KachraClean && ./scripts/build-app.sh

# command line: read-only scan, then a dry run
$ swift build -c release
$ .build/release/kachra scan
$ .build/release/kachra clean --category toolCaches

Built in the open

Started as a public case study.

Before writing code, we studied how a popular commercial cleaner behaves, using the reverse-engineering toolkit REA and an AI agent, under clean-room rules. What it does well, what it misses on a developer's Mac, and which of its numbers can be reproduced with public macOS APIs: all of it is written up.

Read the research log
Observe, don't decompileWe watched its behaviour: file layout, what it read during scans, its results screens.
Never circumventNo decompiled code, no decrypted data files, no bypassed licensing.
Spec first, then codeFindings were written in our own words. The code was written only from those notes and Apple's public documentation.

Questions

Fair questions.

Will it delete my code or my files?

Not on its own. It never touches anything you haven't selected and confirmed, and removal only moves items to the Trash, where Put Back or Undo restores them. It suggests folders a tool can rebuild, such as dependencies and build output, never your source files. Active projects and anything personal are marked Review and never pre-selected.

Why isn't it notarized?

Notarization requires a paid Apple Developer account, and KachraClean is a free project that doesn't have one. The app is ad-hoc signed with the hardened runtime, which blocks code injection, but macOS can't tell you who built it. That's why every release lists a checksum and the app builds from source with one command.

Why does it need Full Disk Access?

macOS hides other apps' containers and some caches from every app without it. KachraClean only reads during a scan and works in a limited mode if you decline. The only program it ever starts is Docker Desktop's own signed CLI, to ask how much Docker could free.

Does it free "System Data" or purgeable space?

No. macOS manages purgeable space itself and frees it when needed. KachraClean shows what's in your home folder and why, and leaves the system's own storage to macOS.

What does "kachra" mean?

Kachra (कचरा) is Hindi and Marathi for trash: the everyday word for the stuff you meant to throw out.

Is it really free?

Yes. It's MIT-licensed, with no paid tier, no account and no ads.

KachraClean app icon

See where your space went.

The scan is read-only and takes about a minute.