A 90s Cyberdelia-themed macOS storage analyzer.
"Hack the Planet... starting with your hard drive."
DiskDelia helps you find what's eating your disk space β with a special focus on developer bloat like node_modules, virtual environments, build caches, and Xcode's infamous DerivedData. It comes in two flavors: a retro-styled GUI app and a fast CLI tool.
- Developer-aware scanning β Automatically identifies 60+ programming-related directories (
node_modules,.venv,target,DerivedData,.cargo,.conda, Docker data, and many more) - System data probing β Checks macOS-specific paths like
~/Library/Caches, iOS backups, Simulator data, and iCloud local storage - Large file detection β Finds files above a configurable size threshold
- Cleanup hints β Shows the exact command to clean up each identified item
- Drill-down navigation β Double-click any folder to scan deeper into it, with back button history
- Two interfaces β GUI (
storage-app.py) and CLI (storage-analyzer.py)
No dependencies required β both tools use only the Python standard library.
python3 storage-app.pyThis launches the full Cyberdelia-themed interface with:
- Configurable scan target directory and minimum size threshold
- Color-coded results (yellow = dev, red = system, blue = large files, green = folders)
- One-click actions: Open, Open Parent, Copy Path, Scan Into
- Real-time scanning status with animated terminal aesthetics
# Scan home directory for items >= 100 MB (default)
python3 storage-analyzer.py
# Scan a specific path with a custom threshold
python3 storage-analyzer.py /path/to/scan 50The CLI outputs a color-coded terminal report grouped into:
- Programming / Dev β safely reviewable for cleanup
- Large Files β individual files above the threshold
- Large Folders β non-programming directories worth investigating
| Category | Directories |
|---|---|
| JavaScript | node_modules, .npm, .yarn, .pnpm-store, .next, .nuxt |
| Python | venv, .venv, __pycache__, .tox, .mypy_cache, .pytest_cache, site-packages, .conda, anaconda3, miniconda3, .pyenv |
| Rust | .cargo, target, .rustup |
| Java/JVM | .gradle, .m2, target |
| Ruby | .bundle, .gem, .rbenv |
| Go | go (workspace/modules) |
| iOS/macOS | Pods, DerivedData, .cocoapods, Xcode Archives, iOS DeviceSupport, CoreSimulator |
| Other | .docker, .vagrant, .nvm, .sdkman, .julia, .ghcup, .stack, .opam, .pub-cache, .flutter |
| General | build, dist, vendor, .cache, .local, .Trash |
~/Library/Cachesβ Browser, Xcode, Spotify caches~/Library/Application Supportβ App data (check for removed apps)~/Library/Developer/Xcode/DerivedDataβ Xcode build cache (often 10+ GB)~/Library/Application Support/MobileSync/Backupβ iOS device backups (10-50+ GB)~/Library/Developer/CoreSimulatorβ iOS Simulator data~/Library/Mobile Documentsβ iCloud Drive local cache~/Library/Mailβ Mail.app local storage~/Library/Messagesβ iMessage attachments & history- And more (system logs, temp files, diagnostic data)
The included build-dmg.sh script packages the GUI into a standalone macOS application:
chmod +x build-dmg.sh
./build-dmg.shThis will:
- Create a Python virtualenv and install PyInstaller
- Bundle
storage-app.pyinto a.appusing PyInstaller - Package the
.appinto a distributable.dmgwith an Applications symlink
Output:
dist/DiskDelia.appβ The application bundledist/DiskDelia-1.0.dmgβ The disk image installer
Requirements for building: Python 3.11 via pyenv (~/.pyenv/versions/3.11.8/bin/python3.11)
- Phase 1 β Runs
du -d 3 -kon the target directory to quickly map disk usage up to 3 levels deep - Phase 2 β In parallel:
- Probes known macOS system data paths with
du -sk - Runs
findfor individual large files up to 6 levels deep
- Probes known macOS system data paths with
- Classification β Matches directory names against the known developer tool patterns and tags them by type
- Display β Results are sorted by size (largest first) and color-coded by category
The GUI uses threaded scanning so the interface stays responsive during analysis.
- Start with your home directory (
~) and a 100 MB minimum to get a broad overview - Drill into large folders to find what's actually taking space inside them
- Safe quick wins that almost always free significant space:
rm -rf node_modulesin old/unused projects- Delete
.venv/venvin abandoned Python projects rm -rf ~/Library/Developer/Xcode/DerivedData(Xcode rebuilds this as needed)brew cleanup --prune=alldocker system prune -a(if you use Docker)- Empty your Trash
- macOS (uses
du,find, andopencommands) - Python 3.11+ with tkinter
- No third-party packages needed
MIT
