Homebrew App Migrator
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)
-
Clone the repository:
git clone https://github.com/chriszimbizi/brew-migrator.git cd brew-migrator
-
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/Applicationsfolder.--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
- Scan: The tool looks at everything in your
/Applicationsfolder. - Search: It asks Homebrew if there's a corresponding "Cask" for each app.
- Selection: You choose the correct match from a list (or let Batch Mode handle it).
- 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)
| File | Size | Uploaded | |
|---|---|---|---|
| brew_migrator-0.0.2.tar.gz | 12.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|