Skip to content

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 ​

bash
# 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/pfy

macOS ​

bash
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/pfy

Windows ​

Download pfy_<version>_windows_amd64.zip (or _arm64) from the releases page, then:

powershell
Expand-Archive pfy_<version>_windows_amd64.zip -DestinationPath $HOME\pfy
# Add $HOME\pfy to your PATH environment variable

Install a specific version ​

Pin PFY_VERSION instead of resolving the latest release:

bash
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/pfy

Install with go install ​

With Go 1.25+ installed:

bash
go install github.com/ProductifyFW/cli/pfy@latest

This 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:

bash
git clone https://github.com/ProductifyFW/cli.git
./cli/install.sh

It 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 ​

bash
source <(pfy completion bash)

# Add to your ~/.bashrc for persistence
echo 'source <(pfy completion bash)' >> ~/.bashrc

Zsh ​

bash
source <(pfy completion zsh)

# Add to your ~/.zshrc for persistence
echo 'source <(pfy completion zsh)' >> ~/.zshrc

Fish ​

bash
pfy completion fish | source

# Add to your ~/.config/fish/config.fish for persistence
echo 'pfy completion fish | source' >> ~/.config/fish/config.fish

Verify Installation ​

Check that the CLI is installed correctly:

bash
pfy --help

You 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:

bash
$ 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:

  1. Authenticate with your Manager
  2. Follow the Quick Start Guide
  3. 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:

bash
chmod +x /path/to/pfy

Build failures ​

Building from source needs Go 1.25 or newer (go version). If modules are missing, run go mod download in the repository.