Skip to content

Repository files navigation

Tilly logo

Tilly

A focused, native macOS application uninstaller

Inspect associated files, choose what stays, and move only approved items to the Trash.

Latest release MIT License Swift 6 SwiftUI macOS 27 or later

Download latest release  ·  Product flow  ·  Safety model  ·  Development

Tilly is intentionally small and conservative. It relies on application metadata and exact associations instead of broad filename matching, so the user can review the result before anything moves to the Trash.

Note

Tilly is designed for macOS 27 or later and currently ships as an Apple Silicon arm64 application.

Product flow

Tilly keeps the uninstall workflow visible from start to finish:

  1. Choose an app from the installed applications sidebar.
  2. Inspect related files discovered from bundle identity, preferences, containers, caches, logs, saved state, and support directories.
  3. Review every candidate with independent selection controls, sorting, search, paths, sizes, and shared-data warnings.
  4. Move approved items to the Trash after a native confirmation step.

Features

A native macOS experience

  • Swift 6 and SwiftUI with a modern NavigationSplitView layout.
  • Native macOS controls, 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.
  • Lightweight transient feedback for actions such as copying a path or bundle identifier.

Conservative discovery

  • Installed application scanning from /Applications and ~/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.

Safe removal

  • Selected files are moved to the macOS Trash instead of permanently deleted.
  • Protected system paths and symlink targets are validated before removal.
  • Running applications are detected before deletion and can be asked to quit.
  • Tilly preflights every selected item and moves none if any selected item lacks access.
  • Missing files, permission failures, and partial deletion results are reported clearly.
  • No privileged helper, elevated shell command, or background daemon.

Safety first

Important

Tilly is an uninstaller. Always review the selected paths before confirming a removal. Shared containers can belong to multiple applications and are intentionally excluded from 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.

Tilly has no broad notification, camera, contacts, automation, or network permissions. Storage summaries avoid scanning personal folders at startup. On first launch, Tilly offers an optional Full Disk Access setup guide. 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 silently failing.

Installation

Download the app

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.

Build from source

Requirements:

  • macOS 27 or later
  • Xcode 27 or later
  • Swift 6

Open the native project:

open Tilly.xcodeproj

Select the Tilly scheme and press Run.

Development

Build the native app target from the command line:

xcodebuild \
  -project Tilly.xcodeproj \
  -scheme Tilly \
  -configuration Debug \
  -derivedDataPath .xcodebuild \
  build

The development app is created at:

.xcodebuild/Build/Products/Debug/Tilly.app

Use SwiftPM for lightweight compilation:

swift build

Format and lint Swift sources with Xcode's formatter:

xcrun swift-format format --in-place --recursive Tilly
xcrun swift-format lint --recursive Tilly

For the complete local DMG and release process, read docs/RELEASING.md.

Project structure

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.

Current scope

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. These are deliberate boundaries that keep the experience understandable and reduce false-positive risk.

Community

License

Tilly is available under the MIT License.

About

A native macOS application uninstaller built with Swift 6, SwiftUI, and macOS 27.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages