SAPU / DOCUMENTATION
A careful place
to start.
Build the developer preview, understand what a scan does, and learn how quarantine works.
Build the Mac app.
Requirements: macOS 14 or later, Apple command line tools with Swift 6 or later, and Go 1.25 or later. From the Sapu source folder, run:
./macos/build.sh
open macos/build/Sapu.appThe build script includes the matching Sapu engine and bundled fonts. It makes an ad-hoc signed local app for your current Mac architecture. This is a developer build, without an Apple Developer ID signature or notarization.
To explore the interface using sample data, launch:
open macos/build/Sapu.app --args --demoSample mode never launches the cleanup engine. Moving and restoring files are disabled.
Your first scan.
- Open Sapu and choose Scan this Mac. Scanning creates an in-memory plan and changes no files.
- Open the Review tab. Expand a row to see its full location, explanation, and risk.
- Only safe quarantine candidates are selected initially. Moderate items require your choice; risky items also show a warning before selection.
- Choose Move to quarantine. Read the final selection and retention details, then confirm.
- Read the receipt. It lists moved, skipped, and failed items. Open Quarantine to restore an available run.
If macOS blocks access to folders, open Sapu Settings and use the Full Disk Access link. Scan again after changing permissions.
Protection is checked twice.
The desktop app passes your exact selection to the existing Sapu engine. It keeps each item's identity, protection conditions, and source details intact. The engine rechecks the items immediately before moving them.
Built-in protection covers personal Apple data, passwords, editor settings, AI models, agent memory, virtual machines, and cloud folders. Open or changed files are skipped and given a reason.
The app does not run suggested shell commands, empty quarantine, or offer permanent deletion. Those operations remain outside this desktop preview. Read every moderate or risky candidate carefully.
How quarantine works.
Moving to quarantine keeps the files on the same disk. The space is still used until the files are permanently removed. The engine can expire runs after 7 days or expire older runs sooner when quarantine exceeds 20 GB.
In the Quarantine tab, inspect a run's size and eligibility date. Choose Restore and confirm to put its files back. If an original location is occupied, Sapu restores beside the existing file and reports the conflict.
After expiry, files can no longer be restored through Sapu. Keep your own backups for data you need to retain.
Motion and accessibility.
The mascot blinks when ready, moves its fins while Sapu is working, waits still during review, and gives a short nod on completion. Motion pauses when the window is inactive. Reduce Motion uses static poses.
All file choices and confirmation controls are keyboard accessible. Risk labels use words, and status does not depend on color alone.
Back to Sapu