Tilly is a native macOS uninstaller. Pick an installed app, inspect the files tied to it, and move only the ones you approve to the Trash.
It matches by bundle identity, not loose filenames. Shared containers stay unchecked.
Download the latest release · Apple Silicon, macOS 27 or later.
- Choose an app from the installed applications sidebar.
- Inspect related files discovered from bundle identity, preferences, containers, caches, logs, saved state, and support directories.
- Review every candidate with independent selection, sorting, search, paths, sizes, and shared-data warnings.
- Move approved items to the Trash after a native confirmation step.
- Swift 6 and SwiftUI with a
NavigationSplitViewlayout. - Native menus, confirmation dialogs, progress states, and keyboard actions.
- Light, dark, tinted, and clear app icon appearances through Icon Composer.
- Independent sidebar search and related-file search.
- Transient feedback for actions such as copying a path or bundle identifier.
- Installed application scanning from
/Applicationsand~/Applications. - Bundle identifier, display name, executable, and version-normalized identity matching.
- Metadata-aware container matching, including UUID-named containers.
- Application Support, caches, preferences, logs, saved state, containers, group containers, and launch agents.
- Bounded nested searches with duplicate parent and child pruning.
- Shared group containers marked for review and deselected by default.
- Selected files are moved to the Trash, not permanently deleted.
- Protected system paths and symlink targets are validated before removal.
- Running applications are detected before deletion and can be asked to quit.
- Missing files, permission failures, and partial results are reported clearly.
- No privileged helper, elevated shell command, or background daemon.
Important
Tilly is an uninstaller. Review the selected paths before confirming. Shared containers can belong to more than one application and are left out of the default selection.
Tilly searches known locations and prefers confidence over recall. It does not search every file on disk or delete unrelated data based on a loose filename match.
It has no broad notification, camera, contacts, automation, or network permissions. Storage summaries avoid scanning personal folders at startup. Related application data is inspected on demand when an application is selected. If macOS protects a selected location, Tilly explains the requirement and opens the relevant System Settings pane instead of failing silently.
Open the latest release, download the Apple Silicon DMG, and drag Tilly to Applications.
The current release is locally built, ad hoc signed, and not notarized because the project does not yet have a Developer ID distribution certificate. macOS may ask you to Control-click Tilly in Applications and choose Open on the first launch. Read the release notes for the checksum and verification details.
Requirements: macOS 27 or later, Xcode 27 or later, Swift 6.
open Tilly.xcodeprojSelect the Tilly scheme and press Run.
xcodebuild \
-project Tilly.xcodeproj \
-scheme Tilly \
-configuration Debug \
-derivedDataPath .xcodebuild \
buildThe development app is created at:
.xcodebuild/Build/Products/Debug/Tilly.app
Use SwiftPM for a lightweight compile:
swift buildFormat and lint Swift sources:
xcrun swift-format format --in-place --recursive Tilly
xcrun swift-format lint --recursive TillyFor the DMG and release process, see docs/RELEASING.md.
Tilly/
├── App/ # Application entry point
├── Features/
│ ├── Sidebar/ # Installed application browser
│ ├── Storage/ # Storage summary
│ └── Uninstaller/ # Related-file review and removal actions
├── Models/ # Small value models
├── Services/ # Filesystem scanning, storage, and deletion
├── Shared/ # Search and feedback components
├── ViewModels/ # Main-actor application state
└── Resources/ # Icon Composer source asset
Tilly.xcodeproj/ # Native macOS app project
Package.swift # SwiftPM development target
See docs/ARCHITECTURE.md for runtime flow and design decisions.
Tilly focuses on one workflow: inspect and remove files associated with an installed application.
The default app does not search every file on disk, inspect package receipts, remove orphaned data unrelated to a selected app, install a privileged helper, or run privileged system cleanup. Those are deliberate boundaries.
- Report a bug
- Request a feature
- Join Discussions
- Read the contribution guide
- Read the security policy
Tilly is available under the MIT License.
