WARNING: UNDER HEAVY DEVELOPMENT - This project is actively being developed and APIs may change frequently.
Command-line interface for the Open Platform Model (OPM). Build, validate, deploy, and inspect portable application releases defined with CUE.
# Build the CLI
task build
# Initialize a new module
./bin/opm module init ./my-module
# Validate a module
./bin/opm module vet ./my-module
# Validate an instance file
./bin/opm instance vet ./instance.cue
# Render an instance file
./bin/opm instance build ./instance.cue
# Apply an instance file
./bin/opm instance apply ./instance.cue- Type-safe definitions using CUE
- Kubernetes-native resource management
- Portable blueprints across providers
- OCI-based distribution for modules and definitions
- Interactive CLI with rich terminal output
opm mod remains available as a compatibility alias.
Use opm module when you are starting from module source. For rendering, deploying, or inspecting instances, use opm instance.
| Command | Description |
|---|---|
module init |
Create a new module from a template |
module vet |
Validate a module without rendering manifests |
opm inst is the short alias.
Use opm instance when you are starting from an instance file or when you want to inspect, list, or delete deployed instances.
| Command | Description |
|---|---|
instance vet |
Validate an instance file without generating manifests |
instance build |
Render an instance file to manifests |
instance apply |
Deploy an instance file to a cluster |
instance diff |
Compare an instance file with live cluster state |
instance status |
Show resource status for a deployed instance |
instance tree |
Show instance resource hierarchy |
instance delete |
Delete instance resources from a cluster |
instance list |
List deployed instances |
instance events |
Show events for an instance |
| Command | Description |
|---|---|
config init |
Initialize OPM configuration |
config vet |
Validate configuration |
Use opm operator to put the opm-operator (and its CRDs) onto a cluster — a prerequisite for any opm instance apply.
| Command | Description |
|---|---|
operator install |
Install the opm-operator (--crds-only, --rbac [--user|--group], --version, --timeout) |
operator uninstall |
Remove the opm-operator, preserving CRDs and its Namespace (--remove-finalizers) |
# Install the full operator and wait for it to become ready
opm operator install
# CLI-solo path: install just the CRDs, no running operator
opm operator install --crds-only
# Grant a non-admin user access to ModuleInstances
opm operator install --crds-only --rbac --user alice
# Remove the operator (refuses while any ModuleInstance is still active)
opm operator uninstall# Validate an instance file
opm instance vet ./instances/jellyfin/instance.cue
# Render manifests from an instance file
opm instance build ./instances/jellyfin/instance.cue
# Apply an instance file to the cluster
opm instance apply ./instances/jellyfin/instance.cue
# Inspect deployed state by file, name, or UUID
opm instance status ./instances/jellyfin/instance.cue
opm instance status jellyfin -n mediaFor development guidelines, architecture details, and agent instructions, see AGENTS.md.
# Run all checks (format, vet, lint, test)
task check
# Build binary
task build
# Install binary
task install
# Run tests
task test
# Run tests with coverage
task test:coverage- Go 1.25+
- Kubernetes cluster for deployment and integration-test workflows
This project is licensed under the Apache License 2.0. See LICENSE.