macOS · Open Source · No cloud

Your Mac.
👻 Without
the clutter.

App Guardian lives in your menu bar and quietly closes apps you forgot about — using Apple's on-device AI to make smart decisions. Zero config, zero cloud.

👻 9:41 AM
●  Monitoring ON
📊  8 apps tracked — view status…
⏱  Timeout: 30 min
🚫  Excluded Apps…
✅  Use Apple Intelligence
✅  Clean cache on close
🧹  Clean All Caches Now
📈  Statistics… 3 today
0
Cloud calls — runs entirely on-device
<1%
CPU overhead from background polling
10s
Poll interval — barely notices it's there
MIT
Free forever, open source, no strings

Small app. Big impact on your RAM.

Every feature does exactly one thing, and does it well.

AI
🤖

Apple Intelligence decisions

Asks Apple's on-device model: "Is it safe to quit this app?" Knows not to touch your music player, VPN, or background sync tools. Results cached per session.

🧹

Automatic cache cleanup

After quitting, wipes ~/Library/Caches/<bundle> and any fuzzy-matched directories. Frees space you'd never find manually.

💀

Force-quit fallback

Tries a graceful quit first. Waits 10 seconds. If the app doesn't respond, it force-kills it. Nothing gets left hanging.

🚫

Smart exclusions

Finder, Dock, Spotlight, and other system apps are excluded by default. Add any app to the exclusion list straight from the menu bar — no config file needed.

📈

Usage statistics

Every close event persisted to a local JSON file. The built-in stats screen shows closes today, 7-day, all-time, cache freed, and your top offending apps.

🔒

Fully private

Zero telemetry. The only network call is to localhost:11434 (apfel, running on your machine). Nothing leaves your computer.

Three loops. Zero drama.

Runs silently in the background — you only notice when you check the stats.

01

Poll every 10 seconds

Records which app is in the foreground using macOS's NSWorkspace API. No Accessibility permissions required. Pure passive observation.

02

Check every 60 seconds

Scans all running apps. Any app idle past your threshold gets flagged. Apple Intelligence (via apfel) makes the final YES/NO call — or skip it and use pure timer logic.

03

Close + clean

Sends a graceful terminate signal. Force-kills if the app ignores it. Wipes the cache directory. Logs the freed bytes to history.json. Done.

Running in under 60 seconds.

~/terminal bash
# ── Recommended: Homebrew ───────────────────
brew tap TomGranot/app-guardian
brew install app-guardian
brew services start app-guardian

# ── Or from source ───────────────────────────
git clone https://github.com/TomGranot/app-guardian
cd app-guardian
./setup.sh
./run.sh

# Auto-start on login (source install only)
./install-agent.sh

# ── Apple Intelligence backend (optional) ───
brew tap Arthur-Ficial/tap
brew install apfel
apfel --serve

Requirements

macOS 26 (Tahoe) + Apple Silicon for Apple Intelligence. Python 3.11+ for the app itself. The AI features are optional — disable them in the menu and it works on any Mac.

Auto-start on login

Run ./install-agent.sh to register a LaunchAgent. App Guardian will start automatically on login and restart itself if it ever crashes.

No apfel? No problem.

Toggle off "Use Apple Intelligence" in the menu bar. App Guardian will close all idle non-excluded apps based on the timer alone — fast and reliable.

Give your Mac
a memory.

★  Star on GitHub ↓  Download v1.0.0 🐛  Report an issue