Reclaim your disk space.
Void finds and cleans developer build artifacts across 11 ecosystems. One scan, gigabytes back.
Download · Website · Contributing · Changelog
Every project you touch leaves something behind — a target/ here, a node_modules/ there,
a Docker build cache quietly eating 20 GB. You know it's there. You just don't know where,
or which parts are safe to remove.
Void answers both questions. It walks your home directory in parallel, groups everything it finds by ecosystem, tells you how stale each artifact is, and labels every cleanup action with a risk level before you click it. Nothing is deleted without your say-so.
- 11 ecosystem scanners — Rust, Node.js, Python, Go, Java, Docker, Apple/Xcode, Homebrew, JetBrains, .NET, and system caches
- Safety first — blocked-path lists, sentinel-file detection, and Safe / Caution / Danger classification on every action
- Fast — multi-threaded filesystem walker with concurrent analysis, built on Tokio and the
ignorecrate - Staleness aware — surfaces artifacts untouched for longer than your threshold (30 days by default), so you clean what you're not using
- Nothing runs unseen — every item shows the exact command or deletion it will perform, and you pick which one when an artifact offers several
- Keeps a record — each clean is stored locally with the paths, commands and bytes recovered
- Lives in your menu bar — quick-scan and open the dashboard without leaving your workflow
- Yours to configure — scan roots, enabled ecosystems, staleness thresholds, and paths Void must never touch
curl -fsSL https://raw.githubusercontent.com/eladbash/void/main/install.sh | shDownloads the latest .dmg for your architecture, installs to /Applications, and launches it.
Grab the installer for your platform from the Releases page.
Requires Rust 1.95+ and the Tauri CLI.
git clone https://github.com/eladbash/void.git
cd void
cargo tauri dev # run in development
cargo tauri build # produce a release bundle- Scan — Void walks your configured roots (your home directory by default) with a parallel walker, using half your cores and up to 8 concurrent analyses.
- Review — results are grouped by ecosystem with size, last-modified date, and a risk level. Sort, filter, and pick exactly what you want gone.
- Clean — each item carries its own action (
cargo clean,docker builder prune, delete, move to Trash). Void runs it, verifies the safety gates first, and reports what it freed.
| Ecosystem | Artifacts |
|---|---|
| Rust | target/ dirs, cargo registry, git checkouts |
| Node.js | node_modules/, npm / yarn / pnpm caches |
| Python | __pycache__/, virtualenvs, pip and conda caches |
| Go | Build cache, module cache, test cache |
| Java | Gradle caches and build dirs, Maven .m2/repository |
| Docker | Dangling images, build cache, stopped containers, unused volumes |
| Apple/Xcode | DerivedData, archives, device support, simulator caches |
| Homebrew | Package download cache |
| JetBrains | Per-IDE caches (rebuilt on next launch) |
| .NET | NuGet cache, bin/ and obj/ dirs |
| System | Trash, application logs, stale downloads |
Deleting files is easy to get wrong, so Void is deliberately conservative:
- Never-touch paths —
~/Documents,~/Desktop,~/Pictures,~/Library/Keychainsand~/Library/Preferences, plus anything named.ssh,.gnupg,.aws,.config, or.envanywhere in the path.~/Downloadsis protected as a folder, though individual files inside it can be cleaned — that is what the System scanner is for. - Commands are checked too — an action that shells out to
rm,osascriptor PowerShell has its arguments scanned against the same protected paths, and discovered filenames are escaped before they are ever embedded in a script. - Sentinel detection — a directory containing
.env,credentials,secrets.y(a)ml,id_rsa, orid_ed25519is excluded from deletion outright. - Risk escalation — paths directly under
$HOMEand symlinks are automatically promoted to a higher risk level. - Risk follows the action — an artifact can offer several cleanups at different risk levels;
Void shows the risk of the one that will actually run, and asks you to type
deletebefore anything permanent. - Your own blocklist — add any path in settings and Void will refuse to touch it.
- Nothing is automatic — Void never deletes anything you haven't explicitly selected.
Found a safety gap? Please report it privately — see SECURITY.md.
Settings and clean history are plain JSON, written atomically next to the bundle identifier:
| Platform | Location |
|---|---|
| macOS | ~/Library/Application Support/com.void.app/ |
| Linux | ~/.config/com.void.app/ |
| Windows | %APPDATA%\com.void.app\ |
Both files are safe to edit or delete by hand — a missing or unparseable file falls back to defaults rather than blocking launch.
crates/
deepclean-core/ scanning engine, safety checker, action executor
deepclean-app/ Tauri 2 desktop app, system tray, frontend
docs/ project website (GitHub Pages)
design/ design system and screen specifications
Contributions are genuinely welcome — a new ecosystem scanner is a great first PR. Start with CONTRIBUTING.md and our Code of Conduct.
MIT — see LICENSE.
Built by @eladbash
If Void bought you back some disk space, consider sponsoring the project ⭐