Installation
pfy installs from a GitHub release archive, with go install, or from source. Shell completion and a post-install check are at the end of the page.
Prerequisites
- A running ProductifyFW Manager that you can reach over HTTP(S). You need it for most commands, but not to install the CLI.
Install from GitHub Releases
Releases are published to the ProductifyFW/cli releases page as compressed archives named pfy_<version>_<os>_<arch>.tar.gz (a .zip on Windows), plus a checksums.txt with the SHA-256 of every archive. There are no bare per-platform binaries: download the archive and extract the pfy binary from it. The current release is v2.0.0.
Available platform combinations: linux/darwin/windows × amd64/arm64.
Linux
# Resolve the latest version (or set PFY_VERSION yourself, e.g. PFY_VERSION=2.0.0)
PFY_VERSION=$(curl -fsSL https://api.github.com/repos/ProductifyFW/cli/releases/latest \
| sed -n 's/.*"tag_name": *"v\([^"]*\)".*/\1/p')
# Download the archive and the checksum file (use _arm64 on ARM machines)
curl -fsSLO "https://github.com/ProductifyFW/cli/releases/download/v${PFY_VERSION}/pfy_${PFY_VERSION}_linux_amd64.tar.gz"
curl -fsSLO "https://github.com/ProductifyFW/cli/releases/download/v${PFY_VERSION}/checksums.txt"
# Verify the checksum
grep "pfy_${PFY_VERSION}_linux_amd64.tar.gz" checksums.txt | sha256sum -c -
# Extract the binary and put it on your PATH
tar -xzf "pfy_${PFY_VERSION}_linux_amd64.tar.gz" pfy
sudo mv pfy /usr/local/bin/pfymacOS
PFY_VERSION=$(curl -fsSL https://api.github.com/repos/ProductifyFW/cli/releases/latest \
| sed -n 's/.*"tag_name": *"v\([^"]*\)".*/\1/p')
# Apple Silicon: darwin_arm64; Intel: darwin_amd64
curl -fsSLO "https://github.com/ProductifyFW/cli/releases/download/v${PFY_VERSION}/pfy_${PFY_VERSION}_darwin_arm64.tar.gz"
curl -fsSLO "https://github.com/ProductifyFW/cli/releases/download/v${PFY_VERSION}/checksums.txt"
grep "pfy_${PFY_VERSION}_darwin_arm64.tar.gz" checksums.txt | shasum -a 256 -c -
tar -xzf "pfy_${PFY_VERSION}_darwin_arm64.tar.gz" pfy
sudo mv pfy /usr/local/bin/pfyWindows
Download pfy_<version>_windows_amd64.zip (or _arm64) from the releases page, then:
Expand-Archive pfy_<version>_windows_amd64.zip -DestinationPath $HOME\pfy
# Add $HOME\pfy to your PATH environment variableInstall a specific version
Pin PFY_VERSION instead of resolving the latest release:
PFY_VERSION=2.0.0
curl -fsSLO "https://github.com/ProductifyFW/cli/releases/download/v${PFY_VERSION}/pfy_${PFY_VERSION}_linux_amd64.tar.gz"
tar -xzf "pfy_${PFY_VERSION}_linux_amd64.tar.gz" pfy
sudo mv pfy /usr/local/bin/pfyInstall with go install
With Go 1.25+ installed:
go install github.com/ProductifyFW/cli/pfy@latestThis builds pfy into $(go env GOPATH)/bin. A go install build has no version stamped in. Because the version is empty, the --version flag is not registered at all: pfy --version fails with flag provided but not defined: -version. Use a release archive if you need pfy --version to work.
Build from source
Clone the repository and run its install script. The script changes into its own directory first, so you can run it from anywhere:
git clone https://github.com/ProductifyFW/cli.git
./cli/install.shIt runs go install with the version from version.txt plus a -dev suffix, so pfy --version prints something like pfy version 2.0.0-dev (built ...).
Shell Completion
pfy completion <shell> prints a completion script. The command is hidden from pfy --help but always available. Supported shells: bash, zsh, fish.
Bash
source <(pfy completion bash)
# Add to your ~/.bashrc for persistence
echo 'source <(pfy completion bash)' >> ~/.bashrcZsh
source <(pfy completion zsh)
# Add to your ~/.zshrc for persistence
echo 'source <(pfy completion zsh)' >> ~/.zshrcFish
pfy completion fish | source
# Add to your ~/.config/fish/config.fish for persistence
echo 'pfy completion fish | source' >> ~/.config/fish/config.fishVerify Installation
Check that the CLI is installed correctly:
pfy --helpYou should see the usage banner and the list of available commands.
--version vs pfy version
pfy --version prints the binary's own version, stamped in at build time via ldflags:
$ pfy --version
pfy version 2.0.0 (built 2026-09-09)The separate pfy version command manages the project's version in project.yaml; see Version Management.
--version only exists in builds that have a version stamped in (release archives and install.sh). A plain go install build rejects the flag.
Next Steps
After installation:
- Authenticate with your Manager
- Follow the Quick Start Guide
- Explore available commands
Troubleshooting
Command not found
If you get pfy: command not found, the directory you put pfy in is not on your PATH. Check with which pfy and echo $PATH, then either move the binary to a directory on your PATH (for example /usr/local/bin) or add its directory to PATH in your shell profile and reload the shell.
Permission denied
The extracted binary may have lost its executable bit:
chmod +x /path/to/pfyBuild failures
Building from source needs Go 1.25 or newer (go version). If modules are missing, run go mod download in the repository.