Releases: cacheout-app/cacheout
Cacheout v2.1.2
Menubar icon hotfix
v2.1.1 correctly bundled menubar icon resources into the .app, but the source PNGs in Sources/Cacheout/Resources/ were a faint single-line "C" outline that rendered effectively invisible at 18×18 in template mode. The actual master artwork had been dropped from the repo at some point.
Fixed
- Restored
Resources/menubar-icon-master.PNG(the 2048×2048 master) and regenerated all four bundled variants —MenuBarIcon.png,MenuBarIcon@2x.png,MenuBarIconTemplate.png,MenuBarIconTemplate@2x.png— at the correct 18×18 / 36×36 sizes from the master. The Cacheout "C" now actually appears in the menubar.
Everything else from v2.1.0 + v2.1.1 (Sparkle auto-update bundling, helper daemon, security/perf/UX fixes) is unchanged.
Install
brew upgrade --cask cacheoutOr download Cacheout-2.1.2.dmg below and replace your /Applications/Cacheout.app.
Full Changelog: v2.1.1...v2.1.2
Cacheout v2.1.1
Hotfix for v2.1.0
v2.1.0 shipped with two regressions: the menubar icon resources and the CacheoutHelper privileged daemon were silently dropped from the .app bundle. v2.1.1 restores both.
Fixed
- Menubar icon now displays again.
Bundle.main.image(forResource: "MenuBarIconTemplate")couldn't find the PNG resources becausescripts/bundle.shwas only copyingCacheout.icns. Now copies all four icon variants (regular +@2x, template + non-template) intoContents/Resources/. CacheoutHelperdaemon is now bundled atContents/Library/LaunchDaemons/. TheSMAppService.daemon(plistName:)registration relies on the binary + plist being inside the app bundle. Without them, the onboarding install-helper flow and--daemonautopilot silently broke. The helper is now signed before the outer app socodesign --verify --deep --strictpasses.
Everything else in v2.1.0 (Sparkle auto-update bundling, HTTPS webhook enforcement, process pipe + PID-lock-fd-leak fixes, dictionary/scanner perf work, dynamic button labels + tooltips, empty states, accessibility) is unchanged.
Install
brew install --cask cacheout-app/cacheout/cacheoutOr download Cacheout-2.1.1.dmg below and drag to /Applications.
Full Changelog: v2.1.0...v2.1.1
Cacheout v2.1.0
⚠️ Known issue — please install v2.1.1 insteadv2.1.0 is missing the custom menubar icon resources and the
CacheoutHelperdaemon binary from the.appbundle (ascripts/bundle.shregression). The menubar item can appear blank, and the install-helper onboarding flow /--daemonautopilot silently break. Both issues are fixed in v2.1.1 ↘https://github.com/cacheout-app/cacheout/releases/tag/v2.1.1
What's new in v2.1.0
🚀 Auto-updates land
Sparkle.framework is now bundled inside Cacheout.app/Contents/Frameworks/ with the correct @executable_path/../Frameworks rpath, signed inner→outer with hardened runtime. Starting from this build, future releases will be installable via in-app auto-update instead of manual reinstall.
🎨 UX polish (Palette)
- Dynamic
Scanning…/Cleaning…labels on the Scan/Clean buttons with.help()tooltips explaining disabled states .help()tooltips on per-process ellipsis menus- Visual empty state for the
node_modulessection (centered icon + callout) - Accessibility labels on icon-only controls so VoiceOver stops reading "Button"
- Empty state for the Processes view
🛡️ Security & reliability (Sentinel)
- HTTPS-only webhooks —
AutopilotConfigValidatorandWebhookConfig.parseboth rejecthttp:// - PID lock fd no longer leaks to children —
open(2)now usesO_CLOEXECandwithUnsafeFileSystemRepresentation - Process pipe deadlock fix —
CacheoutViewModel.runCleanCommand(docker prune path) reads stdout beforewaitUntilExit() - Defense-in-depth pipe-deadlock guards across other process execution paths
- Command injection vulnerabilities closed in
runCleanCommandandCacheCategory.toolExists - Docker pruning now resolves via
/usr/bin/env dockerso Apple Silicon/opt/homebrew/binusers actually run it
⚡ Performance (Bolt)
JetsamHWMpriority map built withreduce(into:)— no COW thrashProcessMemoryScanneruses a sliding-window TaskGroup- Scanner TaskGroups marked
nonisolatedso subtasks parallelize off the actor executor - Shared
ByteCountFormatter/ISO8601DateFormatterinstances +.lazy.filter.reduce - Batched
@Publishedarray mutations — one SwiftUI re-render per scan instead of N CacheScannerenumerator prefetches.isRegularFileKeyNodeModulesScanneris truly concurrent with reduced syscalls- Blocking I/O offloaded via
Task.detachedso async@MainActormethods no longer stall the UI
🐛 Bug fixes
- Process names no longer display as "unknown" in the main process list
- Guard against empty arguments in
runCleanCommand
Install
brew install --cask cacheout-app/cacheout/cacheoutOr download Cacheout-2.1.0.dmg below and drag to /Applications.
Full Changelog: v2.0.0...v2.1.0
Cacheout v2.0.0
Cacheout v2.0.0
Developer cache cleaner & memory manager for macOS.
Features
- SSD Cache Cleaning — scan and clean 12 cache categories (Xcode, npm, pip, Homebrew, etc.)
- Memory Pressure Monitoring — real-time telemetry with compressor tracking
- Predictive Intelligence — memory exhaustion warnings before you run out
- Intervention Engine — tiered memory recovery (purge, jetsam, sysctl tuning)
- Privileged Helper — optional helper for advanced memory management
- Headless Daemon Mode — long-running monitoring with Unix socket API
- Autopilot Rules — automated actions with webhook/Telegram alerts
- Docker System Prune — one-click Docker cleanup
- CLI Interface — full JSON output for scripting and automation
- MCP Server — available separately via
pip install cacheout-mcp
Install
Download: Cacheout-2.0.0.dmg (signed & notarized)
Homebrew:
brew install --cask cacheout-app/tap/cacheoutRequirements
- macOS 14 (Sonoma) or later
- Apple Silicon or Intel
License
Sustainable Use License v1.0