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.