C:\> du clean --yes
Found 5.6 GB in 3 categories
5.6 GB freed, logged
du clean
Sweeps 34 cache categories across the OS, browsers, and dev tools.
One binary for Windows 10 and 11, no dependencies
A single-binary Windows CLI that cleans caches, purges dev artifacts, and shows what's actually eating your disk. Every destructive command previews first.
Install with PowerShell
irm https://raw.githubusercontent.com/Nur-Adnan/Duster/main/scripts/install.ps1 | iexCommands
Five of the thirteen. Run du --help for the rest.
C:\> du clean --yes
Found 5.6 GB in 3 categories
5.6 GB freed, logged
Sweeps 34 cache categories across the OS, browsers, and dev tools.
C:\Users\dev\AppData
37.0 GB18.4 GBDrills into any folder to find what's actually eating disk space.
Hunts down stray node_modules, target, and .gradle folders.
8 passed2 warnings0 failed
Runs ten health checks and tells you exactly what's misconfigured.
A live dashboard for CPU, RAM, disk, network, and thermals.
Inside a scan
Duster resolves every path through the same safety layer: symlinks are never followed, OneDrive placeholders are skipped during cleaning instead of forced online, and protected system folders are refused outright.
Three paths enter the same safety layer. Only one of them comes out the other side.
%LOCALAPPDATA%\Temp\*.tmpRemoved, logged, after passing all seven gates.
C:\Users\you\Projects\link → D:\dataSkipped: link not followed, stopped at the “Symlink never followed” gate.
C:\Windows\System32\driversRefused: protected, stopped at the “Protected folder refused” gate.
Three paths enter the same safety layer. Only one of them comes out the other side.
Path validated
Every target is normalized and checked first
Symlink never followed
Links and junctions are unlinked, never walked
C:\Users\you\Projects\link → D:\dataSkipped: link not followed
OneDrive placeholder skipped
Cloud-only files are never pulled down
Protected folder refused
System folders and Windows.old stay put
C:\Windows\System32\driversRefused: protected
Dry-run preview
Nothing moves without --yes or a confirm
Operation logged
Each action lands in operations.log
Recycled or deleted
Recycle Bin where the command offers it
Through every gate
%LOCALAPPDATA%\Temp\*.tmpRemoved, logged
Every destructive command takes --dry-run. Nothing is removed without --yes or an explicit confirm.
Every deletion is recorded in a local operations log with what it freed, so you can audit what happened.
Reclaimed space
Numbers from real machines that hadn't been cleaned in a while.
Local Disk (C:)
11.3 GB reclaimable
8 categories on a first run
Deployments
A one-off PowerShell install or a pinned binary in CI. Same tool, same safety rules.
[i] System scan complete. Ready for cleanup.
4 selected8.2 GB
Up and down arrowsmovespaceselectenterclean
Launch the TUI and step through categories, drivers, and startup apps from the keyboard.
PS C:\dev> du purge --dry-run --json{ "scanned_path": "C:\\dev", "total_found": 3, "total_size_bytes": 2903457792, "artifacts": [ { "path": "C:\\dev\\web\\node_modules", "name": "node_modules", "type": "node_modules", "framework": "Node.js", "size": 1503238553, "selected": true }, { … }, { … } ]}PS C:\dev> $plan = du purge --dry-run --json | ConvertFrom-JsonPS C:\dev> $plan.artifacts.namenode_modules
target
.gradlePipe it into CI, a scheduled task, or your own tooling.
--json output for scripts and CI--yes for non-interactive runsAutomation
Most commands emit structured --json, so you can wire Duster into a scheduled task or a CI health check without guessing at its behavior.
Task Scheduler
Daily at 03:00, signed in or not.
du optimize --yes --json
Runs headless. No prompts, no window.
report.json
Exit code 0
The scheduler logs 0x0. A failed task exits 1.
--json output C:\>du
/ ______ _ _ _____ _______ ______ _____ │
/ | __ \ | | | | / ____|__ __| | ____|| __ \ │ System Maintenance CLI v1.2.0
/ | | \ \| | | || (___ | | | |__ | |__) | │ Keep your system clean. Keep it running smooth.
/_ | | | || | | | \___ \ | | | __| | _ / │
\--/ | |__/ /| |__| | ____) | | | | |____ | | \ \ │
/__/ |______/ \____/ |_____/ |_| |______||_| \_\ │
────────────────────────────────────────────────────────────────────────────────
DESCRIPTION
Duster (du) is a powerful, Windows-native command-line cleaning
and optimization utility designed to reclaim disk space, uninstall software remnants,
and improve overall system responsiveness.
USAGE
du [flags]
AVAILABLE COMMANDS
▪ analyze Interactive TUI disk space explorer and visual analyzer
▪ benchmark Benchmark scan speed, delete speed, memory, goroutines, and JSON engine
▪ clean Deep clean system temp files, prefetch, browser caches, and error logs
▪ completion Generate the autocompletion script for the specified shell
▪ doctor Diagnose Windows environment, privilege, permission, and terminal compatibility
▪ installer Find and remove large installer files
▪ optimize Optimize PC performance (flush DNS, SSD trim, clean caches)
▪ purge Find and clean developer build artifacts recursively to reclaim space
▪ remove Uninstall Duster and delete all configuration files and logs
▪ status Real-time system health dashboard and live resource monitor
▪ uninstall Interactive application uninstaller and remnants clean sweeper
▪ update Check and update Duster to the latest version
▪ vdisk Shrink WSL and Docker virtual disks
▪ verify Audit protected paths, symlink guards, dry-runs, registry safety, and self-integrity
FLAGS
○ -h, --help help for du
○ -v, --version version for du
Use du [command] --help for more information about a command.At scale
No installer service, no telemetry endpoint, no dependency to patch across a fleet.
Fleet lifecycle
After Update, the cycle starts again at Deploy.
CGO disabled, statically linked. Copy the binary and run it.
SHA-256 checksums and build-provenance attestations on every release.
Every clean, purge and uninstall is recorded, with its outcome, in a local operations log.
Checks GitHub releases and rolls back if swapping the binary fails.
Release pipeline
Every change runs these gates, and the Windows smoke and end-to-end tests run before each release.
7 of 8 stages live
3 of 4 jobs done, 1 configuring
FAQ
du purge skipped my monorepo?
Maintainer Purge only sweeps ambiguous folders like node_modules or target when a project marker sits next to them. Try --dry-run to see why.
Still have questions?
Open an issue on GitHub (opens in new tab)No. Most commands run as a normal user. A handful of operations (prefetch cleanup, drive optimization, DISM component-store cleanup) need elevation, and Duster will tell you when it's blocked instead of failing silently.