Skip to main content

Install and Verify

gfrm release binaries run on clean machines. You do not need Dart, FVM, Node, or Yarn on the target host.

Verify checksums​

# Linux or macOS with sha256sum
sha256sum --check checksums-sha256.txt

# macOS with shasum
shasum -a 256 --check checksums-sha256.txt

macOS Intel​

unzip gfrm-macos-intel.zip -d ./gfrm-macos-intel
cd ./gfrm-macos-intel
chmod +x ./gfrm
./gfrm --help

macOS Apple Silicon​

unzip gfrm-macos-silicon.zip -d ./gfrm-macos-silicon
cd ./gfrm-macos-silicon
chmod +x ./gfrm
./gfrm --help

Linux​

unzip gfrm-linux.zip -d ./gfrm-linux
cd ./gfrm-linux
chmod +x ./gfrm
./gfrm --help

Windows (PowerShell)​

Expand-Archive .\gfrm-windows.zip -DestinationPath .\gfrm-windows
.\gfrm-windows\gfrm.exe --help

macOS notes​

  • Choose intel or silicon based on the machine type.
  • If Gatekeeper still blocks execution after unzip, use the troubleshooting fallback:
xattr -d com.apple.quarantine ./gfrm

For macOS release signing and notarization details, see macOS Release Artifacts.

Docker​

Run gfrm without installing Dart, FVM, or any runtime on the host. Only Docker is required.

Build the image (from the repository root, requires the source clone):

docker build -t gfrm .

Run a migration:

docker run --rm \
-v "$(pwd)/migration-results:/app/migration-results" \
-e GITHUB_TOKEN="$GITHUB_TOKEN" \
-e GITLAB_TOKEN="$GITLAB_TOKEN" \
gfrm migrate \
--source-provider gitlab --source-url https://gitlab.com/owner/repo \
--target-provider github --target-url https://github.com/owner/repo

Mount migration-results/ so artifacts persist after the container exits. Pass forge tokens via -e — never embed them in the image.

Resume a failed run:

docker run --rm \
-v "$(pwd)/migration-results:/app/migration-results" \
-v "$(pwd)/sessions:/app/sessions" \
-e GITHUB_TOKEN="$GITHUB_TOKEN" \
-e GITLAB_TOKEN="$GITLAB_TOKEN" \
gfrm resume --session-file sessions/last-session.json

Mount sessions/ as well so the saved session file is available for resume.