witness is a free, open source erp & operations project written in Go and released under Apache-2.0. It has 546 GitHub stars, 82 forks and 75 open issues, and was last pushed 32 hours ago. On this registry it ranks #21 of 25 tracked projects in ERP & Operations, with 5 head-to-head comparisons available. It gained 1 stars over the last 3 tracked days.

What is witness?

Witness is an Apache-2.0 Go command-line framework from the CNCF in-toto ecosystem that creates and verifies signed attestations about how software artifacts were built, and it is aimed at platform, release, and security engineers who must prove artifact provenance across a software development lifecycle.

What it is

Witness is a pluggable framework for software supply chain risk management. It is a dynamic CLI tool that integrates into pipelines and infrastructure to create an audit trail for software's entire journey through the software development lifecycle, using the in-toto specification as its attestation format. Alongside attestation it carries its own policy engine with embedded support for OPA Rego, so the same tool both records what happened and checks that what happened was allowed. The project originated at TestifySec and was later donated to the CNCF in-toto ecosystem, where it is now maintained by the open community. It is written in Go and released under the Apache-2.0 licence.

The concrete problem it solves is provenance that cannot be proven. Build systems commonly produce artifacts without a durable, verifiable record of which tools ran, in what order, and under whose authority, which leaves downstream consumers unable to distinguish a legitimate build from a tampered one. Witness addresses this by attesting each step of the supply chain as it occurs, normalizing those records into in-toto attestations, and then verifying them against policy. That lets a team confirm how software was produced and what tools were used, ensure each step was completed by authorized users and machines, and detect potential tampering or malicious activity before an artifact reaches deployment. It also supports distributing attestations and policy across air gaps.

Key capabilities

  • Attestation generation through a dynamic CLI that integrates into pipelines and infrastructure to record each SDLC step as an in-toto attestation.
  • Policy verification through an embedded OPA Rego policy engine, so software can be checked as having been handled safely from source to deployment.
  • Implementation of the in-toto specification including ITE-5, ITE-6, and ITE-7.
  • Keyless signing with Sigstore and SPIFFE/SPIRE, plus integration with RFC3161 compatible timestamp authorities.
  • Attestation storage with Archivista.
  • Process tracing and process tampering prevention, marked experimental in the README.
  • Deployment in containerized and non-containerized environments without elevated privileges, with integrations for GitLab, GitHub, AWS, and GCP.

Who uses it and how

  • CI/CD owners insert the Witness CLI as a pipeline step on GitLab or GitHub so that every build step emits an attestation rather than relying on after-the-fact logs.
  • Security and compliance teams write OPA Rego policy and gate promotion or deployment on successful verification of the artifact's recorded history.
  • Regulated or classified environments use the air-gap distribution of attestations and policy to carry provenance evidence between isolated networks.
  • Multi-cloud teams lean on the AWS and GCP integrations to capture provenance for workloads built and run across those providers.
  • Operators running constrained or mixed infrastructure deploy Witness in containerized and non-containerized modes without needing elevated privileges.

Getting started

Installation requires only the Witness binary, which can be downloaded from the releases page on GitHub or fetched with the install script for the latest release.

How it compares

Witness sits inside the CNCF in-toto ecosystem rather than replacing it: it implements the in-toto specification, and it composes with Sigstore and SPIFFE/SPIRE for keyless signing, with Archivista for attestation storage, and with OPA Rego for policy evaluation. Teams already using those components can add Witness as the pipeline-side tool that generates and verifies the metadata those systems consume. In this registry it does not stand alone on the attestation and verification problem, but it is the piece that ties those named tools into a working supply chain workflow.

When to use it — and when not to

A self-hoster must operate the pieces Witness depends on, including Archivista for attestation storage, an OPA Rego policy authoring practice, and a keyless signing path through Sigstore or SPIFFE/SPIRE, so the tool is not a single binary that solves provenance on its own. Teams that want a turnkey hosted service, or that cannot invest in running and writing policy for those supporting systems, should look elsewhere; the README notes that commercial services exist from TestifySec and are not part of the CNCF sponsorship of Witness. The project also carries 75 open issues, and its process tracing and tampering prevention capability is explicitly experimental, so it should not be treated as a mature control in that area.

project readme (upstream, from github) — read inline

Witness

Go Reference Go Report Card OpenSSF Best Practices OpenSSF Scorecard FOSSA Status

Witness originated at TestifySec and was later donated to the CNCF in-toto ecosystem. It is now maintained by the open community.

DOCSCONTRIBUTINGLICENSE

`bash

Witness project logo

What does Witness do?

✏️ Attests - Witness is a dynamic CLI tool that integrates into pipelines and infrastructure to create an audit trail for your software's entire journey through the software development lifecycle (SDLC) using the in-toto specification.

🧐 Verifies - Witness also features its own policy engine with embedded support for OPA Rego, so you can ensure that your software was handled safely from source to deployment.

What can you do with Witness?

  • Verify how your software was produced and what tools were used
  • Ensure that each step of the supply chain was completed by authorized users and machines
  • Detect potential tampering or malicious activity
  • Distribute attestations and policy across air gaps

Key Features

  • Integrations with GitLab, GitHub, AWS, and GCP.
  • Designed to run in both containerized and non-containerized environments without elevated privileges.
  • Implements the in-toto specification (including ITE-5, ITE-6 and ITE-7)
  • An embedded OPA Rego policy engine for policy enforcement
  • Keyless signing with Sigstore and SPIFFE/SPIRE
  • Integration with RFC3161 compatible timestamp authorities
  • Process tracing and process tampering prevention (Experimental)
  • Attestation storage with Archivista

Demo

Demo

Quick Start

Installation

To install Witness, all you will need is the Witness binary. You can download this from the releases page or use the install script to download the latest release:

bash <(curl -s https://raw.githubusercontent.com/in-toto/witness/main/install-witness.sh)

If you want install it manually and verify its integrity follow the instructions in the INSTALL.md.

Tutorials

Check out our Tutorials:

Media

Check out some of the content out in the wild that gives more detail on how the project can be used.

Blog/Video - Generating and Verifying Attestations With Witness
Blog - What is a supply chain attestation, and why do I need it?
Talk - Securing the Software Supply Chain with the in-toto & SPIRE projects
Talk - Securing the Software Supply Chain with SBOM and Attestation

Get Involved with the Community!

Join the CNCF Slack and join the #in-toto-witness channel. You might also be interested in joining the #in-toto channel for more general in-toto discussion, as well as the #in-toto-archivista channel for discussion regarding the Archivista project.

Community & Commercial Support

  • Community channels – Slack, GitHub Issues, and bi-weekly office hours are free and open to all contributors.
  • Commercial platform & SLAsTestifySec offers managed Witness/Archivista hosting, and 24 × 7 support.

(These commercial services are provided by TestifySec and are not part of the CNCF sponsorship of Witness.)

Frequently asked questions

Is witness free to use?

witness is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does witness do?

Witness is a pluggable framework for software supply chain risk management. It automates, normalizes, and verifies software artifact provenance.

What is witness written in?

witness is primarily written in Go. Its source is publicly available at https://github.com/in-toto/witness, and it has 546 GitHub stars.