v0.1.0 — APT & snap → Homebrew, the safe way

Move user-space tools
out of apt and into brew.

apt2brew scans your installed APT and snap packages, finds the Homebrew equivalent, and migrates only the ones that are safe to move — with a verified install and an incremental rollback script before anything is removed.

cargo run -- migrate
Scan Results
apt2brew
10 selected
14 visible / 247 total
Filter: All
Package
APT Ver
Brew
Risk
Reason
[x]
bat
0.24.0-1
bat
LOW
user-space tool
[x]
fd-find
9.0.0-1
fd
LOW
user-space tool
[x]
fzf
0.46.1-1
fzf
LOW
user-space tool
[x]
htop
3.3.0-2
htop
LOW
user-space tool
[x]
jq
1.7.1-3build1
jq
LOW
user-space tool
[x]
neovim
0.9.5-7
neovim
LOW
user-space tool
[x]
ripgrep
14.1.0-1
ripgrep
LOW
user-space tool
[x]
tmux
3.4-1ubuntu1
tmux
LOW
user-space tool
[x]
tree
2.1.1-2build1
tree
LOW
user-space tool
[x]
yq
4.40.5-1
yq
LOW
user-space tool
[ ]
curl
8.5.0-2ubuntu1
curl
HIGH
system-critical
[ ]
gcc
4:13.2.0-7ubu...
gcc
HIGH
system-critical
libssl3
3.0.13-0ubuntu
-
N/A
library
openssh-server
1:9.6p1-3ubun...
-
N/A
installs systemd

Three commands. That's the whole tool.

A natural progression: see what you have, move what's safe, undo if needed.

1

scan

read-only

Lists every manually-installed APT and snap package, finds the matching Homebrew formula, and labels each one Low or High risk.

2

migrate

interactive TUI

Toggle the packages you want to move, hit Enter, and apt2brew installs them via brew, verifies each one, then removes the originals from APT or snap.

3

rollback

safety net

Reinstalls packages back to APT or snap and removes them from brew. Works for the latest run or any individual package — the rollback script is written before anything is removed.

Install

Linux with APT, plus Homebrew for Linux in your PATH. The APT repo auto-updates with apt update.

APT repo (recommended)apt
$ sudo install -m 0755 -d /etc/apt/keyrings
$ curl -fsSL https://apt2brew.federicoconticello.com/apt2brew.gpg.key \
    | sudo gpg --dearmor -o /etc/apt/keyrings/apt2brew.gpg
$ echo "deb [signed-by=/etc/apt/keyrings/apt2brew.gpg] https://apt2brew.federicoconticello.com stable main" \
    | sudo tee /etc/apt/sources.list.d/apt2brew.list
$ sudo apt update
$ sudo apt install apt2brew

Commands

Each command has a non-interactive mode for scripts.

scanread-only
$ apt2brew scan
# prints a table: package | apt ver | brew | risk | reason
migrateinteractive TUI
$ apt2brew migrate            # interactive TUI
$ apt2brew migrate --dry-run  # show what would happen
$ apt2brew migrate --yes      # execute with pre-selected packages
rollbacksafety net
$ apt2brew rollback                  # pick from a TUI
$ apt2brew rollback --yes            # revert the latest run
$ apt2brew rollback --package fd     # revert one package