Skip to main content

Homebrew App Migrator

PyPI version Python versions License

A retro-styled CLI tool to migrate manually installed macOS applications from /Applications to Homebrew Casks.

Why this tool?

If you've ever bought a new Mac and spent hours manually downloading .dmg files, dragging them to /Applications, and trying to remember everything you had installed, this tool is for you.

Homebrew is the gold standard for managing software on macOS, but it only works if your apps are installed as "Casks." Most people have a mix of apps they downloaded from websites and apps installed via Homebrew.

The Power of the Brewfile

Once your apps are migrated to Homebrew Casks using this tool, you can run:

brew bundle dump

This generates a Brewfile (like this example). This single file is like a "save game" for your entire Mac setup. On a new machine, you just run brew bundle and every single app is automatically installed for you in minutes.

Features

  • Retro UI: A terminal-based interface that feels like an old-school computer system.
  • Intelligent Search: Automatically finds the correct Homebrew Cask for your installed apps.
  • Dry Run Mode: Safe simulation mode to see what would happen without making any changes.
  • Migration History: Remembers what you've already migrated, skipped, or failed.
  • Batch Mode: Quick-install the best matches for all your apps at once.
  • Paginated Results: Easily browse through multiple search results.

Installation

Via PyPI (Recommended)

Install the latest stable version directly from PyPI:

pip install brew-migrator

From Source (Development)

  1. Clone the repository:

    git clone https://github.com/chriszimbizi/brew-migrator.git
    cd brew-migrator
    
  2. Install in editable mode:

    pip install -e .
    

Usage

After installation, you can run the tool using the brew-migrator command:

brew-migrator [OPTIONS]

Options

  • --dry-run: (Highly Recommended) Simulate the migration without making any changes.
  • --list-apps: List all applications found in your /Applications folder.
  • --app "AppName": Process a specific application by name.
  • --batch: Run in batch mode (automatically install the top match).
  • --retry-skipped: Retry apps that were previously skipped.
  • --reset-history: Clear the migration history file.

Examples

Safe Simulation:

brew-migrator --dry-run

List all apps:

brew-migrator --list-apps

Run in batch mode:

brew-migrator --batch

How it Works

  1. Scan: The tool looks at everything in your /Applications folder.
  2. Search: It asks Homebrew if there's a corresponding "Cask" for each app.
  3. Selection: You choose the correct match from a list (or let Batch Mode handle it).
  4. Log: The tool records the migration in a JSON history file to prevent double-work.

Project Structure

.
├── LICENSE
├── README.md
├── pyproject.toml
└── src
    └── brew_migrator
        ├── cli.py
        ├── core
        │   ├── brew.py
        │   └── history.py
        └── ui
            └── console.py

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Release files for brew-migrator 0.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for brew-migrator 0.0.2
File Size Uploaded
brew_migrator-0.0.2.tar.gz 12.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for brew-migrator 0.0.2
File Interpreter ABI Platform
brew_migrator-0.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 24.6 kB

Release files / brew_migrator-0.0.2.tar.gz

Download URL brew_migrator-0.0.2.tar.gz
Size 12.4 kB
Tags Source
SHA-256 checksum
How to use checksums
05f1cf4ae78f175dee67c29c063dc38be171d42e68077be840b9795e7665206f
BLAKE2b-256 checksum
How to use checksums
3062b48f29a021479f6434ab890673ee0a807fab960c9b9caff9d2640bdca315
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / brew_migrator-0.0.2-py3-none-any.whl

Download URL brew_migrator-0.0.2-py3-none-any.whl
Size 12.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5cc25948ad1498221b0e446565c24cab21378880aa7add470bcbb6c09972500f
BLAKE2b-256 checksum
How to use checksums
be410b671c04d5669ebbd8ce3aff396a45835515f6adadaad664270b65198909
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release history Release notifications | RSS feed

This release

0.0.2 This release

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page