- Deployments define what to deploy and how — the service, its versions, and the job agent that executes the deployment.
- Environments define where to deploy — logical stages that dynamically group resources via selectors.
- Policies define when to deploy — rules like approvals, verification, progression gates, and deployment windows that control timing.
System
A System is a logical grouping of related deployments, environments, and resources. Think of it as a workspace for a product or team.
Example: “E-commerce Platform” system containing API, Frontend, and Payment
deployments.
When to create a System: One per product, platform, or team boundary.
Resource
A Resource is a deployment target—the actual infrastructure where your code runs.
Examples: Kubernetes cluster, EC2 instance, Lambda function, VM.
How created: Via Resource Providers (auto-sync from K8s, AWS, GCP) or API.
Environment
An Environment defines where to deploy. It represents a logical deployment stage (dev, staging, prod) that groups resources using selectors.
Key concept: Environments are dynamic. When you add a new resource
matching the selector, it automatically joins the environment.
Deployment
A Deployment defines what to deploy and how. It represents a service or application you want to deploy, along with the job agent configuration that determines how the deployment is executed.
Examples: “API Service”, “Frontend App”, “Payment Processor”.
Version
A Version is a specific build or release of a deployment, typically created by your CI pipeline.
Status meanings:
building— Still being built, won’t be deployedready— Ready for deployment (default for policies)failed— Build failed, won’t be deployed
Release Target
A Release Target is the combination of a Deployment, Environment, and Resource. It represents a specific place where a deployment can be released.- Deployment: “API Service”
- Environment: “Production”
- Resource: “us-east-1 cluster”
- Release Target: “API Service on Production/us-east-1”
- Environment’s resource selector → which resources
- Deployment’s resource selector (if any) → further filtering
Release
A Release is an instance of deploying a specific Version to a Release Target.
Releases do not carry their own status. The state of a release is inferred from
the Release Target State — which tracks the desired release, current release,
and latest job for each target.
Job
A Job is the actual deployment task executed by a Job Agent.
Job lifecycle:
- Ctrlplane creates job for approved release
- Job agent polls and receives the job
- Agent acknowledges and executes
- Agent updates status as it progresses
- Agent marks completed or failed
Job Agent
A Job Agent is the executor that performs deployments. It bridges Ctrlplane to your infrastructure.Policy
A Policy defines when a version is allowed to deploy. Policies are the rules governing deployment timing—approvals, gates, windows, and verification that control when releases progress.
Policy types:
Policy evaluation: When a release target needs deployment:
- Find all policies matching the target
- Evaluate each rule
- All pass → create job
- Any requires action → release is pending
- Any denies → release is blocked
Selector
Selectors are query expressions used to match resources, environments, or deployments.- Environment resource selectors
- Deployment resource selectors
- Policy target selectors
Variables
Variables provide dynamic configuration for deployments.Quick Reference Table
Next Steps
- How It Works — Understand the flow
- Quickstart — Hands-on tutorial
- Selectors — Deep dive into selector syntax
- Policies — Configure deployment rules