Installation
SDF ships as a single static binary. Pick the method that fits your workflow.
Homebrew (macOS and Linux)
brew install pavelpascari/tap/sdf
Updates are handled by brew upgrade.
Go install
If you have Go 1.24 or later:
go install github.com/pavelpascari/sdf@latest
The binary is placed in $GOPATH/bin (ensure this is on your $PATH).
Binary download
Pre-built binaries are available for every platform on the Releases page.
| Platform | Architecture | File |
|---|---|---|
| Linux | x86_64 | sdf-linux-amd64.tar.gz |
| Linux | ARM64 | sdf-linux-arm64.tar.gz |
| macOS | Intel | sdf-darwin-amd64.tar.gz |
| macOS | Apple Silicon | sdf-darwin-arm64.tar.gz |
| Windows | x86_64 | sdf-windows-amd64.zip |
| Windows | ARM64 | sdf-windows-arm64.zip |
GoReleaser produces a single checksums.txt file covering all archives. Verify before running:
# Download and verify (Linux x86_64 example)
curl -LO https://github.com/pavelpascari/sdf/releases/latest/download/sdf-linux-amd64.tar.gz
curl -LO https://github.com/pavelpascari/sdf/releases/latest/download/checksums.txt
sha256sum -c --ignore-missing checksums.txt
tar xzf sdf-linux-amd64.tar.gz
mv sdf /usr/local/bin/
Build from source
git clone https://github.com/pavelpascari/sdf.git
cd sdf
make build # → bin/sdf
make install # → $GOPATH/bin/sdf
Requires Go 1.24+.
Runtime dependencies
SDF shells out to other CLIs rather than reimplementing their logic:
| Dependency | Required for | Install |
|---|---|---|
git | All operations | Comes with your OS |
gh | PR operations (sdf pr, sdf sync) | cli.github.com |
claude | AI features | claude.ai/code |
The Claude CLI is optional. Without it, sdf sync will open $EDITOR on conflicts instead of resolving them automatically.
Verify everything is in place:
sdf doctor
Uninstall
Remove the binary from wherever you placed it. SDF writes no data outside the repositories you use it in (plus ~/.config/sdf/config.json for global config).
# If installed via Homebrew
brew uninstall sdf
# If installed manually
rm $(which sdf)
rm -rf ~/.config/sdf