Developer Onboarding
Welcome to the Open Component Model (OCM). This page gives you everything you need to orient yourself in the project, understand how it is built, and find the right starting point for your interests.
To use the OCM CLI
Basic command-line experience and familiarity with container images or software packaging concepts.
To use the Kubernetes controllers
Working knowledge of Kubernetes (clusters, manifests, custom resources).
To contribute code
The core libraries, CLI, and controllers are written in Go (1.26+) and use Task as their build runner. Contributions in other areas - such as language bindings, documentation, the website, or tooling - may use different languages and are equally welcome.
What is OCM?
OCM is a standard and toolkit for describing, signing, transporting, and deploying software artifacts as a single, versioned unit. These overview pages explain the model in depth:
How OCM Works
The Pack-Sign-Transport-Deploy lifecycle.
Benefits of OCM
Supply chain protection, traceability, and air-gap support.
The OCM Core Model
Components, resources, sources, references, and identity.
Getting Started
The getting-started guides walk you through the full workflow - from installing the CLI to deploying with Kubernetes controllers. The first two guides (CLI installation and creating a component version) require no Kubernetes knowledge.
Getting Started
Install the CLI, create your first component version, set up controllers, and deploy.
Advanced Topics
Once you are comfortable with the basics, explore these concept pages for a deeper technical understanding:
Component Identity
Naming, versioning, and coordinate notation.
Signing and Verification
Digest calculation, normalization, and trust models.
Transfer and Transport
Moving components between registries and air-gapped environments.
Kubernetes Controllers
Reconciliation chain and controller architecture.
Plugin System
Extending OCM with custom repository types, credentials, and signing handlers.
The Mono-Repository
All active OCM development happens in a single repository: open-component-model. The mono-repo contains the Go library, the CLI, the Kubernetes controllers, conformance tests, and this website - all sharing one dependency tree and one test suite.
graph TD
Root["open-component-model/"]
Bindings["bindings/\nLanguage bindings (currently Go)"]
CLI["cli/\nOCM CLI"]
K8s["kubernetes/controller/\nOCM Kubernetes Controller Toolkit"]
Website["website/\nProject website"]
Conformance["conformance/\nConformance tests"]
Docs["docs/\nCommunity docs & governance"]
Root --> Bindings
Root --> CLI
Root --> K8s
Root --> Website
Root --> Conformance
Root --> Docs
The ocm and ocm-controller repositories are the previous generation of OCM tooling. They are maintained but no longer receive new features. All new development targets the mono-repo above. Read the OCM v2 announcement for background on the rewrite.
Technical Layers
OCM is built as a stack of layers. Each layer builds on the one below it:
flowchart TD
Spec["OCM Specification\n(defines the model)"]
Go["Go Bindings\n(bindings/go/)"]
CLI["OCM CLI\n(cli/)"]
Controllers["OCM Kubernetes Controller Toolkit\n(kubernetes/controller/)"]
ODG["Open Delivery Gear\n(separate repository, Python)"]
Spec --> Go
Spec -.->|"implements spec\n(via Python/cc-utils)"| ODG
Go --> CLI
Go --> Controllers
OCM Specification
The formal standard that defines how components, resources, and signatures are represented. It is technology-agnostic and lives in its own repository.
Specification Document
Table of contents for the full spec: model, processing, persistence, extensions, and guidelines.
Glossary
Definitions of key terms used throughout the specification.
Go Bindings
The reference implementation of the specification in Go, located in
bindings/go/. The bindings/
directory is structured to welcome implementations in other languages in the future. This library provides the core
types and operations (creating, signing, resolving, transferring component versions) that the CLI and controllers build
on.
Module Overview
Available modules, their purpose, and how to import them.
Guided Tour (Examples)
Progressive learning path with runnable Go tests.
Contributing to Go Bindings
Workspace setup, testing, module lifecycle, and releases.
OCM CLI
A command-line tool for the Pack-Sign-Transport workflow, located in
cli/. Built on the Go bindings, it is
designed for interactive use and CI/CD pipelines. Start with
Install the OCM CLI.
CLI README
Installation from source, quick start, and plugin system.
Command Reference
Full reference for all OCM CLI commands.
Contributing to the CLI
CLI-specific development workflow and conventions.
OCM Kubernetes Controller Toolkit
A set of controllers that handle deployment and verification of OCM component versions in Kubernetes clusters, located
in
kubernetes/controller/.
They use a dependency chain of custom resources: Repository, Component, Resource, and Deployer.
Deploy Helm Charts
Tutorial: deploy a Helm chart from an OCM component version with controllers, kro, and Flux.
Deployment Examples
Deployment examples: Helm, Kustomize, signing, nested deployments.
Contributing to Controllers
Controller development, testing, and CRD conventions.
Open Delivery Gear
A compliance automation engine that subscribes to OCM component versions and continuously scans delivery artifacts for security and compliance issues, located in its own repository. ODG tracks findings against configurable SLAs, supports assisted rescoring, and provides a Delivery Dashboard UI for both platform operators and application teams. It is designed for public and sovereign cloud scenarios where trust-but-verify assurance is required.
ODG Documentation
Getting started, data model, extensions, and HTTP API reference.
Project Organization
OCM is an open standard contributed to the Linux Foundation under the NeoNephos Foundation. A Technical Steering Committee (TSC) provides technical oversight, sets project direction, and coordinates across working groups. Specific technical areas are owned by Special Interest Groups (SIGs). Currently, SIG Runtime maintains the Go bindings, CLI, and Kubernetes controllers.
Governance
TSC membership, project charter, and SIG framework.
How We Work
Meetings, planning rituals, project boards, and decision-making.
SIG Handbook
How to join or propose a new Special Interest Group.
TSC Meeting Notes
Public monthly meeting notes from the Technical Steering Committee.
Contributing and Engaging
Ready to contribute or connect with the community? If you are looking for something to work on, check the
kind/good-first-issue
label across our repositories.
Contributing Guide
Fork-and-pull workflow, pull request process, DCO sign-off, and AI-generated code guidelines.
Community Engagement
Communication channels (Slack, Zulip), community calls, and how to reach the team.
The easiest way to get started is to say hello. Join our monthly community call or ask for an invite to the daily standup - it is a casual sync, not mandatory, and not necessarily work-related. You can reach us on Slack or Zulip anytime.