__ __ _
\ \ / /__ | | ___
\ \ / / _ \| |/ _ \
\ V / (_) | | __/ ~~~(^Β°>
\_/ \___/|_|\___| Deep clean and update your machine.
π¦βπ₯ Clean, update, uninstall, and monitor your Linux box or Mac β from the terminal.
Vole started as a Linux-native fork of Mole (a macOS cleaner by tw93) and now runs on both platforms. It keeps Mole's interactive terminal UX β arrow-key menus, multi-select with filtering, safe-by-default cleaning β and adds the one thing Mole doesn't have: a single command that updates every package manager on your system.
Per Mole's trademark policy this fork uses its own name. Code is GPL-3.0, same as upstream. The mascot is a phoenix: Vole rose from Mole's source, and after every clean it flies across your terminal trailing fire.
curl -fsSL https://raw.githubusercontent.com/fschrhunt/vole/main/install.sh | bashor from a clone: ./install.sh. Installs symlinks vole and the vo
shorthand (Mole has mo; Vole has vo). Requires bash and git β nothing else.
| Command | What it does |
|---|---|
vo |
Interactive menu |
vo clean |
Free disk space: user/app/dev caches, old trash, old logs, brew cleanup. Linux adds flatpak leftovers and an opt-in sudo deep clean (APT cache, journal logs, old snap revisions, crash dumps); macOS adds Xcode DerivedData and simulator caches. --dry-run previews. |
vo update |
Scan every package manager in parallel and update what you pick. vo update all skips the menu; vo update dry run lists every pending package, then offers to apply; vo update apt brew targets specific managers. |
vo optimize |
Tune and repair the system: caches, corrupted config files, database vacuuming, network stack, broken launchers/agents, disk and battery health, and more β see below. --dry-run previews; --list shows every task; --only=/--skip= target specific tasks. |
vo uninstall |
One selector for apt / snap / flatpak / brew / casks. Removes packages, orphaned dependencies, and residual configs. |
vo purge |
Find files over 100MB (--min=<MB>) and pick what to remove β to the trash when possible. |
vo analyze |
Explore disk usage. Delegates to gdu/ncdu when installed. |
vo status |
System health: load, memory, swap, disks, temperature, battery, pending updates. |
vo history |
Everything Vole has cleaned, updated, or removed. |
vo whitelist |
Protected paths, never cleaned (vo whitelist edit). |
vo config |
Settings: animations, purge floor, system-clean behavior, retention windows (vo config edit). |
vo fda |
macOS: check Full Disk Access, register Vole's toggle with the system, and open the exact Settings pane (points at the Remote Login switch for SSH sessions). On Linux: nothing needed. |
vo optimize matches Mole's own optimize task list on macOS (all 21 of its
checks: DNS/Spotlight, Finder & icon caches, saved app states, corrupted
preferences, Mail/Safari/Messages database vacuuming, LaunchServices repair,
Dock refresh, .DS_Store prevention, memory pressure, network stack, disk
permissions, periodic maintenance, shared file lists, login items, Gatekeeper
quarantine history, broken Launch Agents, Notification Center, and usage
tracking data) β plus battery health, Homebrew health, and a SMART-based disk
health check that replaces Mole's diskutil verifyVolume (which can hang the
system on APFS inconsistencies) with something that never touches the
filesystem.
On Linux it's a from-scratch equivalent set, not a stub: DNS cache, font/icon
caches, the desktop/MIME database (the real Linux analog of "Open with"
repair), autostart and application-launcher audits, browser database
vacuuming, systemd failed-unit cleanup, memory pressure relief, network stack
refresh, home directory ownership repair, locate database refresh (the
Linux analog of Spotlight indexing), disk and package-database health, and
journal disk usage. SSD TRIM (fstrim) has no macOS/Mole equivalent at
all β APFS handles it transparently β and is a genuine Linux-only win: a real
optimization most desktops leave to a cron job nobody ever sees run.
Every task is safe to re-run β a second pass reports "already healthy" instead of repeating work β and every sudo-gated task degrades cleanly if admin access isn't available.
| Linux | macOS | |
|---|---|---|
| System | APT, snap, Flatpak, firmware (fwupd) | softwareupdate, App Store (mas) |
| Homebrew | β | β |
| Dev tools | npm, pnpm, pipx, rustup, cargo, gem, bun, deno, uv | npm, pnpm, pipx, rustup, cargo, gem, bun, deno, uv |
Each manager is detected automatically; you only ever see the ones you have.
- Nothing outside caches/trash/logs is deleted without an interactive selection and confirmation.
- Expensive-to-rebuild caches (HuggingFace models, Maven/Gradle repos, cargo registry, Ollama models, β¦) are whitelisted by default.
--dry-runeverywhere it matters; every deletion is logged tovo history.- System-level actions never run implicitly β they need an interactive yes, an explicit flag, or an explicit config setting.
GPL-3.0, inherited from Mole. The
lib/core/base.sh, lib/core/ui.sh, and lib/ui/ menu components are
adapted from Mole's originals; the rest is written for Vole.