Skiff is a local cross-platform disk cleanup tool for inspecting caches, applications, duplicate files, and large files before removal.
- Disk overview: reads total, used, available space, usage ratio, and disk location for the current user's home directory.
- Junk cleanup: scans and cleans platform-specific cache locations, including system caches, browser caches, developer tool caches, Flatpak and Arch package caches on Linux, and Homebrew cache on macOS.
- Large file scan: scans common user directories for large files and moves selected files to the system Trash after confirmation.
- Duplicate file scan: finds duplicate files by size, content hash, and byte-by-byte comparison, then moves selected files to the system Trash.
- Application cleanup: reads Linux packages, macOS applications and Homebrew packages, or Windows uninstall registry entries, with filtering, search, selection, and confirmed uninstall.
- Cleanup history: shows recent cleanup, Trash, uninstall, and Agent cleanup results. The main UI keeps the latest 50 records.
- Settings: adjusts file scan paths, large-file scan thresholds, duplicate-file scan thresholds, and whether advanced feature entries are shown. Custom paths must stay inside the current user's HOME directory.
- Tray behavior: closing the main window hides it to the system tray instead of exiting the app.
Skiff performs real file deletion and package uninstall operations. The current implementation has these boundaries:
- Linux, macOS, and Windows are supported by the local app and CLI. Each platform has its own cleanup target list.
- Junk cleanup removes contents from predefined cache directories. Some package-manager cleanup targets call system commands.
- Large-file and duplicate-file handling only allows regular files inside the current user's HOME directory. Files are moved to the system Trash by default instead of being permanently deleted. They become unrecoverable only after the Trash is emptied.
- Large-file and duplicate-file scans default to common user directories such as Desktop, Documents, Downloads, media folders, code/project folders, and common cloud-drive folders. Application data directories such as
.config,AppData, and macOSLibrarymust be added manually in Settings. - Duplicate-file detection first groups files by size, then computes a content hash, and finally confirms equality with a byte-by-byte comparison.
- Application uninstall uses the platform's registered uninstall mechanism:
- APT:
apt-get remove -y - RPM: prefers
dnf remove -y, thenyum remove -y,zypper --non-interactive remove, and finallyrpm -e - Pacman:
pacman -R --noconfirm -- <package> - Flatpak:
flatpak uninstall -y --app - macOS
.app: moves the app bundle to Trash - Homebrew:
brew uninstall --formulaorbrew uninstall --cask - Windows: reads
UninstallString/QuietUninstallStringfrom the registry and runs that command
- APT:
- Linux commands that require administrator privileges use
pkexecwhen available. macOS and Windows may show their native authorization prompts. - Flatpak application data cleanup is high risk because it removes app configuration, login state, local databases, and other local app data.
- CLI deletion, cleanup, and uninstall commands require an explicit
--yes. - CLI
files deleteuses the same behavior as the desktop file actions and moves files to the system Trash. - The macOS and Windows local builds in this repository are not configured for code signing, Apple notarization, or Windows signing.
Download the package for your operating system from GitHub Releases. Current release artifacts target Linux, macOS ARM64, and Windows.
macOS and Windows installers are not signed at the moment. The operating system may show a security warning. That is a distribution trust issue and does not mean the app has passed platform signing or notarization.
- Desktop framework: Tauri 2
- Backend: Rust 2021
- Frontend: React 19, TypeScript, Vite
- Styling and UI: Tailwind CSS 4, lucide-react, custom CSS
- Package manager: Bun
- Local settings:
~/.config/skiff/settings.jsonon Unix-like systems, or the equivalent user config path on Windows.
- Linux, macOS, or Windows desktop environment
- Rust stable
- Bun
- Platform dependencies required by Tauri 2. Linux needs WebKitGTK and related desktop libraries.
bun installbun run devThe frontend dev server is provided by Vite.
bun run tauri devThe Tauri config expects this frontend dev URL:
http://localhost:1420
bun run buildThis command runs TypeScript checks and then writes the Vite build output to dist/.
bun run tauri buildLocal platform-specific package commands:
bun run tauri:build:linux
bun run tauri:build:mac
bun run tauri:build:windowsTauri uses src-tauri/tauri.conf.json to generate the desktop app and installer packages for the current operating system. The Windows command builds an NSIS .exe installer. macOS and Windows release-grade distribution still requires signing configuration outside this repository.
Running skiff without arguments starts the desktop app. Passing a subcommand runs CLI mode.
skiff info
skiff disk
skiff cleanup scan
skiff cleanup run --ids thumbnail-cache,go-cache --yes
skiff files large --min-size 500M --limit 80
skiff files duplicates --min-size 10M --group-limit 40
skiff files delete --path /home/user/Downloads/example.iso --yes
skiff agents scan
skiff agents clean --ids <id> --yes
skiff packages scan --include-system
skiff packages uninstall --ids pacman:example --yesEvery CLI command supports --json for scripts, cron, or systemd jobs:
skiff --json cleanup scanCLI commands use the current process HOME by default. On servers, pass --home to target a specific user directory:
skiff --home /home/deploy --json files large --min-size 1GCommands that change disk state require --yes:
cleanup runfiles deleteagents cleanpackages uninstall
MIT. See LICENSE.
