Open Component Model Command Line Interface (ocm-cli)
The Open Component Model Command Line Interface (ocm-cli) is a tool designed to interact with the Open Component Model (OCM), an open standard for describing Software Bills of Delivery (SBOD). This toolset enables developers and organizations to manage, create, and transport component versions across various repository types.
Key Features:
Component Versioning: Create and manage software component versions in adherence to OCM specifications.
Repository Support: Interact with multiple repository types, including OCI registries and file-based bindings (CTF).
Signing & Verification: Sign components using GPG keys and verify their authenticity, ensuring secure supply chains.
Integration Capabilities: Embed component versioning into build processes through CLI commands or scripting.
Extensibility: Leverage the OCM library for custom integrations with diverse repository implementations.
Audience & Benefit:
Ideal for software developers, DevOps engineers, and security professionals seeking to implement secure software supply chains. ocm-cli simplifies component versioning, streamlines delivery processes, enhances transparency through SBODs, and supports DevSecOps practices. It also facilitates the creation of reproducible builds, ensuring consistency across environments.
The tool is available for installation via winget, making it accessible to integrate into existing workflows without additional setup complexity.
README
Open Component Model
The Open Component Model (OCM) is an open standard to describe software bills of delivery (SBOD). OCM is a technology-agnostic and machine-readable format focused on the software artifacts that must be delivered for software products.
OCM describes delivery artifacts that can be accessed from many types of component repositories. It defines a set of semantic, formatting, and other types of specifications that can be found in the ocm-spec repository. Start learning about the core concepts of OCM elements here.
OCM Library
This project provides a Go library containing an API for interacting with the
Open Component Model (OCM) elements and mechanisms.
# Nix (macOS, Linux, and Windows)
# ad-hoc cmd execution
nix run github:open-component-model/ocm -- --help
nix run github:open-component-model/ocm#helminstaller -- --help
# install development version
nix profile install github:open-component-model/ocm
# or release
nix profile install github:open-component-model/ocm/
#check installation
nix profile list | grep ocm
# optionally, open a new shell and verify that cmd completion works
ocm --help
An example of how to use the ocm CLI in a Makefile can be found in examples/make.
More comprehensive examples can be taken from the components contained in this repository. Here a complete component build including a multi-arch image is done and finally packaged into a CTF archive which can be transported into an OCI repository. See the readme files for details.
GPG Public Key
The authenticity of released packages that have been uploaded to public repositories can be verified using our GPG public key. You can find the current key in the file OCM-RELEASES-PUBLIC-CURRENT.gpg on our website. You can find the old keys in the website github repository here.
Contributing
Code contributions, feature requests, bug reports, and help requests are very welcome. Please refer to the Contributing Guide in the Community repository for more information on how to contribute to OCM.
Copyright 2025 SAP SE or an SAP affiliate company and Open Component Model contributors.
Please see our LICENSE for copyright and license information.
Detailed information including third-party components and their licensing/copyright information is available via the REUSE tool.