• v3.4.5 508c06f394

    v3.4.5
    All checks were successful
    published / release-tag (push) Successful in 3s
    published / runner-is-ready (push) Successful in 8s
    published / projectfile-is-valid (push) Successful in 6s
    published / schema-fetched (push) Successful in 4s
    published / source-is-compliant (push) Successful in 11s
    published / source-is-secure (push) Successful in 23s
    published / gpg-is-ready (push) Successful in 4s
    published / signing-is-ready (push) Successful in 7s
    published / projectfile-is-ok (push) Successful in 9s
    published / documentation-passes-lint (push) Successful in 1m8s
    published / source-is-tested (push) Successful in 14s
    published / source-passes-lint (push) Successful in 1m17s
    published / binaries-are-built (amd64, darwin) (push) Successful in 20s
    published / binaries-are-built (amd64, linux) (push) Successful in 14s
    published / binaries-are-built (arm64, darwin) (push) Successful in 11s
    published / binaries-are-built (arm64, linux) (push) Successful in 13s
    published / binaries-are-built (riscv64, linux) (push) Successful in 14s
    published / gsa (amd64, darwin) (push) Successful in 15s
    published / gsa (arm64, darwin) (push) Successful in 11s
    published / gsa (amd64, linux) (push) Successful in 11s
    published / gsa (arm64, linux) (push) Successful in 12s
    published / gsa (riscv64, linux) (push) Successful in 19s
    published / image-is-built (amd64) (push) Successful in 1m29s
    published / binaries-are-signed (push) Successful in 14s
    published / image-has-sbom (amd64) (push) Successful in 14s
    published / image-is-secure (amd64) (push) Successful in 17s
    published / binaries-are-torrented (push) Successful in 20s
    published / binaries-torrent-is-verified (push) Successful in 9s
    published / container-is-verified (amd64) (push) Successful in 3m25s
    published / image-is-published (kiota) (push) Successful in 31s
    published / image-is-published (dockerhub) (push) Successful in 1m8s
    published / release-is-published (push) Successful in 19s
    published / release-notes-are-published (push) Successful in 7s
    published / go-install-is-ok (push) Successful in 49s
    published / published (push) Successful in 0s
    Stable

    damian-buho released this 2026-10-25 01:05:33 +00:00 | 0 commits to main since this release

    Signed by damian-buho
    GPG key ID: 87B15EAD49FD22AB

    5 commits, 1 contributor, 1 day since v3.4.4.

    Installation

    Container image

    Pull the published container image:

    Pull from DockerHub — linux/amd64

    docker pull damianbuho/projectfile-cli:v3.4.5
    alias pf-cli='docker run --rm --user "$(id -u):$(id -g)" --group-add 0 --volume "$PWD:/app/ws" --workdir /app/ws damianbuho/projectfile-cli:v3.4.5 pf-cli'
    

    If the registries above are unreachable, pull from the origin instead:

    Pull from Kiota — linux/amd64

    docker pull kiota.ch/projectfile/cli:v3.4.5
    alias pf-cli='docker run --rm --user "$(id -u):$(id -g)" --group-add 0 --volume "$PWD:/app/ws" --workdir /app/ws kiota.ch/projectfile/cli:v3.4.5 pf-cli'
    

    Then run it as if it were installed — the alias runs every example as written against the current directory:

    pf-cli --help
    

    Go toolchain

    Install with the Go toolchain:

    go install projectfile.org/projectfile/cli/v3/cmd/pf-cli@v3.4.5
    

    Then run pf-cli --help.

    Prebuilt binary

    Download the prebuilt binary for your platform from this release:

    mkdir -p ~/.local/bin
    curl --fail --location --output ~/.local/bin/pf-cli https://kiota.ch/projectfile/cli/releases/download/v3.4.5/pf-cli-$(uname -s | tr A-Z a-z)-$(uname -m)
    chmod +x ~/.local/bin/pf-cli
    ~/.local/bin/pf-cli --help
    

    Published for: linux/amd64, linux/arm64, linux/riscv64, darwin/amd64, darwin/arm64

    To uninstall, delete that one file: rm ~/.local/bin/pf-cli.

    Usage

    pf-cli

    $ pf-cli --help
    pf-cli is the command-line frontend for the projectfile: it reads, writes and
    validates fields, resolves remote includes, and generates derived artifacts. It
    embeds the v1 JSON Schema for offline validation and is the canonical tool for
    editing projectfiles locally and in CI.
    
    File and forge sync (bridge, forge, scan): use pf-bridge.
    
    Usage:
      pf-cli [command]
    
    Examples:
      pf-cli init --namespace org.example --name demo
      pf-cli get identity.name
      pf-cli set license.spdx MIT
      pf-cli add keywords rust wasm
      pf-cli del keywords[0]
      pf-cli validate
      pf-cli convert yaml toml
      pf-cli optimize
      pf-cli cache status
    
    Read:
      get         Read one or more projectfile fields
    
    Write:
      add         Append items to a projectfile list
      del         Remove a field, list item, or map entry from projectfile
      set         Write a value into a projectfile field
    
    Validate:
      validate    Validate a projectfile against the v1 JSON Schema
    
    Maintain:
      cache       Manage pf-cli’s local cache for offline use
      convert     Convert a projectfile between encodings (toml/yaml/json)
      includes    Manage the includes list
      init        Scaffold a new projectfile document
      optimize    Remove local fields that duplicate include values
      setup       Edit your per-user configuration interactively
    
    Other:
      completion  Generate the autocompletion script for the specified shell
      help        Help about any command
    
    Common flags:
        -q, --quiet          mute info; warnings and errors still print
      -v, --verbose        show each step; also PF_CLI_VERBOSE=1
      --offline            refuse network; use cache and embedded data
    
    Flags:
          --colors string        colour output: auto|always|never; also PF_CLI_NO_COLOR=1 (default "auto")
          --fail-on string       abort includes at error|warning (default "error")
      -h, --help                 help for pf-cli
          --ignore-user-config   skip $XDG_CONFIG_HOME/projectfile/cli.* loading
          --offline              refuse network; use cache and embedded data
      -q, --quiet                mute info; warnings and errors still print
          --sorted               write YAML keys in sorted order
          --timeout duration     per-attempt network timeout (default 10s)
      -v, --verbose              show each step; also PF_CLI_VERBOSE=1
      -V, --version              print the version
    
    Documentation:
      https://github.com/projectfile-org/cli/tree/main/docs
    
    Report a bug:
      https://github.com/projectfile-org/cli/issues
    
    Use "pf-cli [command] --help" for more information about a command.
    

    Examples and every command’s help are in Usage.

    Verify

    Check that what you downloaded is what this project published.

    Container image

    The signature proves this project’s CI built and pushed the image; the attestation carries its software bill of materials.

    COSIGN_KEY=https://kiota.ch/damian-buho/metadata/raw/branch/main/keys/ci-cosign-key.pub
    cosign verify --key "$COSIGN_KEY" --insecure-ignore-tlog=true docker.io/damianbuho/projectfile-cli:v3.4.5
    cosign verify --key "$COSIGN_KEY" --insecure-ignore-tlog=true kiota.ch/projectfile/cli:v3.4.5
    cosign verify-attestation --key "$COSIGN_KEY" --insecure-ignore-tlog=true --type cyclonedx docker.io/damianbuho/projectfile-cli:v3.4.5
    cosign verify-attestation --key "$COSIGN_KEY" --insecure-ignore-tlog=true --type cyclonedx kiota.ch/projectfile/cli:v3.4.5
    

    Prebuilt binary

    The signature proves the binary is the one the maintainer’s release key signed.

    gpg --keyserver hkps://keys.openpgp.org --recv-keys 8F89CBF7C8D51F8BEC7533C00925F8F79EBD3257
    curl --fail --location --output pf-cli.asc https://kiota.ch/projectfile/cli/releases/download/v3.4.5/pf-cli-$(uname -s | tr A-Z a-z)-$(uname -m).asc
    gpg --verify pf-cli.asc ~/.local/bin/pf-cli
    
    # every downloaded asset at once
    gpg --verify pf-cli-SHA256SUMS.asc pf-cli-SHA256SUMS
    sha256sum --check --ignore-missing pf-cli-SHA256SUMS
    

    Download via BitTorrent

    Fetch this release over BitTorrent with a magnet link, or with the attached .torrent file:

    Full changes: https://kiota.ch/projectfile/cli/compare/3.1.1...v3.4.5

    Downloads
  • v3.4.4 bc3078eadc

    v3.4.4
    All checks were successful
    published / release-tag (push) Successful in 2s
    published / schema-fetched (push) Successful in 2s
    published / projectfile-is-valid (push) Successful in 5s
    published / runner-is-ready (push) Successful in 5s
    published / source-is-compliant (push) Successful in 7s
    published / gpg-is-ready (push) Successful in 5s
    published / signing-is-ready (push) Successful in 5s
    published / projectfile-is-ok (push) Successful in 5s
    published / source-is-secure (push) Successful in 14s
    published / source-is-tested (push) Successful in 14s
    published / documentation-passes-lint (push) Successful in 55s
    published / source-passes-lint (push) Successful in 49s
    published / binaries-are-built (amd64, linux) (push) Successful in 5s
    published / binaries-are-built (arm64, darwin) (push) Successful in 6s
    published / binaries-are-built (arm64, linux) (push) Successful in 6s
    published / binaries-are-built (riscv64, linux) (push) Successful in 6s
    published / binaries-are-built (amd64, darwin) (push) Successful in 7s
    published / gsa (amd64, darwin) (push) Successful in 10s
    published / gsa (arm64, linux) (push) Successful in 9s
    published / gsa (amd64, linux) (push) Successful in 9s
    published / gsa (arm64, darwin) (push) Successful in 9s
    published / gsa (riscv64, linux) (push) Successful in 8s
    published / binaries-are-signed (push) Successful in 11s
    published / binaries-are-torrented (push) Successful in 15s
    published / binaries-torrent-is-verified (push) Successful in 6s
    published / image-is-built (amd64) (push) Successful in 59s
    published / image-has-sbom (amd64) (push) Successful in 11s
    published / image-is-secure (amd64) (push) Successful in 12s
    published / container-is-verified (amd64) (push) Successful in 1m46s
    published / image-is-published (kiota) (push) Successful in 10s
    published / image-is-published (dockerhub) (push) Successful in 41s
    published / release-is-published (push) Successful in 7s
    published / release-notes-are-published (push) Successful in 4s
    published / go-install-is-ok (push) Successful in 20s
    published / published (push) Successful in 0s
    Stable

    damian-buho released this 2026-10-21 17:56:39 +00:00 | 6 commits to main since this release

    Signed by damian-buho
    GPG key ID: 87B15EAD49FD22AB

    4 commits, 1 contributor, 2 days since v3.4.3.

    Installation

    Container image

    Pull the published container image:

    Pull from DockerHub — linux/amd64

    docker pull damianbuho/projectfile-cli:v3.4.4
    alias pf-cli='docker run --rm --user "$(id -u):$(id -g)" --group-add 0 --volume "$PWD:/app/ws" --workdir /app/ws damianbuho/projectfile-cli:v3.4.4 pf-cli'
    

    If the registries above are unreachable, pull from the origin instead:

    Pull from Kiota — linux/amd64

    docker pull kiota.ch/projectfile/cli:v3.4.4
    alias pf-cli='docker run --rm --user "$(id -u):$(id -g)" --group-add 0 --volume "$PWD:/app/ws" --workdir /app/ws kiota.ch/projectfile/cli:v3.4.4 pf-cli'
    

    Then run it as if it were installed — the alias runs every example as written against the current directory:

    pf-cli --help
    

    Go toolchain

    Install with the Go toolchain:

    go install projectfile.org/projectfile/cli/v3/cmd/pf-cli@v3.4.4
    

    Then run pf-cli --help.

    Prebuilt binary

    Download the prebuilt binary for your platform from this release:

    mkdir -p ~/.local/bin
    curl --fail --location --output ~/.local/bin/pf-cli https://kiota.ch/projectfile/cli/releases/download/v3.4.4/pf-cli-$(uname -s | tr A-Z a-z)-$(uname -m)
    chmod +x ~/.local/bin/pf-cli
    ~/.local/bin/pf-cli --help
    

    Published for: linux/amd64, linux/arm64, linux/riscv64, darwin/amd64, darwin/arm64

    To uninstall, delete that one file: rm ~/.local/bin/pf-cli.

    Usage

    pf-cli

    $ pf-cli --help
    pf-cli is the command-line frontend for the projectfile: it reads, writes and
    validates fields, resolves remote includes, and generates derived artifacts. It
    embeds the v1 JSON Schema for offline validation and is the canonical tool for
    editing projectfiles locally and in CI.
    
    File and forge sync (bridge, forge, scan): use pf-bridge.
    
    Usage:
      pf-cli [command]
    
    Examples:
      pf-cli init --namespace org.example --name demo
      pf-cli get identity.name
      pf-cli set license.spdx MIT
      pf-cli add keywords rust wasm
      pf-cli del keywords[0]
      pf-cli validate
      pf-cli convert yaml toml
      pf-cli optimize
      pf-cli cache status
    
    Read:
      get         Read one or more projectfile fields
    
    Write:
      add         Append items to a projectfile list
      del         Remove a field, list item, or map entry from projectfile
      set         Write a value into a projectfile field
    
    Validate:
      validate    Validate a projectfile against the v1 JSON Schema
    
    Maintain:
      cache       Manage pf-cli’s local cache for offline use
      convert     Convert a projectfile between encodings (toml/yaml/json)
      includes    Manage the includes list
      init        Scaffold a new projectfile document
      optimize    Remove local fields that duplicate include values
      setup       Edit your per-user configuration interactively
    
    Other:
      completion  Generate the autocompletion script for the specified shell
      help        Help about any command
    
    Common flags:
        -q, --quiet          mute info; warnings and errors still print
      -v, --verbose        show each step; also PF_CLI_VERBOSE=1
      --offline            refuse network; use cache and embedded data
    
    Flags:
          --colors string        colour output: auto|always|never; also PF_CLI_NO_COLOR=1 (default "auto")
          --fail-on string       abort includes at error|warning (default "error")
      -h, --help                 help for pf-cli
          --ignore-user-config   skip $XDG_CONFIG_HOME/projectfile/cli.* loading
          --offline              refuse network; use cache and embedded data
      -q, --quiet                mute info; warnings and errors still print
          --sorted               write YAML keys in sorted order
          --timeout duration     per-attempt network timeout (default 10s)
      -v, --verbose              show each step; also PF_CLI_VERBOSE=1
      -V, --version              print the version
    
    Documentation:
      https://github.com/projectfile-org/cli/tree/main/docs
    
    Report a bug:
      https://github.com/projectfile-org/cli/issues
    
    Use "pf-cli [command] --help" for more information about a command.
    

    Examples and every command’s help are in Usage.

    Verify

    Check that what you downloaded is what this project published.

    Container image

    The signature proves this project’s CI built and pushed the image; the attestation carries its software bill of materials.

    COSIGN_KEY=https://kiota.ch/damian-buho/metadata/raw/branch/main/keys/ci-cosign-key.pub
    cosign verify --key "$COSIGN_KEY" --insecure-ignore-tlog=true docker.io/damianbuho/projectfile-cli:v3.4.4
    cosign verify --key "$COSIGN_KEY" --insecure-ignore-tlog=true kiota.ch/projectfile/cli:v3.4.4
    cosign verify-attestation --key "$COSIGN_KEY" --insecure-ignore-tlog=true --type cyclonedx docker.io/damianbuho/projectfile-cli:v3.4.4
    cosign verify-attestation --key "$COSIGN_KEY" --insecure-ignore-tlog=true --type cyclonedx kiota.ch/projectfile/cli:v3.4.4
    

    Prebuilt binary

    The signature proves the binary is the one the maintainer’s release key signed.

    gpg --keyserver hkps://keys.openpgp.org --recv-keys 8F89CBF7C8D51F8BEC7533C00925F8F79EBD3257
    curl --fail --location --output pf-cli.asc https://kiota.ch/projectfile/cli/releases/download/v3.4.4/pf-cli-$(uname -s | tr A-Z a-z)-$(uname -m).asc
    gpg --verify pf-cli.asc ~/.local/bin/pf-cli
    
    # every downloaded asset at once
    gpg --verify pf-cli-SHA256SUMS.asc pf-cli-SHA256SUMS
    sha256sum --check --ignore-missing pf-cli-SHA256SUMS
    

    Download via BitTorrent

    Fetch this release over BitTorrent with a magnet link, or with the attached .torrent file:

    Full changes: https://kiota.ch/projectfile/cli/compare/3.1.1...v3.4.4

    Downloads
  • v3.4.3 985d2caae3

    v3.4.3
    All checks were successful
    published / release-tag (push) Successful in 3s
    published / projectfile-is-valid (push) Successful in 5s
    published / schema-fetched (push) Successful in 3s
    published / runner-is-ready (push) Successful in 8s
    published / source-is-compliant (push) Successful in 8s
    published / gpg-is-ready (push) Successful in 4s
    published / source-is-secure (push) Successful in 18s
    published / projectfile-is-ok (push) Successful in 5s
    published / signing-is-ready (push) Successful in 5s
    published / source-is-tested (push) Successful in 12s
    published / documentation-passes-lint (push) Successful in 59s
    published / source-passes-lint (push) Successful in 1m1s
    published / binaries-are-built (amd64, darwin) (push) Successful in 4s
    published / binaries-are-built (amd64, linux) (push) Successful in 6s
    published / binaries-are-built (arm64, darwin) (push) Successful in 4s
    published / binaries-are-built (riscv64, linux) (push) Successful in 5s
    published / binaries-are-built (arm64, linux) (push) Successful in 5s
    published / gsa (arm64, darwin) (push) Successful in 5s
    published / gsa (amd64, darwin) (push) Successful in 11s
    published / gsa (amd64, linux) (push) Successful in 8s
    published / gsa (arm64, linux) (push) Successful in 7s
    published / gsa (riscv64, linux) (push) Successful in 8s
    published / binaries-are-signed (push) Successful in 14s
    published / image-is-built (amd64) (push) Successful in 1m41s
    published / binaries-are-torrented (push) Successful in 14s
    published / image-has-sbom (amd64) (push) Successful in 13s
    published / image-is-secure (amd64) (push) Successful in 16s
    published / binaries-torrent-is-verified (push) Successful in 6s
    published / container-is-verified (amd64) (push) Successful in 3m5s
    published / image-is-published (kiota) (push) Successful in 26s
    published / image-is-published (dockerhub) (push) Successful in 58s
    published / release-is-published (push) Successful in 16s
    published / release-notes-are-published (push) Successful in 8s
    published / go-install-is-ok (push) Successful in 1m2s
    published / published (push) Successful in 0s
    Stable

    damian-buho released this 2026-10-19 08:53:51 +00:00 | 11 commits to main since this release

    Signed by damian-buho
    GPG key ID: 87B15EAD49FD22AB

    3 commits, 1 contributor, 7 hours since v3.4.2.

    Bug fixes

    Installation

    Container image

    Pull the published container image:

    Pull from DockerHub — linux/amd64

    docker pull damianbuho/projectfile-cli:v3.4.3
    alias pf-cli='docker run --rm --user "$(id -u):$(id -g)" --group-add 0 --volume "$PWD:/app/ws" --workdir /app/ws damianbuho/projectfile-cli:v3.4.3 pf-cli'
    

    If the registries above are unreachable, pull from the origin instead:

    Pull from Kiota — linux/amd64

    docker pull kiota.ch/projectfile/cli:v3.4.3
    alias pf-cli='docker run --rm --user "$(id -u):$(id -g)" --group-add 0 --volume "$PWD:/app/ws" --workdir /app/ws kiota.ch/projectfile/cli:v3.4.3 pf-cli'
    

    Then run it as if it were installed — the alias runs every example as written against the current directory:

    pf-cli --help
    

    Go toolchain

    Install with the Go toolchain:

    go install projectfile.org/projectfile/cli/v3/cmd/pf-cli@v3.4.3
    

    Then run pf-cli --help.

    Prebuilt binary

    Download the prebuilt binary for your platform from this release:

    mkdir -p ~/.local/bin
    curl --fail --location --output ~/.local/bin/pf-cli https://kiota.ch/projectfile/cli/releases/download/v3.4.3/pf-cli-$(uname -s | tr A-Z a-z)-$(uname -m)
    chmod +x ~/.local/bin/pf-cli
    ~/.local/bin/pf-cli --help
    

    Published for: linux/amd64, linux/arm64, linux/riscv64, darwin/amd64, darwin/arm64

    To uninstall, delete that one file: rm ~/.local/bin/pf-cli.

    Usage

    pf-cli

    $ pf-cli --help
    pf-cli is the command-line frontend for the projectfile: it reads, writes and
    validates fields, resolves remote includes, and generates derived artifacts. It
    embeds the v1 JSON Schema for offline validation and is the canonical tool for
    editing projectfiles locally and in CI.
    
    File and forge sync (bridge, forge, scan): use pf-bridge.
    
    Usage:
      pf-cli [command]
    
    Examples:
      pf-cli init --namespace org.example --name demo
      pf-cli get identity.name
      pf-cli set license.spdx MIT
      pf-cli add keywords rust wasm
      pf-cli del keywords[0]
      pf-cli validate
      pf-cli convert yaml toml
      pf-cli optimize
      pf-cli cache status
    
    Read:
      get         Read one or more projectfile fields
    
    Write:
      add         Append items to a projectfile list
      del         Remove a field, list item, or map entry from projectfile
      set         Write a value into a projectfile field
    
    Validate:
      validate    Validate a projectfile against the v1 JSON Schema
    
    Maintain:
      cache       Manage pf-cli’s local cache for offline use
      convert     Convert a projectfile between encodings (toml/yaml/json)
      includes    Manage the includes list
      init        Scaffold a new projectfile document
      optimize    Remove local fields that duplicate include values
      setup       Edit your per-user configuration interactively
    
    Other:
      completion  Generate the autocompletion script for the specified shell
      help        Help about any command
    
    Common flags:
        -q, --quiet          mute info; warnings and errors still print
      -v, --verbose        show each step; also PF_CLI_VERBOSE=1
      --offline            refuse network; use cache and embedded data
    
    Flags:
          --colors string        colour output: auto|always|never; also PF_CLI_NO_COLOR=1 (default "auto")
          --fail-on string       abort includes at error|warning (default "error")
      -h, --help                 help for pf-cli
          --ignore-user-config   skip $XDG_CONFIG_HOME/projectfile/cli.* loading
          --offline              refuse network; use cache and embedded data
      -q, --quiet                mute info; warnings and errors still print
          --sorted               write YAML keys in sorted order
          --timeout duration     per-attempt network timeout (default 10s)
      -v, --verbose              show each step; also PF_CLI_VERBOSE=1
      -V, --version              print the version
    
    Documentation:
      https://github.com/projectfile-org/cli/tree/main/docs
    
    Report a bug:
      https://github.com/projectfile-org/cli/issues
    
    Use "pf-cli [command] --help" for more information about a command.
    

    Examples and every command’s help are in Usage.

    Verify

    Check that what you downloaded is what this project published.

    Container image

    The signature proves this project’s CI built and pushed the image; the attestation carries its software bill of materials.

    COSIGN_KEY=https://kiota.ch/damian-buho/metadata/raw/branch/main/keys/ci-cosign-key.pub
    cosign verify --key "$COSIGN_KEY" --insecure-ignore-tlog=true docker.io/damianbuho/projectfile-cli:v3.4.3
    cosign verify --key "$COSIGN_KEY" --insecure-ignore-tlog=true kiota.ch/projectfile/cli:v3.4.3
    cosign verify-attestation --key "$COSIGN_KEY" --insecure-ignore-tlog=true --type cyclonedx docker.io/damianbuho/projectfile-cli:v3.4.3
    cosign verify-attestation --key "$COSIGN_KEY" --insecure-ignore-tlog=true --type cyclonedx kiota.ch/projectfile/cli:v3.4.3
    

    Prebuilt binary

    The signature proves the binary is the one the maintainer’s release key signed.

    gpg --keyserver hkps://keys.openpgp.org --recv-keys 8F89CBF7C8D51F8BEC7533C00925F8F79EBD3257
    curl --fail --location --output pf-cli.asc https://kiota.ch/projectfile/cli/releases/download/v3.4.3/pf-cli-$(uname -s | tr A-Z a-z)-$(uname -m).asc
    gpg --verify pf-cli.asc ~/.local/bin/pf-cli
    
    # every downloaded asset at once
    gpg --verify pf-cli-SHA256SUMS.asc pf-cli-SHA256SUMS
    sha256sum --check --ignore-missing pf-cli-SHA256SUMS
    

    Download via BitTorrent

    Fetch this release over BitTorrent with a magnet link, or with the attached .torrent file:

    Full changes: https://kiota.ch/projectfile/cli/compare/3.1.1...v3.4.3

    Downloads
  • v3.4.2 63d50a58de

    v3.4.2
    All checks were successful
    published / release-tag (push) Successful in 1s
    published / projectfile-is-valid (push) Successful in 2s
    published / schema-fetched (push) Successful in 1s
    published / runner-is-ready (push) Successful in 6s
    published / source-is-compliant (push) Successful in 4s
    published / source-is-secure (push) Successful in 10s
    published / gpg-is-ready (push) Successful in 4s
    published / signing-is-ready (push) Successful in 6s
    published / projectfile-is-ok (push) Successful in 8s
    published / source-is-tested (push) Successful in 13s
    published / documentation-passes-lint (push) Successful in 54s
    published / source-passes-lint (push) Successful in 1m15s
    published / binaries-are-built (amd64, darwin) (push) Successful in 7s
    published / binaries-are-built (amd64, linux) (push) Successful in 7s
    published / binaries-are-built (arm64, darwin) (push) Successful in 8s
    published / binaries-are-built (arm64, linux) (push) Successful in 8s
    published / binaries-are-built (riscv64, linux) (push) Successful in 6s
    published / gsa (amd64, darwin) (push) Successful in 7s
    published / gsa (amd64, linux) (push) Successful in 4s
    published / gsa (arm64, darwin) (push) Successful in 5s
    published / gsa (arm64, linux) (push) Successful in 5s
    published / gsa (riscv64, linux) (push) Successful in 4s
    published / image-is-built (amd64) (push) Successful in 1m12s
    published / binaries-are-signed (push) Successful in 12s
    published / image-has-sbom (amd64) (push) Successful in 14s
    published / image-is-secure (amd64) (push) Successful in 18s
    published / binaries-are-torrented (push) Successful in 14s
    published / binaries-torrent-is-verified (push) Successful in 9s
    published / container-is-verified (amd64) (push) Successful in 2m13s
    published / image-is-published (kiota) (push) Successful in 13s
    published / image-is-published (dockerhub) (push) Successful in 45s
    published / release-is-published (push) Successful in 8s
    published / release-notes-are-published (push) Successful in 4s
    published / go-install-is-ok (push) Successful in 47s
    published / published (push) Successful in 0s
    Stable

    damian-buho released this 2026-10-18 23:56:34 +00:00 | 15 commits to main since this release

    Signed by damian-buho
    GPG key ID: 87B15EAD49FD22AB

    24 commits, 1 contributor, 22 hours since v3.4.1.

    Bug fixes

    • get: keep the env-expansion cursor moving on every input (cdbd4d7)
    • refactor CI workflows (new goals + preflight checks) (099413d)
    • workflows: move pins (071582f, bba2b96)
    • workflows: enable checks (09bfbf9)

    Installation

    Container image

    Pull the published container image:

    Pull from DockerHub — linux/amd64

    docker pull damianbuho/projectfile-cli:v3.4.2
    alias pf-cli='docker run --rm --user "$(id -u):$(id -g)" --group-add 0 --volume "$PWD:/app/ws" --workdir /app/ws damianbuho/projectfile-cli:v3.4.2 pf-cli'
    

    If the registries above are unreachable, pull from the origin instead:

    Pull from Kiota — linux/amd64

    docker pull kiota.ch/projectfile/cli:v3.4.2
    alias pf-cli='docker run --rm --user "$(id -u):$(id -g)" --group-add 0 --volume "$PWD:/app/ws" --workdir /app/ws kiota.ch/projectfile/cli:v3.4.2 pf-cli'
    

    Then run it as if it were installed — the alias runs every example as written against the current directory:

    pf-cli --help
    

    Go toolchain

    Install with the Go toolchain:

    go install projectfile.org/projectfile/cli/v3/cmd/pf-cli@v3.4.2
    

    Then run pf-cli --help.

    Prebuilt binary

    Download the prebuilt binary for your platform from this release:

    mkdir -p ~/.local/bin
    curl --fail --location --output ~/.local/bin/pf-cli https://kiota.ch/projectfile/cli/releases/download/v3.4.2/pf-cli-$(uname -s | tr A-Z a-z)-$(uname -m)
    chmod +x ~/.local/bin/pf-cli
    ~/.local/bin/pf-cli --help
    

    Published for: linux/amd64, linux/arm64, linux/riscv64, darwin/amd64, darwin/arm64

    To uninstall, delete that one file: rm ~/.local/bin/pf-cli.

    Usage

    pf-cli

    $ pf-cli --help
    pf-cli is the command-line frontend for the projectfile: it reads, writes and
    validates fields, resolves remote includes, and generates derived artifacts. It
    embeds the v1 JSON Schema for offline validation and is the canonical tool for
    editing projectfiles locally and in CI.
    
    File and forge sync (bridge, forge, scan): use pf-bridge.
    
    Usage:
      pf-cli [command]
    
    Examples:
      pf-cli init --namespace org.example --name demo
      pf-cli get identity.name
      pf-cli set license.spdx MIT
      pf-cli add keywords rust wasm
      pf-cli del keywords[0]
      pf-cli validate
      pf-cli convert yaml toml
      pf-cli optimize
      pf-cli cache status
    
    Read:
      get         Read one or more projectfile fields
    
    Write:
      add         Append items to a projectfile list
      del         Remove a field, list item, or map entry from projectfile
      set         Write a value into a projectfile field
    
    Validate:
      validate    Validate a projectfile against the v1 JSON Schema
    
    Maintain:
      cache       Manage pf-cli’s local cache for offline use
      convert     Convert a projectfile between encodings (toml/yaml/json)
      includes    Manage the includes list
      init        Scaffold a new projectfile document
      optimize    Remove local fields that duplicate include values
      setup       Edit your per-user configuration interactively
    
    Other:
      completion  Generate the autocompletion script for the specified shell
      help        Help about any command
    
    Common flags:
        -q, --quiet          mute info; warnings and errors still print
      -v, --verbose        show each step; also PF_CLI_VERBOSE=1
      --offline            refuse network; use cache and embedded data
    
    Flags:
          --colors string        colour output: auto|always|never; also PF_CLI_NO_COLOR=1 (default "auto")
          --fail-on string       abort includes at error|warning (default "error")
      -h, --help                 help for pf-cli
          --ignore-user-config   skip $XDG_CONFIG_HOME/projectfile/cli.* loading
          --offline              refuse network; use cache and embedded data
      -q, --quiet                mute info; warnings and errors still print
          --sorted               write YAML keys in sorted order
          --timeout duration     per-attempt network timeout (default 10s)
      -v, --verbose              show each step; also PF_CLI_VERBOSE=1
      -V, --version              print the version
    
    Documentation:
      https://github.com/projectfile-org/cli/tree/main/docs
    
    Report a bug:
      https://github.com/projectfile-org/cli/issues
    
    Use "pf-cli [command] --help" for more information about a command.
    

    Examples and every command’s help are in Usage.

    Verify

    Check that what you downloaded is what this project published.

    Container image

    The signature proves this project’s CI built and pushed the image; the attestation carries its software bill of materials.

    COSIGN_KEY=https://kiota.ch/damian-buho/metadata/raw/branch/main/keys/ci-cosign-key.pub
    cosign verify --key "$COSIGN_KEY" --insecure-ignore-tlog=true docker.io/damianbuho/projectfile-cli:v3.4.2
    cosign verify --key "$COSIGN_KEY" --insecure-ignore-tlog=true kiota.ch/projectfile/cli:v3.4.2
    cosign verify-attestation --key "$COSIGN_KEY" --insecure-ignore-tlog=true --type cyclonedx docker.io/damianbuho/projectfile-cli:v3.4.2
    cosign verify-attestation --key "$COSIGN_KEY" --insecure-ignore-tlog=true --type cyclonedx kiota.ch/projectfile/cli:v3.4.2
    

    Prebuilt binary

    The signature proves the binary is the one the maintainer’s release key signed.

    gpg --keyserver hkps://keys.openpgp.org --recv-keys 8F89CBF7C8D51F8BEC7533C00925F8F79EBD3257
    curl --fail --location --output pf-cli.asc https://kiota.ch/projectfile/cli/releases/download/v3.4.2/pf-cli-$(uname -s | tr A-Z a-z)-$(uname -m).asc
    gpg --verify pf-cli.asc ~/.local/bin/pf-cli
    
    # every downloaded asset at once
    gpg --verify pf-cli-SHA256SUMS.asc pf-cli-SHA256SUMS
    sha256sum --check --ignore-missing pf-cli-SHA256SUMS
    

    Download via BitTorrent

    Fetch this release over BitTorrent with a magnet link, or with the attached .torrent file:

    Full changes: https://kiota.ch/projectfile/cli/compare/3.1.1...v3.4.2

    Downloads
  • v3.4.1 0e5f78e697

    v3.4.1
    All checks were successful
    published / fetched (push) Successful in 0s
    published / release-tag (push) Successful in 2s
    published / schema-fetched (push) Successful in 2s
    published / projectfile-is-valid (push) Successful in 12s
    published / source-is-compliant (push) Successful in 13s
    published / source-is-secure (push) Successful in 17s
    published / gpg-is-ready (push) Successful in 5s
    published / signing-is-ready (push) Successful in 6s
    published / source-is-tested (push) Successful in 5s
    published / projectfile-is-ok (push) Successful in 8s
    published / documentation-passes-lint (push) Successful in 1m10s
    published / documentation-is-ok (push) Successful in 0s
    published / source-passes-lint (push) Successful in 1m1s
    published / source-is-ok (push) Successful in 0s
    published / inputs-are-ok (push) Successful in 0s
    published / binaries-are-built (amd64, linux) (push) Successful in 8s
    published / binaries-are-built (amd64, darwin) (push) Successful in 8s
    published / binaries-are-built (arm64, linux) (push) Successful in 7s
    published / binaries-are-built (arm64, darwin) (push) Successful in 8s
    published / binaries-are-built (riscv64, linux) (push) Successful in 7s
    published / gsa (amd64, darwin) (push) Successful in 6s
    published / gsa (arm64, darwin) (push) Successful in 6s
    published / gsa (arm64, linux) (push) Successful in 4s
    published / gsa (amd64, linux) (push) Successful in 7s
    published / gsa (riscv64, linux) (push) Successful in 6s
    published / binaries-are-ok (push) Successful in 0s
    published / binaries-are-signed (push) Successful in 10s
    published / binaries-are-ready (push) Successful in 0s
    published / binaries-are-torrented (push) Successful in 16s
    published / image-is-built (amd64) (push) Successful in 59s
    published / secrets-ready (push) Successful in 0s
    published / binaries-torrent-is-verified (push) Successful in 4s
    published / images-are-ok (push) Successful in 0s
    published / container-is-ok (push) Successful in 0s
    published / container-ready-to-test (push) Successful in 0s
    published / image-has-sbom (amd64) (push) Successful in 7s
    published / container-is-diagnosed (push) Successful in 0s
    published / image-is-secure (amd64) (push) Successful in 10s
    published / container-is-verified (amd64) (push) Successful in 1m36s
    published / image-is-ready (push) Successful in 0s
    published / artifacts-are-ok (push) Successful in 0s
    published / ready-to-publish (push) Successful in 0s
    published / publish-image (kiota) (push) Successful in 10s
    published / publish-image (dockerhub) (push) Successful in 37s
    published / image-is-signed (push) Successful in 0s
    published / release-is-published (push) Successful in 6s
    published / release-notes-are-published (push) Successful in 3s
    published / go-install-is-ok (push) Successful in 35s
    published / published (push) Successful in 0s
    Stable

    damian-buho released this 2026-10-18 00:00:04 +00:00 | 41 commits to main since this release

    Signed by damian-buho
    GPG key ID: 87B15EAD49FD22AB

    1 commit, 1 contributor, 1 hour since v3.4.0.

    Installation

    Container image

    Pull the published container image:

    Pull from DockerHub — linux/amd64

    docker pull damianbuho/projectfile-cli:v3.4.1
    alias pf-cli='docker run --rm --user "$(id -u):$(id -g)" --group-add 0 --volume "$PWD:/app/ws" --workdir /app/ws damianbuho/projectfile-cli:v3.4.1 pf-cli'
    

    If the registries above are unreachable, pull from the origin instead:

    Pull from Kiota — linux/amd64

    docker pull kiota.ch/projectfile/cli:v3.4.1
    alias pf-cli='docker run --rm --user "$(id -u):$(id -g)" --group-add 0 --volume "$PWD:/app/ws" --workdir /app/ws kiota.ch/projectfile/cli:v3.4.1 pf-cli'
    

    Then run it as if it were installed — the alias runs every example as written against the current directory:

    pf-cli --help
    

    Go toolchain

    Install with the Go toolchain:

    go install projectfile.org/projectfile/cli/v3/cmd/pf-cli@v3.4.1
    

    Then run pf-cli --help.

    Prebuilt binary

    Download the prebuilt binary for your platform from this release:

    mkdir -p ~/.local/bin
    curl --fail --location --output ~/.local/bin/pf-cli https://kiota.ch/projectfile/cli/releases/download/v3.4.1/pf-cli-$(uname -s | tr A-Z a-z)-$(uname -m)
    chmod +x ~/.local/bin/pf-cli
    ~/.local/bin/pf-cli --help
    

    Published for: linux/amd64, linux/arm64, linux/riscv64, darwin/amd64, darwin/arm64

    To uninstall, delete that one file: rm ~/.local/bin/pf-cli.

    Usage

    pf-cli

    $ pf-cli --help
    pf-cli is the command-line frontend for the projectfile: it reads, writes and
    validates fields, resolves remote includes, and generates derived artifacts. It
    embeds the v1 JSON Schema for offline validation and is the canonical tool for
    editing projectfiles locally and in CI.
    
    File and forge sync (bridge, forge, scan): use pf-bridge.
    
    Usage:
      pf-cli [command]
    
    Examples:
      pf-cli init --namespace org.example --name demo
      pf-cli get identity.name
      pf-cli set license.spdx MIT
      pf-cli add keywords rust wasm
      pf-cli del keywords[0]
      pf-cli validate
      pf-cli convert yaml toml
      pf-cli optimize
      pf-cli cache status
    
    Read:
      get         Read one or more projectfile fields
    
    Write:
      add         Append items to a projectfile list
      del         Remove a field, list item, or map entry from projectfile
      set         Write a value into a projectfile field
    
    Validate:
      validate    Validate a projectfile against the v1 JSON Schema
    
    Maintain:
      cache       Manage pf-cli’s local cache for offline use
      convert     Convert a projectfile between encodings (toml/yaml/json)
      includes    Manage the includes list
      init        Scaffold a new projectfile document
      optimize    Remove local fields that duplicate include values
      setup       Edit your per-user configuration interactively
    
    Other:
      completion  Generate the autocompletion script for the specified shell
      help        Help about any command
    
    Common flags:
        -q, --quiet          mute info; warnings and errors still print
      -v, --verbose        show each step; also PF_CLI_VERBOSE=1
      --offline            refuse network; use cache and embedded data
    
    Flags:
          --colors string        colour output: auto|always|never; also PF_CLI_NO_COLOR=1 (default "auto")
          --fail-on string       abort includes at error|warning (default "error")
      -h, --help                 help for pf-cli
          --ignore-user-config   skip $XDG_CONFIG_HOME/projectfile/cli.* loading
          --offline              refuse network; use cache and embedded data
      -q, --quiet                mute info; warnings and errors still print
          --sorted               write YAML keys in sorted order
          --timeout duration     per-attempt network timeout (default 10s)
      -v, --verbose              show each step; also PF_CLI_VERBOSE=1
      -V, --version              print the version
    
    Documentation:
      https://github.com/projectfile-org/cli/tree/main/docs
    
    Report a bug:
      https://github.com/projectfile-org/cli/issues
    
    Use "pf-cli [command] --help" for more information about a command.
    

    Examples and every command’s help are in Usage.

    Verify

    Check that what you downloaded is what this project published.

    Container image

    The signature proves this project’s CI built and pushed the image; the attestation carries its software bill of materials.

    COSIGN_KEY=https://kiota.ch/damian-buho/metadata/raw/branch/main/keys/ci-cosign-key.pub
    cosign verify --key "$COSIGN_KEY" --insecure-ignore-tlog=true docker.io/damianbuho/projectfile-cli:v3.4.1
    cosign verify --key "$COSIGN_KEY" --insecure-ignore-tlog=true kiota.ch/projectfile/cli:v3.4.1
    cosign verify-attestation --key "$COSIGN_KEY" --insecure-ignore-tlog=true --type cyclonedx docker.io/damianbuho/projectfile-cli:v3.4.1
    cosign verify-attestation --key "$COSIGN_KEY" --insecure-ignore-tlog=true --type cyclonedx kiota.ch/projectfile/cli:v3.4.1
    

    Prebuilt binary

    The signature proves the binary is the one the maintainer’s release key signed.

    gpg --keyserver hkps://keys.openpgp.org --recv-keys 8F89CBF7C8D51F8BEC7533C00925F8F79EBD3257
    curl --fail --location --output pf-cli.asc https://kiota.ch/projectfile/cli/releases/download/v3.4.1/pf-cli-$(uname -s | tr A-Z a-z)-$(uname -m).asc
    gpg --verify pf-cli.asc ~/.local/bin/pf-cli
    
    # every downloaded asset at once
    gpg --verify pf-cli-SHA256SUMS.asc pf-cli-SHA256SUMS
    sha256sum --check --ignore-missing pf-cli-SHA256SUMS
    

    Download via BitTorrent

    Fetch this release over BitTorrent with a magnet link, or with the attached .torrent file:

    Full changes: https://kiota.ch/projectfile/cli/compare/3.1.1...v3.4.1

    Downloads
  • v3.3.0 e7344ca9b9

    v3.3.0
    All checks were successful
    published / tag-is-on-stable (push) Has been skipped
    published / fetched (push) Successful in 0s
    published / schema-fetched (push) Successful in 3s
    published / projectfile-is-valid (push) Successful in 4s
    published / gpg-is-ready (push) Successful in 5s
    published / signing-is-ready (push) Successful in 6s
    published / source-is-compliant (push) Successful in 8s
    published / source-is-tested (push) Successful in 5s
    published / projectfile-is-ok (push) Successful in 4s
    published / source-is-secure (push) Successful in 12s
    published / source-passes-lint (push) Successful in 40s
    published / source-is-ok (push) Successful in 0s
    published / documentation-passes-lint (push) Successful in 50s
    published / documentation-is-ok (push) Successful in 0s
    published / inputs-are-ok (push) Successful in 0s
    published / binaries-are-built (arm64, linux) (push) Successful in 5s
    published / binaries-are-built (amd64, linux) (push) Successful in 5s
    published / binaries-are-built (riscv64, linux) (push) Successful in 5s
    published / binaries-are-built (arm64, darwin) (push) Successful in 5s
    published / binaries-are-built (amd64, darwin) (push) Successful in 5s
    published / gsa (arm64, linux) (push) Successful in 5s
    published / gsa (amd64, darwin) (push) Successful in 5s
    published / gsa (amd64, linux) (push) Successful in 5s
    published / gsa (arm64, darwin) (push) Successful in 5s
    published / gsa (riscv64, linux) (push) Successful in 5s
    published / binaries-are-ok (push) Successful in 0s
    published / binaries-are-signed (push) Has been skipped
    published / binaries-are-torrented (push) Has been skipped
    published / binaries-torrent-is-verified (push) Has been skipped
    published / image-is-built (amd64) (push) Successful in 33s
    published / image-has-sbom (amd64) (push) Has been skipped
    published / secrets-ready (push) Successful in 0s
    published / images-are-ok (push) Successful in 0s
    published / container-is-ok (push) Successful in 0s
    published / container-ready-to-test (push) Successful in 0s
    published / image-is-secure (amd64) (push) Successful in 7s
    published / container-is-diagnosed (push) Successful in 0s
    published / container-is-verified (amd64) (push) Successful in 1m4s
    published / image-is-ready (push) Successful in 0s
    published / artifacts-are-ok (push) Successful in 0s
    published / ready-to-publish (push) Successful in 0s
    published / release-is-dispatched (push) Successful in 3s
    published / publish-image (dockerhub) (push) Successful in 4s
    published / publish-image (kiota) (push) Successful in 5s
    published / image-is-signed (push) Has been skipped
    published / release-is-published (push) Has been skipped
    published / go-install-is-ok (push) Has been skipped
    published / release-notes-are-published (push) Has been skipped
    published / published (push) Successful in 0s
    Stable

    damian-buho released this 2026-10-16 19:27:25 +00:00 | 72 commits to dev since this release

    Signed by damian-buho
    GPG key ID: 87B15EAD49FD22AB

    11 commits, 1 contributor, 19 hours since v3.2.1.

    Features

    • validate: reject an artifact exclude cell outside the declared platforms (51d7887)

    Installation

    Container image

    Pull the published container image:

    Pull from DockerHub — linux/amd64

    docker pull damianbuho/projectfile-cli:v3.3.0
    alias pf-cli='docker run --rm --user "$(id -u):$(id -g)" --group-add 0 --volume "$PWD:/app/ws" --workdir /app/ws damianbuho/projectfile-cli:v3.3.0 pf-cli'
    

    If the registries above are unreachable, pull from the origin instead:

    Pull from Kiota — linux/amd64

    docker pull kiota.ch/projectfile/cli:v3.3.0
    alias pf-cli='docker run --rm --user "$(id -u):$(id -g)" --group-add 0 --volume "$PWD:/app/ws" --workdir /app/ws kiota.ch/projectfile/cli:v3.3.0 pf-cli'
    

    Then run it as if it were installed — the alias runs every example as written against the current directory:

    pf-cli --help
    

    Prebuilt binary

    Download the prebuilt binary for your platform from this release:

    mkdir -p ~/.local/bin
    curl --fail --location --output ~/.local/bin/pf-cli https://kiota.ch/projectfile/cli/releases/download/v3.3.0/pf-cli-$(uname -s | tr A-Z a-z)-$(uname -m)
    chmod +x ~/.local/bin/pf-cli
    ~/.local/bin/pf-cli --help
    

    Published for: linux/amd64, linux/arm64, linux/riscv64, darwin/amd64, darwin/arm64

    To uninstall, delete that one file: rm ~/.local/bin/pf-cli.

    Usage

    pf-cli

    $ pf-cli --help
    pf-cli is the command-line frontend for the projectfile: it reads, writes and
    validates fields, resolves remote includes, and generates derived artifacts. It
    embeds the v1 JSON Schema for offline validation and is the canonical tool for
    editing projectfiles locally and in CI.
    
    File and forge sync (bridge, forge, scan): use pf-bridge.
    
    Usage:
      pf-cli [command]
    
    Examples:
      pf-cli init --namespace org.example --name demo
      pf-cli get identity.name
      pf-cli set license.spdx MIT
      pf-cli add keywords rust wasm
      pf-cli del keywords[0]
      pf-cli validate
      pf-cli convert yaml toml
      pf-cli optimize
      pf-cli cache status
    
    Read:
      get         Read one or more projectfile fields
    
    Write:
      add         Append items to a projectfile list
      del         Remove a field, list item, or map entry from projectfile
      set         Write a value into a projectfile field
    
    Validate:
      validate    Validate a projectfile against the v1 JSON Schema
    
    Maintain:
      cache       Manage pf-cli’s local cache for offline use
      convert     Convert a projectfile between encodings (toml/yaml/json)
      includes    Manage the includes list
      init        Scaffold a new projectfile document
      optimize    Remove local fields that duplicate include values
      setup       Edit your per-user configuration interactively
    
    Other:
      completion  Generate the autocompletion script for the specified shell
      help        Help about any command
    
    Common flags:
        -q, --quiet          mute info; warnings and errors still print
      -v, --verbose        show each step; also PF_CLI_VERBOSE=1
      --offline            refuse network; use cache and embedded data
    
    Flags:
          --colors string        colour output: auto|always|never; also PF_CLI_NO_COLOR=1 (default "auto")
          --fail-on string       abort includes at error|warning (default "error")
      -h, --help                 help for pf-cli
          --ignore-user-config   skip $XDG_CONFIG_HOME/projectfile/cli.* loading
          --offline              refuse network; use cache and embedded data
      -q, --quiet                mute info; warnings and errors still print
          --sorted               write YAML keys in sorted order
          --timeout duration     per-attempt network timeout (default 10s)
      -v, --verbose              show each step; also PF_CLI_VERBOSE=1
      -V, --version              print the version
    
    Documentation:
      https://github.com/projectfile-org/cli/tree/main/docs
    
    Report a bug:
      https://github.com/projectfile-org/cli/issues
    
    Use "pf-cli [command] --help" for more information about a command.
    

    Examples and every command’s help are in Usage.

    Verify

    Check that what you downloaded is what this project published.

    Container image

    The signature proves this project’s CI built and pushed the image; the attestation carries its software bill of materials.

    COSIGN_KEY=https://kiota.ch/damian-buho/metadata/raw/branch/main/keys/ci-cosign-key.pub
    cosign verify --key "$COSIGN_KEY" --insecure-ignore-tlog=true docker.io/damianbuho/projectfile-cli:v3.3.0
    cosign verify --key "$COSIGN_KEY" --insecure-ignore-tlog=true kiota.ch/projectfile/cli:v3.3.0
    cosign verify-attestation --key "$COSIGN_KEY" --insecure-ignore-tlog=true --type cyclonedx docker.io/damianbuho/projectfile-cli:v3.3.0
    cosign verify-attestation --key "$COSIGN_KEY" --insecure-ignore-tlog=true --type cyclonedx kiota.ch/projectfile/cli:v3.3.0
    

    Prebuilt binary

    The signature proves the binary is the one the maintainer’s release key signed.

    gpg --keyserver hkps://keys.openpgp.org --recv-keys 8F89CBF7C8D51F8BEC7533C00925F8F79EBD3257
    curl --fail --location --output pf-cli.asc https://kiota.ch/projectfile/cli/releases/download/v3.3.0/pf-cli-$(uname -s | tr A-Z a-z)-$(uname -m).asc
    gpg --verify pf-cli.asc pf-cli
    
    # every downloaded asset at once
    gpg --verify pf-cli-SHA256SUMS.asc pf-cli-SHA256SUMS
    sha256sum --check --ignore-missing pf-cli-SHA256SUMS
    

    Download via BitTorrent

    Fetch this release over BitTorrent with a magnet link, or with the attached .torrent file:

    Full changes: https://kiota.ch/projectfile/cli/compare/3.1.1...v3.3.0

    Downloads
  • v3.2.1 ce09e6fcb3

    v3.2.1
    All checks were successful
    published / fetched (push) Successful in 0s
    published / schema-fetched (push) Successful in 2s
    published / gpg-is-ready (push) Successful in 7s
    published / projectfile-is-valid (push) Successful in 7s
    published / source-is-tested (push) Successful in 4s
    published / signing-is-ready (push) Successful in 8s
    published / source-is-compliant (push) Successful in 10s
    published / projectfile-is-ok (push) Successful in 7s
    published / source-is-secure (push) Successful in 14s
    published / source-passes-lint (push) Successful in 45s
    published / documentation-passes-lint (push) Successful in 53s
    published / documentation-is-ok (push) Successful in 0s
    published / source-is-ok (push) Successful in 0s
    published / inputs-are-ok (push) Successful in 0s
    published / binaries-are-built (amd64, darwin) (push) Successful in 6s
    published / binaries-are-built (arm64, linux) (push) Successful in 7s
    published / binaries-are-built (riscv64, linux) (push) Successful in 7s
    published / binaries-are-built (arm64, darwin) (push) Successful in 7s
    published / binaries-are-built (amd64, linux) (push) Successful in 7s
    published / gsa (riscv64, linux) (push) Successful in 7s
    published / gsa (amd64, darwin) (push) Successful in 9s
    published / gsa (arm64, darwin) (push) Successful in 9s
    published / gsa (arm64, linux) (push) Successful in 9s
    published / gsa (amd64, linux) (push) Successful in 9s
    published / binaries-are-ok (push) Successful in 0s
    published / binaries-are-signed (push) Successful in 5s
    published / binaries-are-torrented (push) Successful in 9s
    published / image-is-built (amd64) (push) Successful in 43s
    published / secrets-ready (push) Successful in 0s
    published / images-are-ok (push) Successful in 0s
    published / container-is-ok (push) Successful in 0s
    published / container-ready-to-test (push) Successful in 0s
    published / image-has-sbom (amd64) (push) Successful in 6s
    published / container-is-diagnosed (push) Successful in 0s
    published / image-is-secure (amd64) (push) Successful in 8s
    published / container-is-verified (amd64) (push) Successful in 1m16s
    published / image-is-ready (push) Successful in 0s
    published / artifacts-are-ok (push) Successful in 0s
    published / ready-to-publish (push) Successful in 0s
    published / publish-image (push) Successful in 0s
    published / image-is-signed (push) Successful in 0s
    published / image-is-attested (kiota) (push) Successful in 12s
    published / image-is-attested (dockerhub) (push) Successful in 44s
    published / release-is-published (push) Successful in 4s
    published / release-notes-are-published (push) Successful in 3s
    published / published (push) Successful in 1s
    Stable

    damian-buho released this 2026-10-15 23:26:33 +00:00 | 84 commits to dev since this release

    Signed by damian-buho
    GPG key ID: 87B15EAD49FD22AB

    3 commits, 1 contributor, 4 hours since v3.2.0.

    Installation

    Container image

    Pull the published container image:

    Pull from DockerHub — linux/amd64

    docker pull damianbuho/projectfile-cli:v3.2.1
    alias pf-cli='docker run --rm --user "$(id -u):$(id -g)" --group-add 0 --volume "$PWD:/app/ws" --workdir /app/ws damianbuho/projectfile-cli:v3.2.1 pf-cli'
    

    If the registries above are unreachable, pull from the origin instead:

    Pull from Kiota — linux/amd64

    docker pull kiota.ch/projectfile/cli:v3.2.1
    alias pf-cli='docker run --rm --user "$(id -u):$(id -g)" --group-add 0 --volume "$PWD:/app/ws" --workdir /app/ws kiota.ch/projectfile/cli:v3.2.1 pf-cli'
    

    Then run it as if it were installed — the alias runs every example as written against the current directory:

    pf-cli --help
    

    Prebuilt binary

    Download the prebuilt binary for your platform from this release:

    mkdir -p ~/.local/bin
    curl --fail --location --output ~/.local/bin/pf-cli https://kiota.ch/projectfile/cli/releases/download/v3.2.1/pf-cli-$(uname -s | tr A-Z a-z)-$(uname -m)
    chmod +x ~/.local/bin/pf-cli
    ~/.local/bin/pf-cli --help
    

    Published for: linux/amd64, linux/arm64, linux/riscv64, darwin/amd64, darwin/arm64

    Usage

    pf-cli

    $ pf-cli --help
    pf-cli is the command-line frontend for the projectfile: it reads, writes and
    validates fields, resolves remote includes, and generates derived artifacts. It
    embeds the v1 JSON Schema for offline validation and is the canonical tool for
    editing projectfiles locally and in CI.
    
    File and forge sync (bridge, forge, scan): use pf-bridge.
    
    Usage:
      pf-cli [command]
    
    Examples:
      pf-cli init --namespace org.example --name demo
      pf-cli get identity.name
      pf-cli set license.spdx MIT
      pf-cli add keywords rust wasm
      pf-cli del keywords[0]
      pf-cli validate
      pf-cli convert yaml toml
      pf-cli optimize
      pf-cli cache status
    
    Read:
      get         Read one or more projectfile fields
    
    Write:
      add         Append items to a projectfile list
      del         Remove a field, list item, or map entry from projectfile
      set         Write a value into a projectfile field
    
    Validate:
      validate    Validate a projectfile against the v1 JSON Schema
    
    Maintain:
      cache       Manage pf-cli’s local cache for offline use
      convert     Convert a projectfile between encodings (toml/yaml/json)
      includes    Manage the includes list
      init        Scaffold a new projectfile document
      optimize    Remove local fields that duplicate include values
      setup       Edit your per-user configuration interactively
    
    Other:
      completion  Generate the autocompletion script for the specified shell
      help        Help about any command
    
    Common flags:
        -q, --quiet          mute info; warnings and errors still print
      -v, --verbose        show each step; also PF_CLI_VERBOSE=1
      --offline            refuse network; use cache and embedded data
    
    Flags:
          --colors string        colour output: auto|always|never; also PF_CLI_NO_COLOR=1 (default "auto")
          --fail-on string       abort includes at error|warning (default "error")
      -h, --help                 help for pf-cli
          --ignore-user-config   skip $XDG_CONFIG_HOME/projectfile/cli.* loading
          --offline              refuse network; use cache and embedded data
      -q, --quiet                mute info; warnings and errors still print
          --sorted               write YAML keys in sorted order
          --timeout duration     per-attempt network timeout (default 10s)
      -v, --verbose              show each step; also PF_CLI_VERBOSE=1
      -V, --version              print the version
    
    Documentation:
      https://github.com/projectfile-org/cli/tree/main/docs
    
    Report a bug:
      https://github.com/projectfile-org/cli/issues
    
    Use "pf-cli [command] --help" for more information about a command.
    

    Examples and every command’s help are in Usage.

    Verify

    Check that what you downloaded is what this project published.

    Container image

    The signature proves this project’s CI built and pushed the image; the attestation carries its software bill of materials.

    COSIGN_KEY=https://kiota.ch/damian-buho/metadata/raw/branch/main/keys/ci-cosign-key.pub
    cosign verify --key "$COSIGN_KEY" --insecure-ignore-tlog=true docker.io/damianbuho/projectfile-cli:v3.2.1
    cosign verify --key "$COSIGN_KEY" --insecure-ignore-tlog=true kiota.ch/projectfile/cli:v3.2.1
    cosign verify-attestation --key "$COSIGN_KEY" --insecure-ignore-tlog=true --type cyclonedx docker.io/damianbuho/projectfile-cli:v3.2.1
    cosign verify-attestation --key "$COSIGN_KEY" --insecure-ignore-tlog=true --type cyclonedx kiota.ch/projectfile/cli:v3.2.1
    

    Prebuilt binary

    The signature proves the binary is the one the maintainer’s release key signed.

    gpg --keyserver hkps://keys.openpgp.org --recv-keys 8F89CBF7C8D51F8BEC7533C00925F8F79EBD3257
    curl --fail --location --output pf-cli.asc https://kiota.ch/projectfile/cli/releases/download/v3.2.1/pf-cli-$(uname -s | tr A-Z a-z)-$(uname -m).asc
    gpg --verify pf-cli.asc pf-cli
    

    Download via BitTorrent

    Fetch this release over BitTorrent with a magnet link, or with the attached .torrent file:

    Full changes: https://kiota.ch/projectfile/cli/compare/3.1.1...v3.2.1

    Downloads
  • v3.2.0 683833fd0b

    v3.2.0
    All checks were successful
    published / fetched (push) Successful in 0s
    published / schema-fetched (push) Successful in 2s
    published / gpg-is-ready (push) Successful in 4s
    published / projectfile-is-valid (push) Successful in 5s
    published / signing-is-ready (push) Successful in 5s
    published / source-is-compliant (push) Successful in 7s
    published / source-is-tested (push) Successful in 5s
    published / projectfile-is-ok (push) Successful in 4s
    published / source-is-secure (push) Successful in 11s
    published / source-passes-lint (push) Successful in 40s
    published / source-is-ok (push) Successful in 0s
    published / documentation-passes-lint (push) Successful in 49s
    published / documentation-is-ok (push) Successful in 0s
    published / inputs-are-ok (push) Successful in 0s
    published / binaries-are-built (riscv64, linux) (push) Successful in 5s
    published / binaries-are-built (amd64, darwin) (push) Successful in 6s
    published / binaries-are-built (amd64, linux) (push) Successful in 6s
    published / binaries-are-built (arm64, linux) (push) Successful in 6s
    published / binaries-are-built (arm64, darwin) (push) Successful in 6s
    published / gsa (riscv64, linux) (push) Successful in 4s
    published / gsa (arm64, linux) (push) Successful in 4s
    published / gsa (arm64, darwin) (push) Successful in 4s
    published / gsa (amd64, linux) (push) Successful in 4s
    published / gsa (amd64, darwin) (push) Successful in 4s
    published / binaries-are-ok (push) Successful in 0s
    published / binaries-are-signed (push) Successful in 6s
    published / binaries-are-torrented (push) Successful in 9s
    published / image-is-built (amd64) (push) Successful in 38s
    published / secrets-ready (push) Successful in 0s
    published / images-are-ok (push) Successful in 0s
    published / container-is-ok (push) Successful in 0s
    published / image-has-sbom (amd64) (push) Successful in 6s
    published / container-ready-to-test (push) Successful in 0s
    published / container-is-diagnosed (push) Successful in 0s
    published / image-is-secure (amd64) (push) Successful in 8s
    published / container-is-verified (amd64) (push) Successful in 1m2s
    published / image-is-ready (push) Successful in 0s
    published / artifacts-are-ok (push) Successful in 0s
    published / ready-to-publish (push) Successful in 0s
    published / publish-image (push) Successful in 0s
    published / image-is-signed (push) Successful in 0s
    published / image-is-attested (kiota) (push) Successful in 16s
    published / image-is-attested (dockerhub) (push) Successful in 37s
    published / release-is-published (push) Successful in 4s
    published / release-notes-are-published (push) Successful in 3s
    published / published (push) Successful in 0s
    Stable

    damian-buho released this 2026-10-15 19:13:27 +00:00 | 88 commits to dev since this release

    Signed by damian-buho
    GPG key ID: 87B15EAD49FD22AB

    410 commits, 1 contributor.

    Upgrade notes

    • get: read composed values with --scope, drop the sink subcommand (1e826ec)

      removes pf-cli sink and the image.{basename,namespace,name}
      derived get addresses.

    • cli: drop the rm and v aliases (0e6f048)

      pf-cli rm and pf-cli v are unknown commands; use del/delete and validate/lint.

    • cli: results on stdout, one colour decision and a network timeout (43b16f1)

      result lines move from stderr to stdout.

    • cli: rename --path-file to --file (fd19833)

    Features

    • sink: add pf-cli sink ref and pf-cli sink list (9b6f060)
    • sink: compose many references in one call with sink refs (7f0315b)
    • get: bind a scope to one --path entry so a batch reads many subjects (47847eb)
    • i18n: translate feature fragments to Spanish and Ukrainian (24be133)
    • i18n: localize identity summary and description (ae663cf)
    • ci: seed released binaries to BitTorrent (a5607da)
    • ci: sign released binaries and published images (b0e5a88)
    • ci: publish one torrent for the whole release (5dfac29)
    • cache: expose cache status, warm --force, purge [url], refresh (06c359d)
    • cli: support yaml and toml output in get command (72e21ae)
    • forge: declare Codeberg and GitHub mirrors and enable GitHub CI (03801ea)
    • ci: build linux/amd64, arm64 and riscv64 images (6cd41ed)
    • publish: push to Docker Hub (f2dc54a)
    • cli: colorize help headers and command names (d761b7e)
    • cli: add pf-cli init with bridge delegation and basic fallback (776dbaf)
    • get: add --expand to fill document references in place (8f1c86f)
    • cli: add -V and derive a version for unstamped builds (8ba0478)
    • pf-cli optimize prunes redundant includes (b388da1)
    • cli: pin includes to their sha256 (043d80b)
    • get: suggest the nearest sibling on a missing field (3429384)
    • cli: document and enforce a distinct exit code per failure class (fd8b852)
    • help: lead with examples, group commands and link the docs (1d28fc3)
    • get: propose the intended address with --suggest (d5ab94d)
    • validate: embed the fragment schema and check an included file with --fragment (b7ae0cd)
    • module: move the module to projectfile.org/projectfile/cli/v3 (3ca652e)
    • release: tag releases with a v prefix (49b6732)

    Bug fixes

    • fetch-schema: clear the inherited Git environment before touching the clone (1dcffb6)
    • dockerfile: key apt cache mounts by arch, not just series (5932f39)
    • go: bump toolchain directive to 1.26.6 (c5b8a75)
    • deps: bump projectfile/core to v2.9.4 (4733607)
    • container: declare the full b19 build-arg surface (cdc86b3)
    • ci: add gsa node to enforce build-binaries before auto-gsa (5ba498d)
    • update .makefile/library submodule (disable check-outdated-go memoisation) (eb0d330)
    • ci: opt into the binary release pipeline explicitly (416f831)
    • deps: bump kiota.ch/projectfile/core/v2 to v2.9.7 (c514443)
    • build-binaries: stop writing a duplicate unsuffixed dist/pf-cli (3ab3fcd)
    • ci: gate the cosign steps on the publish cell (a19c44c)
    • bump core to 2.10.3 (a12e09e)
    • forge: declare only existing forges (69c5082)
    • deps: bump projectfile/core to v2.11.1 (ed98dbe)
    • deps: bump projectfile/core to v2.11.2 (5d7e4a7)
    • deps: bump projectfile/core to v2.12.0 (7bb5998)
    • deps: bump projectfile/core to v2.12.3 (feac89a)
    • cli: drop non-existent sink ref from help (d2185ed)
    • deps: bump projectfile/core to v2.13.0 (4c40546)
    • cli: reject an empty --fail-on value (620b3a0)
    • get: name a missing field and the command to inspect it (4d7f36a)
    • set: refuse a value the field cannot hold instead of deleting it (4e8fd2d)
    • validate: name a duplicate include as listed twice (ce4affe)
    • deps: update projectfile core to v2.15.0 (f623b33)
    • goconst (80f3790)
    • deps: bump charm.land/bubbletea/v2 to v2.1.0 (9a890c3)
    • container: restore M6E_VERSION in final image (f31cedb)
    • deps: bump projectfile/core to v2.16.0 (e263b7d)
    • validate: reject TOML documents missing spec_version (d9962b7)
    • validate: name the repositories origin rule in failures (bc2c343)
    • cli: rewrite argument and flag errors in the tool’s voice (41f8755)
    • cli: reserve -f for --force and drop it from --path-file and --format (b7efc12)
    • cli: keep a bare set value as the text the user typed (7cc954a)
    • cli: keep a folded block scalar folded across a write (5bf8f2b)
    • deps: bump core to 2.17.0 (ec46d2b)
    • deps: bump core to 2.18.0 (e4c4d15)
    • deps: bump projectfile/core to v2.18.1 for retried network fetches (f0a78e0)
    • security: suppress CVE-2026-92392 in the Ubuntu cURL (2c38874)
    • security: generate the scanner ignore files from the projectfile (375d124)
    • ci: sign every binary cell in one job (2e16bcf)
    • build: fetch public Go modules through proxy.golang.org (72c1ce7)

    Performance

    • container: declare M6E_VERSION next to the user stage (c0de4fe)

    Reverts

    • undo local submodule edit (fix belongs in m6e/library) (b8448fb)

    Dependencies

    • 9 dependency updates

    Installation

    Container image

    Pull the published container image:

    Pull from DockerHub — linux/amd64

    docker pull damianbuho/projectfile-cli:v3.2.0
    alias pf-cli='docker run --rm --user "$(id -u):$(id -g)" --group-add 0 --volume "$PWD:/app/ws" --workdir /app/ws damianbuho/projectfile-cli:v3.2.0 pf-cli'
    

    If the registries above are unreachable, pull from the origin instead:

    Pull from Kiota — linux/amd64

    docker pull kiota.ch/projectfile/cli:v3.2.0
    alias pf-cli='docker run --rm --user "$(id -u):$(id -g)" --group-add 0 --volume "$PWD:/app/ws" --workdir /app/ws kiota.ch/projectfile/cli:v3.2.0 pf-cli'
    

    Then run it as if it were installed — the alias runs every example as written against the current directory:

    pf-cli --help
    

    Prebuilt binary

    Download the prebuilt binary for your platform from this release:

    mkdir -p ~/.local/bin
    curl --fail --location --output ~/.local/bin/pf-cli https://kiota.ch/projectfile/cli/releases/download/v3.2.0/pf-cli-$(uname -s | tr A-Z a-z)-$(uname -m)
    chmod +x ~/.local/bin/pf-cli
    ~/.local/bin/pf-cli --help
    

    Published for: linux/amd64, linux/arm64, linux/riscv64, darwin/amd64, darwin/arm64

    Usage

    pf-cli

    $ pf-cli --help
    pf-cli is the command-line frontend for the projectfile: it reads, writes and
    validates fields, resolves remote includes, and generates derived artifacts. It
    embeds the v1 JSON Schema for offline validation and is the canonical tool for
    editing projectfiles locally and in CI.
    
    File and forge sync (bridge, forge, scan): use pf-bridge.
    
    Usage:
      pf-cli [command]
    
    Examples:
      pf-cli init --namespace org.example --name demo
      pf-cli get identity.name
      pf-cli set license.spdx MIT
      pf-cli add keywords rust wasm
      pf-cli del keywords[0]
      pf-cli validate
      pf-cli convert yaml toml
      pf-cli optimize
      pf-cli cache status
    
    Read:
      get         Read one or more projectfile fields
    
    Write:
      add         Append items to a projectfile list
      del         Remove a field, list item, or map entry from projectfile
      set         Write a value into a projectfile field
    
    Validate:
      validate    Validate a projectfile against the v1 JSON Schema
    
    Maintain:
      cache       Manage pf-cli’s local cache for offline use
      convert     Convert a projectfile between encodings (toml/yaml/json)
      includes    Manage the includes list
      init        Scaffold a new projectfile document
      optimize    Remove local fields that duplicate include values
      setup       Edit your per-user configuration interactively
    
    Other:
      completion  Generate the autocompletion script for the specified shell
      help        Help about any command
    
    Common flags:
        -q, --quiet          mute info; warnings and errors still print
      -v, --verbose        show each step; also PF_CLI_VERBOSE=1
      --offline            refuse network; use cache and embedded data
    
    Flags:
          --colors string        colour output: auto|always|never; also PF_CLI_NO_COLOR=1 (default "auto")
          --fail-on string       abort includes at error|warning (default "error")
      -h, --help                 help for pf-cli
          --ignore-user-config   skip $XDG_CONFIG_HOME/projectfile/cli.* loading
          --offline              refuse network; use cache and embedded data
      -q, --quiet                mute info; warnings and errors still print
          --sorted               write YAML keys in sorted order
          --timeout duration     per-attempt network timeout (default 10s)
      -v, --verbose              show each step; also PF_CLI_VERBOSE=1
      -V, --version              print the version
    
    Documentation:
      https://github.com/projectfile-org/cli/tree/main/docs
    
    Report a bug:
      https://github.com/projectfile-org/cli/issues
    
    Use "pf-cli [command] --help" for more information about a command.
    

    Examples and every command’s help are in Usage.

    Verify

    Check that what you downloaded is what this project published.

    Container image

    The signature proves this project’s CI built and pushed the image; the attestation carries its software bill of materials.

    COSIGN_KEY=https://kiota.ch/damian-buho/metadata/raw/branch/main/keys/ci-cosign-key.pub
    cosign verify --key "$COSIGN_KEY" --insecure-ignore-tlog=true docker.io/damianbuho/projectfile-cli:v3.2.0
    cosign verify --key "$COSIGN_KEY" --insecure-ignore-tlog=true kiota.ch/projectfile/cli:v3.2.0
    cosign verify-attestation --key "$COSIGN_KEY" --insecure-ignore-tlog=true --type cyclonedx docker.io/damianbuho/projectfile-cli:v3.2.0
    cosign verify-attestation --key "$COSIGN_KEY" --insecure-ignore-tlog=true --type cyclonedx kiota.ch/projectfile/cli:v3.2.0
    

    Prebuilt binary

    The signature proves the binary is the one the maintainer’s release key signed.

    gpg --keyserver hkps://keys.openpgp.org --recv-keys 8F89CBF7C8D51F8BEC7533C00925F8F79EBD3257
    curl --fail --location --output pf-cli.asc https://kiota.ch/projectfile/cli/releases/download/v3.2.0/pf-cli-$(uname -s | tr A-Z a-z)-$(uname -m).asc
    gpg --verify pf-cli.asc pf-cli
    

    Download via BitTorrent

    Fetch this release over BitTorrent with a magnet link, or with the attached .torrent file:

    Full changes: https://kiota.ch/projectfile/cli/compare/3.1.1...v3.2.0

    Downloads
  • 3.1.1 64710a2114

    3.1.1
    All checks were successful
    published / fetched (push) Successful in 0s
    published / schema-fetched (push) Successful in 2s
    published / gpg-is-ready (push) Successful in 4s
    published / projectfile-is-valid (push) Successful in 5s
    published / signing-is-ready (push) Successful in 5s
    published / source-is-compliant (push) Successful in 7s
    published / source-is-tested (push) Successful in 4s
    published / projectfile-is-ok (push) Successful in 5s
    published / source-is-secure (push) Successful in 11s
    published / source-passes-lint (push) Successful in 45s
    published / source-is-ok (push) Successful in 0s
    published / documentation-passes-lint (push) Successful in 53s
    published / documentation-is-ok (push) Successful in 0s
    published / inputs-are-ok (push) Successful in 0s
    published / binaries-are-built (arm64, darwin) (push) Successful in 6s
    published / binaries-are-built (arm64, linux) (push) Successful in 6s
    published / binaries-are-built (amd64, darwin) (push) Successful in 6s
    published / binaries-are-built (amd64, linux) (push) Successful in 6s
    published / binaries-are-built (riscv64, linux) (push) Successful in 6s
    published / gsa (amd64, darwin) (push) Successful in 4s
    published / gsa (arm64, linux) (push) Successful in 4s
    published / gsa (amd64, linux) (push) Successful in 4s
    published / gsa (arm64, darwin) (push) Successful in 4s
    published / gsa (riscv64, linux) (push) Successful in 7s
    published / binaries-are-ok (push) Successful in 0s
    published / binaries-are-signed (push) Successful in 5s
    published / binaries-are-torrented (push) Successful in 9s
    published / image-is-built (amd64) (push) Successful in 40s
    published / secrets-ready (push) Successful in 0s
    published / images-are-ok (push) Successful in 0s
    published / container-is-ok (push) Successful in 0s
    published / container-ready-to-test (push) Successful in 0s
    published / image-has-sbom (amd64) (push) Successful in 6s
    published / container-is-diagnosed (push) Successful in 0s
    published / image-is-secure (amd64) (push) Successful in 8s
    published / container-is-verified (amd64) (push) Successful in 1m1s
    published / image-is-ready (push) Successful in 0s
    published / artifacts-are-ok (push) Successful in 0s
    published / ready-to-publish (push) Successful in 0s
    published / publish-image (push) Successful in 0s
    published / image-is-signed (push) Successful in 0s
    published / image-is-attested (kiota) (push) Successful in 17s
    published / image-is-attested (dockerhub) (push) Successful in 35s
    published / release-is-published (push) Successful in 4s
    published / release-notes-are-published (push) Successful in 4s
    published / published (push) Successful in 0s
    Stable

    damian-buho released this 2026-10-15 03:05:06 +00:00 | 91 commits to dev since this release

    Signed by damian-buho
    GPG key ID: 87B15EAD49FD22AB

    2 commits, 1 contributor, 1 hour since 3.1.0.

    Bug fixes

    • ci: sign every binary cell in one job (2e16bcf)
    • build: fetch public Go modules through proxy.golang.org (72c1ce7)

    Installation

    Container image

    Pull the published container image:

    Pull from DockerHub — linux/amd64

    docker pull damianbuho/projectfile-cli:3.1.1
    alias pf-cli='docker run --rm --user "$(id -u):$(id -g)" --group-add 0 --volume "$PWD:/app/ws" --workdir /app/ws damianbuho/projectfile-cli:3.1.1 pf-cli'
    

    This release also publishes the 3.1 and 3 tags — pull the precision you want to pin.

    If the registries above are unreachable, pull from the origin instead:

    Pull from Kiota — linux/amd64

    docker pull kiota.ch/projectfile/cli:3.1.1
    alias pf-cli='docker run --rm --user "$(id -u):$(id -g)" --group-add 0 --volume "$PWD:/app/ws" --workdir /app/ws kiota.ch/projectfile/cli:3.1.1 pf-cli'
    

    Then run it as if it were installed — the alias runs every example as written against the current directory:

    pf-cli --help
    

    Prebuilt binary

    Download the prebuilt binary for your platform from this release:

    mkdir -p ~/.local/bin
    curl --fail --location --output ~/.local/bin/pf-cli https://kiota.ch/projectfile/cli/releases/download/3.1.1/pf-cli-$(uname -s | tr A-Z a-z)-$(uname -m)
    chmod +x ~/.local/bin/pf-cli
    ~/.local/bin/pf-cli --help
    

    Published for: linux/amd64, linux/arm64, linux/riscv64, darwin/amd64, darwin/arm64

    Usage

    pf-cli

    $ pf-cli --help
    pf-cli is the command-line frontend for the projectfile: it reads, writes and
    validates fields, resolves remote includes, and generates derived artifacts. It
    embeds the v1 JSON Schema for offline validation and is the canonical tool for
    editing projectfiles locally and in CI.
    
    File and forge sync (bridge, forge, scan): use pf-bridge.
    
    Usage:
      pf-cli [command]
    
    Examples:
      pf-cli init --namespace org.example --name demo
      pf-cli get identity.name
      pf-cli set license.spdx MIT
      pf-cli add keywords rust wasm
      pf-cli del keywords[0]
      pf-cli validate
      pf-cli convert yaml toml
      pf-cli optimize
      pf-cli cache status
    
    Read:
      get         Read one or more projectfile fields
    
    Write:
      add         Append items to a projectfile list
      del         Remove a field, list item, or map entry from projectfile
      set         Write a value into a projectfile field
    
    Validate:
      validate    Validate a projectfile against the v1 JSON Schema
    
    Maintain:
      cache       Manage pf-cli’s local cache for offline use
      convert     Convert a projectfile between encodings (toml/yaml/json)
      includes    Manage the includes list
      init        Scaffold a new projectfile document
      optimize    Remove local fields that duplicate include values
      setup       Edit your per-user configuration interactively
    
    Other:
      completion  Generate the autocompletion script for the specified shell
      help        Help about any command
    
    Common flags:
        -q, --quiet          mute info; warnings and errors still print
      -v, --verbose        show each step; also PF_CLI_VERBOSE=1
      --offline            refuse network; use cache and embedded data
    
    Flags:
          --colors string        colour output: auto|always|never; also PF_CLI_NO_COLOR=1 (default "auto")
          --fail-on string       abort includes at error|warning (default "error")
      -h, --help                 help for pf-cli
          --ignore-user-config   skip $XDG_CONFIG_HOME/projectfile/cli.* loading
          --offline              refuse network; use cache and embedded data
      -q, --quiet                mute info; warnings and errors still print
          --sorted               write YAML keys in sorted order
          --timeout duration     per-attempt network timeout (default 10s)
      -v, --verbose              show each step; also PF_CLI_VERBOSE=1
      -V, --version              print the version
    
    Documentation:
      https://github.com/projectfile-org/cli/tree/main/docs
    
    Report a bug:
      https://github.com/projectfile-org/cli/issues
    
    Use "pf-cli [command] --help" for more information about a command.
    

    Examples and every command’s help are in Usage.

    Image digests

    A tag can move; a digest cannot. Pull this exact build:

    docker pull docker.io/damianbuho/projectfile-cli@sha256:3b77c923ce35ec8cc5604c918b32353af39c3c361d7e4b61615c711dd072245b
    docker pull kiota.ch/projectfile/cli@sha256:3b77c923ce35ec8cc5604c918b32353af39c3c361d7e4b61615c711dd072245b
    
    Platform Digest Size
    linux/amd64 sha256:80428787d96022d513e2a473821a2a37e7b94cae801a20a13bf4f7d7706610bd 95.2 MB

    Sizes are compressed layer bytes as stored in the registry.

    Verify

    Check that what you downloaded is what this project published.

    Container image

    The signature proves this project’s CI built and pushed the image; the attestation carries its software bill of materials.

    COSIGN_KEY=https://kiota.ch/damian-buho/metadata/raw/branch/main/keys/ci-cosign-key.pub
    cosign verify --key "$COSIGN_KEY" --insecure-ignore-tlog=true docker.io/damianbuho/projectfile-cli@sha256:3b77c923ce35ec8cc5604c918b32353af39c3c361d7e4b61615c711dd072245b
    cosign verify --key "$COSIGN_KEY" --insecure-ignore-tlog=true kiota.ch/projectfile/cli@sha256:3b77c923ce35ec8cc5604c918b32353af39c3c361d7e4b61615c711dd072245b
    cosign verify-attestation --key "$COSIGN_KEY" --insecure-ignore-tlog=true --type cyclonedx docker.io/damianbuho/projectfile-cli@sha256:3b77c923ce35ec8cc5604c918b32353af39c3c361d7e4b61615c711dd072245b
    cosign verify-attestation --key "$COSIGN_KEY" --insecure-ignore-tlog=true --type cyclonedx kiota.ch/projectfile/cli@sha256:3b77c923ce35ec8cc5604c918b32353af39c3c361d7e4b61615c711dd072245b
    

    Prebuilt binary

    The signature proves the binary is the one the maintainer’s release key signed.

    gpg --keyserver hkps://keys.openpgp.org --recv-keys 8F89CBF7C8D51F8BEC7533C00925F8F79EBD3257
    curl --fail --location --output pf-cli.asc https://kiota.ch/projectfile/cli/releases/download/3.1.1/pf-cli-$(uname -s | tr A-Z a-z)-$(uname -m).asc
    gpg --verify pf-cli.asc pf-cli
    

    Download via BitTorrent

    Fetch this release over BitTorrent with a magnet link, or with the attached .torrent file:

    Full changes: https://kiota.ch/projectfile/cli/compare/3.1.0...3.1.1

    Downloads
  • 3.1.0 81a7b9784f

    3.1.0
    All checks were successful
    published / fetched (push) Successful in 0s
    published / schema-fetched (push) Successful in 2s
    published / gpg-is-ready (push) Successful in 3s
    published / projectfile-is-valid (push) Successful in 3s
    published / signing-is-ready (push) Successful in 4s
    published / source-is-compliant (push) Successful in 8s
    published / source-is-tested (push) Successful in 6s
    published / projectfile-is-ok (push) Successful in 6s
    published / source-is-secure (push) Successful in 13s
    published / documentation-passes-lint (push) Successful in 55s
    published / documentation-is-ok (push) Successful in 0s
    published / source-passes-lint (push) Successful in 58s
    published / source-is-ok (push) Successful in 0s
    published / inputs-are-ok (push) Successful in 0s
    published / binaries-are-built (arm64, darwin) (push) Successful in 5s
    published / binaries-are-built (arm64, linux) (push) Successful in 5s
    published / binaries-are-built (riscv64, linux) (push) Successful in 5s
    published / binaries-are-built (amd64, linux) (push) Successful in 5s
    published / binaries-are-built (amd64, darwin) (push) Successful in 6s
    published / gsa (arm64, linux) (push) Successful in 6s
    published / gsa (arm64, darwin) (push) Successful in 6s
    published / gsa (amd64, linux) (push) Successful in 7s
    published / gsa (amd64, darwin) (push) Successful in 7s
    published / gsa (riscv64, linux) (push) Successful in 3s
    published / binaries-are-ok (push) Successful in 0s
    published / binaries-are-signed (arm64, linux) (push) Successful in 5s
    published / binaries-are-signed (arm64, darwin) (push) Successful in 5s
    published / binaries-are-signed (amd64, linux) (push) Successful in 5s
    published / binaries-are-signed (amd64, darwin) (push) Successful in 5s
    published / binaries-are-signed (riscv64, linux) (push) Successful in 5s
    published / binaries-are-torrented (push) Successful in 16s
    published / image-is-built (amd64) (push) Successful in 54s
    published / secrets-ready (push) Successful in 0s
    published / images-are-ok (push) Successful in 0s
    published / container-is-ok (push) Successful in 0s
    published / container-ready-to-test (push) Successful in 0s
    published / image-has-sbom (amd64) (push) Successful in 9s
    published / container-is-diagnosed (push) Successful in 0s
    published / image-is-secure (amd64) (push) Successful in 11s
    published / container-is-verified (amd64) (push) Successful in 1m50s
    published / image-is-ready (push) Successful in 0s
    published / artifacts-are-ok (push) Successful in 0s
    published / ready-to-publish (push) Successful in 0s
    published / publish-image (push) Successful in 0s
    published / image-is-signed (push) Successful in 1s
    published / image-is-attested (kiota) (push) Successful in 28s
    published / image-is-attested (dockerhub) (push) Successful in 42s
    published / release-is-published (push) Successful in 4s
    published / release-notes-are-published (push) Successful in 4s
    published / published (push) Successful in 1s
    Stable

    damian-buho released this 2026-10-15 01:21:33 +00:00 | 94 commits to dev since this release

    Signed by damian-buho
    GPG key ID: 87B15EAD49FD22AB

    9 commits, 1 contributor, 21 hours since 3.0.1.

    Features

    • validate: embed the fragment schema and check an included file with --fragment (b7ae0cd)

    Bug fixes

    • deps: bump projectfile/core to v2.18.1 for retried network fetches (f0a78e0)
    • security: suppress CVE-2026-92392 in the Ubuntu cURL (2c38874)
    • security: generate the scanner ignore files from the projectfile (375d124)

    Installation

    Pull from DockerHub — linux/amd64

    alias pf-cli='docker run --rm --user "$(id -u):$(id -g)" --group-add 0 --volume "$PWD:/app/ws" --workdir /app/ws damianbuho/projectfile-cli:3.1.0 pf-cli'
    

    If the registries above are unreachable, pull from the origin instead:

    Pull from Kiota — linux/amd64

    docker pull kiota.ch/projectfile/cli:3.1.0
    alias pf-cli='docker run --rm --user "$(id -u):$(id -g)" --group-add 0 --volume "$PWD:/app/ws" --workdir /app/ws kiota.ch/projectfile/cli:3.1.0 pf-cli'
    

    Then run it as if it were installed — the alias runs every example as written against the current directory:

    pf-cli --help
    

    Download the prebuilt binary for your platform from this release:

    mkdir -p ~/.local/bin
    curl --fail --location --output ~/.local/bin/pf-cli https://kiota.ch/projectfile/cli/releases/download/3.1.0/pf-cli-$(uname -s | tr A-Z a-z)-$(uname -m)
    chmod +x ~/.local/bin/pf-cli
    ~/.local/bin/pf-cli --help
    

    Published for: linux/amd64, linux/arm64, linux/riscv64, darwin/amd64, darwin/arm64

    Usage

    pf-cli

    $ pf-cli --help
    pf-cli is the command-line frontend for the projectfile: it reads, writes and
    validates fields, resolves remote includes, and generates derived artifacts. It
    embeds the v1 JSON Schema for offline validation and is the canonical tool for
    editing projectfiles locally and in CI.
    
    File and forge sync (bridge, forge, scan): use pf-bridge.
    
    Usage:
      pf-cli [command]
    
    Examples:
      pf-cli init --namespace org.example --name demo
      pf-cli get identity.name
      pf-cli set license.spdx MIT
      pf-cli add keywords rust wasm
      pf-cli del keywords[0]
      pf-cli validate
      pf-cli convert yaml toml
      pf-cli optimize
      pf-cli cache status
    
    Read:
      get         Read one or more projectfile fields
    
    Write:
      add         Append items to a projectfile list
      del         Remove a field, list item, or map entry from projectfile
      set         Write a value into a projectfile field
    
    Validate:
      validate    Validate a projectfile against the v1 JSON Schema
    
    Maintain:
      cache       Manage pf-cli’s local cache for offline use
      convert     Convert a projectfile between encodings (toml/yaml/json)
      includes    Manage the includes list
      init        Scaffold a new projectfile document
      optimize    Remove local fields that duplicate include values
      setup       Edit your per-user configuration interactively
    
    Other:
      completion  Generate the autocompletion script for the specified shell
      help        Help about any command
    
    Common flags:
        -q, --quiet          mute info; warnings and errors still print
      -v, --verbose        show each step; also PF_CLI_VERBOSE=1
      --offline            refuse network; use cache and embedded data
    
    Flags:
          --colors string        colour output: auto|always|never; also PF_CLI_NO_COLOR=1 (default "auto")
          --fail-on string       abort includes at error|warning (default "error")
      -h, --help                 help for pf-cli
          --ignore-user-config   skip $XDG_CONFIG_HOME/projectfile/cli.* loading
          --offline              refuse network; use cache and embedded data
      -q, --quiet                mute info; warnings and errors still print
          --sorted               write YAML keys in sorted order
          --timeout duration     per-attempt network timeout (default 10s)
      -v, --verbose              show each step; also PF_CLI_VERBOSE=1
      -V, --version              print the version
    
    Documentation:
      https://github.com/projectfile-org/cli/tree/main/docs
    
    Report a bug:
      https://github.com/projectfile-org/cli/issues
    
    Use "pf-cli [command] --help" for more information about a command.
    

    Examples and every command’s help are in Usage.

    Image digests

    A tag can move; a digest cannot. Pull this exact build:

    docker pull docker.io/damianbuho/projectfile-cli@sha256:173bce24d3d1807cbc58c505432368d96ec0fa70fddb9753f618f4c454816bcf
    docker pull kiota.ch/projectfile/cli@sha256:173bce24d3d1807cbc58c505432368d96ec0fa70fddb9753f618f4c454816bcf
    
    Platform Digest Size
    linux/amd64 sha256:5ab3d86e8981708e19c6094cbd7cbc98287b7a4c3191bef502d831d191ff2dba 95.2 MB

    Sizes are compressed layer bytes as stored in the registry.

    Verify

    Check that what you downloaded is what this project published.

    Container image

    The signature proves this project’s CI built and pushed the image; the attestation carries its software bill of materials.

    COSIGN_KEY=https://kiota.ch/damian-buho/metadata/raw/branch/main/keys/ci-cosign-key.pub
    cosign verify --key "$COSIGN_KEY" --insecure-ignore-tlog=true docker.io/damianbuho/projectfile-cli@sha256:173bce24d3d1807cbc58c505432368d96ec0fa70fddb9753f618f4c454816bcf
    cosign verify --key "$COSIGN_KEY" --insecure-ignore-tlog=true kiota.ch/projectfile/cli@sha256:173bce24d3d1807cbc58c505432368d96ec0fa70fddb9753f618f4c454816bcf
    cosign verify-attestation --key "$COSIGN_KEY" --insecure-ignore-tlog=true --type cyclonedx docker.io/damianbuho/projectfile-cli@sha256:173bce24d3d1807cbc58c505432368d96ec0fa70fddb9753f618f4c454816bcf
    cosign verify-attestation --key "$COSIGN_KEY" --insecure-ignore-tlog=true --type cyclonedx kiota.ch/projectfile/cli@sha256:173bce24d3d1807cbc58c505432368d96ec0fa70fddb9753f618f4c454816bcf
    

    Prebuilt binary

    The signature proves the binary is the one the maintainer’s release key signed.

    gpg --keyserver hkps://keys.openpgp.org --recv-keys 8F89CBF7C8D51F8BEC7533C00925F8F79EBD3257
    curl --fail --location --output pf-cli.asc https://kiota.ch/projectfile/cli/releases/download/3.1.0/pf-cli-$(uname -s | tr A-Z a-z)-$(uname -m).asc
    gpg --verify pf-cli.asc pf-cli
    

    Download via BitTorrent

    Fetch this release over BitTorrent with a magnet link, or with the attached .torrent file:

    Full changes: https://kiota.ch/projectfile/cli/compare/3.0.1...3.1.0

    Downloads