A native macOS desktop app for transparent APFS/HFS+ file compression, built on the unmodified applesauce crates. Pick the folders that matter, see exactly what is and isn't compressed, and let a scheduled background agent keep new files compressed.
Design document: docs/DESIGN.md.
crates/
ipc/ cider-ipc: protocol types (serde) + JSON-RPC 2.0 framing
engine/ cider-engine: catalog, rules, scanner, planner, executor, scheduler
agent/ ciderd: headless agent hosting the engine + unix-socket IPC server
cli/ cider: debug CLI speaking the same protocol as the app
mac/ SwiftUI app + IPCKit (Swift package)
All disk mutation flows through the agent, which drives applesauce through its
public API only — no forks, no patches.
cargo build --workspace # engine, agent, CLI
cargo test --workspace
cd mac && swift build # SwiftUI app + IPCKit (dev build)
./mac/bundle.sh # assemble mac/build/AppleCider.app (embeds ciderd)
./mac/dmg.sh # build mac/build/AppleCider.dmgThe .app is self-contained: it embeds ciderd, registers it as a login item
(SMAppService), and starts it as a child process as fallback — scheduled
sweeps run with the window closed and survive reboots.
- Managed locations with per-file include/exclude, glob rules, and presets
- Fast-pass status catalog + FSEvents incremental rescans of changed subtrees
- Schedules: interval / daily / continuous (sweep after changes go quiet), gated on AC power, Low Power Mode, thermal pressure, and free disk
- Volume-wide measurement with live progress and savings history charts
- Algorithm migration (decompress → recompress, batch-wise, space-checked)
- Engine-enforced safety: iCloud Drive, File Provider mounts (Google Drive,
Dropbox, …), legacy/Maestral
~/Dropbox*folders, Trash, and photo libraries are never touched - Notifications for background sweeps; full run history with per-file errors
mac/dmg.sh produces an ad-hoc-signed DMG that runs locally. Shipping to
other machines additionally requires a Developer ID certificate, notarization
(notarytool), and — for in-app updates — Sparkle with hosted appcast; the
steps are documented in mac/dmg.sh.
cargo run -p ciderd & # start the agent (socket in ~/Library/Application Support/AppleCider)
cargo run -p cider -- hello
cargo run -p cider -- roots add ~/some/folder
cargo run -p cider -- compress 1 --wait
cargo run -p cider -- statusGPL-3.0-or-later (inherited from the applesauce crates).