Skip to content

About

Find and reclaim macOS "System Data" storage — including the AI model weights other cleaners miss. Free and open source.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Storage Control

Find out what "System Data" actually is — and get the space back.

macOS buries tens of gigabytes under a storage category it refuses to explain. Storage Control opens it up: it scans the 18 places that space actually hides, shows you what is in each one, and lets you reclaim it a file at a time.

Free, open source, no account, no telemetry, no upsell.

Storage Control showing 61.88 GB reclaimable, with the AI Models category expanded to list cached Ollama, LM Studio and Hugging Face weights

Why

The built-in storage panel tells you "System Data — 84.2 GB" and stops there. The paid cleaners that fill that gap cost $40–100/year and tend to arrive with a bundle of things you did not ask for.

Storage Control does the one job: show you the bytes, then let you decide.

  • It knows about AI model weights. Every model you ever pulled through Ollama, LM Studio, Hugging Face or Whisper is still on your disk, and the general-purpose cleaners have no idea what a GGUF file is. This is usually the single biggest thing they miss.
  • Every item is explained. Not "Caches — 12 GB" but which app, how big, and when it was last touched.
  • Prioritized, not just sorted by size. A 4 GB folder untouched for a year ranks above a 6 GB one you wrote to this morning.
  • Nothing disappears without you. Deletions go to the Trash. Shell cleanups show you the exact command before running it.

Install

brew tap natexcvi/storage-control https://github.com/natexcvi/storage-control
brew install storage-control

Homebrew compiles it on your machine and links it into /Applications.

Upgrades are brew upgrade storage-control.

Build from source instead
git clone https://github.com/natexcvi/storage-control.git
cd storage-control
make install     # release build, installs to /Applications

Other targets: make dev (debug build), make run, make uninstall. Requires Xcode 16+ and macOS 14 (Sonoma) or later.

Grant Full Disk Access

Several categories live in directories macOS protects. Without this permission they scan as empty rather than failing loudly, which looks like a bug:

System Settings → Privacy & Security → Full Disk Access → add Storage Control

What it scans

Category Location Cleanup
Xcode Derived Data ~/Library/Developer/Xcode/DerivedData Trash
Xcode Archives ~/Library/Developer/Xcode/Archives Trash
Xcode Device Support ~/Library/Developer/Xcode/iOS DeviceSupport Trash
Simulators ~/Library/Developer/CoreSimulator/Devices xcrun simctl delete unavailable
Xcode Caches ~/Library/Caches/com.apple.dt.Xcode Trash
Homebrew Cache ~/Library/Caches/Homebrew brew cleanup --prune=all
Docker Docker Desktop data docker image prune -af
Package Manager Caches npm, yarn, pip, cargo, go, and friends Trash
Application Caches ~/Library/Caches Trash
Time Machine Snapshots Local APFS snapshots Instructions only (needs sudo)
System Logs /var/log Trash
User Logs ~/Library/Logs Trash
iOS Backups ~/Library/Application Support/MobileSync/Backup Trash
Trash ~/.Trash Empty
Old Downloads ~/Downloads, untouched 90+ days Trash
Unused Apps /Applications, unopened 6+ months Trash
Duplicate Files Content-hash matches across your home directory Trash
AI Models Ollama, Hugging Face, LM Studio, GPT4All, Jan, PyTorch Hub, TensorFlow Hub, MLX, llama.cpp, Whisper, Replicate Trash

Duplicate detection runs in three stages — group by size, then partial SHA-256, then full SHA-256 — so only genuine byte-for-byte matches are ever reported.

Ollama stores models as content-addressed blobs that different tags share. Storage Control parses each manifest and reference-counts every blob, so a model's listed size is what you would actually reclaim — shared bytes are called out separately and never deleted out from under another model.

On safety

This app deletes things, so it is worth being precise about how:

  • File deletions use FileManager.trashItem. Items go to the Trash and can be put back. Storage Control never calls rm on your files.
  • Shell cleanups are opt-in and shown verbatim. Each command is displayed with a description and requires confirmation. They are the vendors' own cleanup commands (brew cleanup, docker image prune, simctl delete), not custom deletion logic.
  • Nothing runs with elevated privileges. Time Machine snapshots need sudo, so the app declines to touch them and prints the command for you to run yourself.
  • Selection is explicit. Nothing is checked by default; there is no one-click "clean everything".

It is still a tool that removes files. Read what is selected before you clean.

Development

swift build && swift run    # fastest iteration, no install
make dev                    # debug build installed to /Applications
make icon                   # regenerate AppIcon.icns from SF Symbols

Pure SwiftUI on macOS 14+, no external dependencies. Architecture notes are in CLAUDE.md. Issues and pull requests are welcome — especially new categories, which are a self-contained addition to Scanner.swift.

License

MIT — see LICENSE.

About

Find and reclaim macOS "System Data" storage — including the AI model weights other cleaners miss. Free and open source.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages