@oleksandr_krupko/mac-os-debloat
v0.5.0
Published
Debloat your Mac from the terminal. SIP-safe interactive console util to disable 269 non-essential macOS launchd services + Spotlight toggle. Self-validates against your macOS build. macOS Tahoe + Apple Silicon. Zero deps.
Maintainers
Readme
mac-os-debloat
Debloat your Mac from the terminal. Zero dependencies. Zero install.
Interactive console util to disable 269 non-essential macOS launchd services. Reclaims ~1.5-2 GB RAM and a chunk of CPU for whatever heavy work you're actually doing. Persistent across reboot. Fully reversible. Built for macOS Tahoe 26.x on Apple Silicon.
No SIP disable required — works with System Integrity Protection fully on, via Apple's supported launchctl disable. That covers ~90-95% of the bloat with zero security tradeoff; squeezing the last few daemons means turning SIP off permanently, which isn't worth it for most people. It also validates every service against your actual system at launch, so it never acts on a label that doesn't exist on your macOS build.
npx -y @oleksandr_krupko/mac-os-debloatOr via curl:
curl -fsSL https://raw.githubusercontent.com/OleksandrKrupko/mac-os-debloat/main/debloat | python3Or via Homebrew:
brew install OleksandrKrupko/debloat/debloat && debloatCommands
Runs the interactive TUI by default. Non-interactive flags for scripting and quick recovery:
debloat # interactive TUI (default)
debloat --status # disabled/enabled counts, spotlight, reclaimable RAM
debloat --audit # list any embedded labels not present on your macOS build
debloat --disable-all # disable every non-essential service (prompts sudo)
debloat --enable-all # re-enable everything — the panic button
debloat --restore # revert to the state before your last apply
debloat --dry-run # with --disable-all/--enable-all: preview, apply nothing
debloat --status --json # machine-readable status--status, --audit, and --dry-run need no sudo — reading launchd state is unprivileged. Every apply first snapshots your current state to ~/.mac-os-debloat/latest.json, so --restore always brings you back. If anything feels off, debloat --enable-all turns it all back on.
Screenshot
mac-os-debloat — space=toggle x=sec-toggle s/S=sec-off/on [/]=jump a/n=all/none p=spotlight enter=apply q=quit
pending: 4 (spotlight: ON) (checked = enabled/running)
── Siri / voice assistant ──────────────────────────────────────────────────
*[ ] com.apple.assistantd Siri core
*[ ] com.apple.Siri.agent Siri agent
[ ] com.apple.SiriTTSTrainingAgent Siri voice training
[ ] com.apple.siriinferenced on-device Siri inference
*[ ] com.apple.siriknowledged Siri knowledge graph
[ ] com.apple.assistant_cdmd Siri continuous dialog manager
[✓] com.apple.parsecd Siri/Spotlight suggestions backend
[✓] com.apple.parsec-fbf Siri Suggestions feedback
*[ ] com.apple.intelligencecontextd Apple Intelligence context runtime
[✓] com.apple.intelligenceplatformd Apple Intelligence platform
── Apple Intelligence (Tahoe) ────────────────────────────────────────────── ↓
[✓] com.apple.mlruntimed ML runtime
► [✓] com.apple.privatecloudcomputed Private Cloud Compute (AI cloud offload)
[✓] com.apple.modelmanagerd AI model manager / downloads
[✓] com.apple.naturallanguaged NaturalLanguage framework daemon
[✓] com.apple.generativeexperiencesd Writing Tools / generative AI
[✓] com.apple.contextstored context store (>30GB memory leak)269 labels across 69 sections. Highlights:
- Siri / voice assistant (12)
- Apple Intelligence — Tahoe (10), incl.
contextstored(known >30 GB memory leak) andprivatecloudcomputed - More AI / Apple Intelligence (11) — CoreSpotlight semantic, call intelligence, intelligence flow / tasks
- Diagnostics extras (30) — all telemetry to Apple
- Apple Music Player (AMP) suite (5), Apple Music / iTunes / Media streaming (7)
- Safari + Safari extras (7) — for non-Safari users
- Game Center, Game controllers, Game policy (7)
- Family / Parental controls (8)
- Beta program enrollment (6)
- iMessage / FaceTime / phone relay (10)
- Apple Mail / Calendar / Contacts / Reminders + AddressBook (7)
- Continuity / AirPlay / Sidecar / Continuity Capture (~8)
- Maps, Apple Books, Apple TV+, Stocks/News/Weather/Sports
- App Store + Apple ID + Apple Pay + SSO
- iCloud Drive / Keychain Circle / Notifications
- Print (no printer), Touch Bar (M4 has none), bridgeOS (Apple Silicon)
- Xcode / iOS dev stack (FE/BE dev, no mobile)
- Telemetry + Apple ads + Proactive / predictive + News / Stocks / Weather
Full curated list with per-label comments lives inside the script (EMBEDDED_LABELS).
| Key | Action |
|-----|--------|
| ↑ / ↓ or j / k | navigate |
| PgUp / PgDn | jump 10 |
| [ / ] | jump to prev / next section |
| space | toggle current item |
| x | toggle whole section under cursor |
| s / S | uncheck / check whole section |
| a / n | check / uncheck all |
| p | toggle Spotlight indexing on root volume |
| enter | apply changes (prompts sudo) |
| r | reload state from system |
| q / esc | quit |
[✓] = enabled · [ ] = disabled · * = unsaved change
Uses launchctl disable — writes to /var/db/com.apple.xpc.launchd/disabled.plist.
- Survives reboot
- Wiped by macOS major upgrades (26.3 → 26.4 etc) — re-run after upgrade
system/disables affect all users ·gui/$UIDdisables only current user- Multi-user: run once per account
Drop a labels.txt next to the script — it overrides embedded list.
# === Your section ===
com.apple.something # what it does, what breaksThese will break the system. Not in default list, but if you add manually:
com.apple.WindowServer,controlcenter,notificationcenterui,Finder,Dock,SystemUIServer— UI diescom.apple.coreaudiod— sound diescom.apple.accountsd,syspolicyd,securityd,trustd— auth / codesign breakcom.apple.mds*,corespotlightd— usemdutil -a -i offinsteadcom.apple.softwareupdated— kills security updatescom.apple.XprotectService— kills malware scanningcom.apple.CoreLocationAgent,searchpartyd— Find My breaks
macOS Tahoe (26.x) baselines at ~4-5 GB RAM and a steady CPU drip from ~50 Apple daemons you mostly don't use — Siri, Apple Intelligence, telemetry, ads, predictions, AirPlay, Photos analysis, etc. On a 16 GB Mac that's a third of your memory gone before any of your own apps start.
This tool kills the ones you don't need, persistently, with a single console util and no install. ~1.5 GB RAM and a few % CPU back for whatever you're actually running — compilers, browsers, VMs, model inference, video editing, games, whatever.
The ~1.5-2 GB figure is the drop in used memory on an idle M4 MacBook Pro 16 GB (macOS 26.3.1) after disabling the full default set and rebooting, compared beforehand. Your number depends on which services you actually run — check debloat --status for the reclaimable RAM on your own machine before and after.
| Tool | Console UI | Curated list | Persistent | No SIP disable | Zero install |
|------|-----------|--------------|------------|----------------|--------------|
| mac-os-debloat | ✓ | ✓ 269 labels | ✓ | ✓ | ✓ Python stdlib |
| launchtui | ✓ | ✗ generic | ✗ bootout only | ✓ | ✗ cargo install |
| Silverback-Debloater | ✗ | ✓ | ✓ | ✓ | ✗ Intel-desktop only |
| b0gdanw Tahoe gist | ✗ | ✓ | ✓ | ✗ needs SIP off | gist copy |
| LaunchControl / Lingon | GUI | ✗ | ✓ | ✓ | ✗ commercial |
MIT · macOS Tahoe 26.x · Apple Silicon · Python 3.10+ (ships with Xcode CLT)
Keywords: macOS debloat, macOS Tahoe debloat, Apple Silicon debloat, disable Apple Intelligence, disable Siri permanently, launchctl disable, free RAM macOS, mac performance mode, macOS privacy, kill Apple telemetry, macOS service manager, launchd console util, contextstored memory leak, Tahoe RAM usage, Apple Intelligence disable launchctl.
