GitHub - popyapp/app_cleaner · GitHub
/" data-turbo-transient="true" />
Skip to content
Type / to search
Sign in<br>Sign upAppearance settings
You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.
Dismiss alert
{{ message }}
Uh oh!
There was an error while loading. Please reload this page.
popyapp
app_cleaner
Public
Notifications<br>You must be signed in to change notification settings
Fork
Star
main
BranchesTags
Go to file
CodeOpen more actions menu
Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit
History<br>8 Commits<br>8 Commits
.github
.github
Assets
Assets
Sources/AppCleaner
Sources/AppCleaner
scripts
scripts
.gitignore
.gitignore
LICENSE
LICENSE
Makefile
Makefile
Package.swift
Package.swift
README.md
README.md
View all files
Repository files navigation
AppCleaner
A free, open-source, native macOS app uninstaller — inspired by<br>FreeMacSoft's AppCleaner.
Dragging an app to the Trash leaves gigabytes of junk behind in ~/Library.<br>AppCleaner finds all of an application's related files and removes them<br>together with the app, safely, via the Trash.
Built with Swift + SwiftUI. No dependencies, no telemetry, no nonsense.
Features
Drag & drop an app onto the window (or onto the Dock icon) to scan it
Browse & search every app installed in /Applications and ~/Applications
Thorough leftover detection across the user and system domains:
Application Support (including vendor subfolders like Google/Chrome)
Containers and Group Containers
Caches, HTTPStorages, WebKit, Cookies
Preferences (including ByHost)
Saved Application State, Autosave Information
Logs, DiagnosticReports, CrashReporter
LaunchAgents and LaunchDaemons (matched by file name and plist contents)
Application Scripts
Package receipts in /private/var/db/receipts
Matches by bundle identifier , app name , and executable name —<br>conservatively, to avoid false positives
Shows the size of every item , grouped by category, all checked by default
Warns when the app is still running and lets you quit it first
Deletes by moving to the Trash (recoverable); root-owned files can<br>optionally be removed with an administrator prompt
A built-in safety net refuses to touch anything outside<br>~/Library, /Library, /Applications, ~/Applications and receipt files
Bonus: a CLI mode for scripting — AppCleaner --scan /Applications/Foo.app<br>prints everything it would find, without deleting anything
Install
Download the latest AppCleaner-.zip from the<br>releases page, unzip it and<br>drag AppCleaner.app to /Applications. Each release lists the archive's<br>SHA-256 checksum and the exact build commit; verify what you're running with<br>AppCleaner --version.
Or build from source (macOS 13+, Xcode command line tools):
git clone https://github.com/popyapp/app_cleaner.git<br>cd app_cleaner<br>make app # builds build/AppCleaner.app<br>open build # then drag AppCleaner.app to /Applications
Or during development:
swift run AppCleaner # run the GUI<br>swift run AppCleaner --scan /Applications/Foo.app # dry-run scan from the terminal
Safety
Everything is moved to the Trash first — nothing is permanently deleted<br>unless you explicitly confirm the administrator fallback for root-owned files.
The scanner only ever suggests files matching the app's bundle identifier or<br>full name; short/generic names are excluded from name matching.
The remover refuses paths outside the known Library/Applications locations.
Still: review the list before clicking Remove. It's your disk.
MCP server (AI agent integration)
AppCleaner doubles as an MCP server: run the<br>binary with the --mcp flag and it speaks JSON-RPC over stdio, so any<br>MCP-capable AI agent (Claude Code, Claude Desktop, Cursor, ...) can list, scan<br>and uninstall applications directly — no GUI needed, no extra dependencies.
Setup
Claude Code:
claude mcp add appcleaner -- /Applications/AppCleaner.app/Contents/MacOS/AppCleaner --mcp
Any other MCP client, via the standard stdio server config:
"mcpServers": {<br>"appcleaner": {<br>"command": "/Applications/AppCleaner.app/Contents/MacOS/AppCleaner",<br>"args": ["--mcp"]
Then just ask your agent: "uninstall MacDown and all its leftovers" or<br>"which of my installed apps has the largest leftovers?".
Tools
Tool<br>Arguments<br>Description
list_apps<br>List installed apps (name, bundle id, version, path)
scan_app<br>app<br>Read-only: report every related file with category, size and whether removal needs elevated access
uninstall_app<br>app, confirm<br>Move the app bundle and all leftovers to the Trash
remove_paths<br>app, paths, confirm<br>Remove a subset of an app's files (e.g. only caches)
The app argument accepts a path to a .app bundle, a bundle identifier, or<br>an app name (fuzzy-matched; ambiguous names are rejected with the candidate<br>list). Results are returned as structured JSON, including...