I just build another app cleaner app for Mac OS X (facepalm)

kulekci1 pts2 comments

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...

appcleaner applications files name bundle build

Related Articles