Deploy anywhere with one workflow. Write declarative YAML once, deploy to AWS, GCP, Azure, or Kubernetes with the same CLI and consistent experience.
An open-source multi-cloud deployment framework that brings Kubernetes-style consistency to infrastructure deployments everywhere. No vendor lock-in, no artificial abstractions—just provider-specific configurations with a unified structure and workflow.
360+ deployment components across 17 cloud providers — AWS, GCP, Azure, Kubernetes, OCI, Alibaba Cloud, Hetzner Cloud, DigitalOcean, Cloudflare, Civo, Scaleway, OpenStack, Confluent, Snowflake, Auth0, MongoDB Atlas, and OpenFGA.
Documentation · Component Catalog · Getting Started
- One structure, any cloud — Kubernetes Resource Model (apiVersion/kind/metadata/spec) for all deployments
- Validate before deploy — Protocol Buffer validations catch errors in seconds, not minutes
- Zero abstraction — Provider-specific configs preserve cloud capabilities; consistent experience across all
- Choose your IaC — Built-in Pulumi and Terraform/OpenTofu modules with feature parity
- Build on top — Auto-generated SDKs in Go, Python, TypeScript, Java from Protocol Buffer definitions
brew install plantonhq/tap/openmcfExample: Deploy PostgreSQL to Kubernetes using the KubernetesPostgres deployment component.
apiVersion: kubernetes.openmcf.org/v1
kind: KubernetesPostgres
metadata:
name: my-first-postgres
labels:
openmcf.org/provisioner: pulumi
pulumi.openmcf.org/organization: organization
pulumi.openmcf.org/project: getting-started
pulumi.openmcf.org/stack.name: dev
spec:
namespace:
value: my-first-postgres
createNamespace: true
container:
replicas: 1
resources:
requests:
cpu: 50m
memory: 100Mi
limits:
cpu: 500m
memory: 512Mi
diskSize: 1GiYou can create similar manifests for AWS VPC, GKE Cluster, Kafka on Kubernetes, and many more.
# Unified command (auto-detects provisioner from manifest labels)
openmcf apply -f postgres.yaml
# Or use IaC-specific commands directly
openmcf pulumi up -f postgres.yaml
openmcf tofu apply -f postgres.yamlopenmcf
├── apply / destroy / plan Unified commands (provisioner auto-detected)
├── pulumi Pulumi-specific commands (init, preview, up, destroy, refresh)
├── tofu OpenTofu commands (init, plan, apply, destroy, refresh)
├── terraform Terraform commands (init, plan, apply, destroy, refresh)
├── validate Validate manifest against protobuf schema
├── pull / checkout Module management
├── config CLI configuration
└── version / upgrade Version management
See the full CLI Reference for all commands, flags, and options.
- Getting Started Guide — Your first deployment in 10 minutes
- Component Catalog — Browse 360+ deployment components across 17 providers
- Architecture — How Protocol Buffers, IaC modules, and CLI work together
- Planton — Commercial SaaS platform with UI, CI/CD, and team features
Visit CONTRIBUTING.md for information on building OpenMCF from source or contributing improvements.
Also, refer to the Contributor Guide for detailed information about becoming a contributor to OpenMCF.
OpenMCF is released under the Apache 2.0 license. You are free to use, modify, and distribute this software in accordance with the license terms.
- Brian Grant & Kubernetes API team for their foundational work on the Kubernetes Resource Model.
- The Protobuf Team for laying the foundation for a powerful language neutral contract definition language.
- The Buf Team for their Protobuf tooling—including BSR Docs, BSR SDKs, and ProtoValidate — which collectively democratized protobuf adoption and made this project possible.
- The Pulumi team for providing a powerful infrastructure as code platform that enables multi-language support.
- The spf13/cobra team for making building command line tools a bliss.