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.

PlatformArchitectureFile
Linuxx86_64sdf-linux-amd64.tar.gz
LinuxARM64sdf-linux-arm64.tar.gz
macOSIntelsdf-darwin-amd64.tar.gz
macOSApple Siliconsdf-darwin-arm64.tar.gz
Windowsx86_64sdf-windows-amd64.zip
WindowsARM64sdf-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:

DependencyRequired forInstall
gitAll operationsComes with your OS
ghPR operations (sdf pr, sdf sync)cli.github.com
claudeAI featuresclaude.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