Skip to main content
This page provides an overview of the core concepts in Ctrlplane. The three pillars of Ctrlplane answer the fundamental questions of deployment:
  • 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 deployed
  • ready — 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.
Example:
  • Deployment: “API Service”
  • Environment: “Production”
  • Resource: “us-east-1 cluster”
  • Release Target: “API Service on Production/us-east-1”
Automatic creation: Release targets are computed from the intersection of:
  1. Environment’s resource selector → which resources
  2. 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:
  1. Ctrlplane creates job for approved release
  2. Job agent polls and receives the job
  3. Agent acknowledges and executes
  4. Agent updates status as it progresses
  5. 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:
  1. Find all policies matching the target
  2. Evaluate each rule
  3. All pass → create job
  4. Any requires action → release is pending
  5. Any denies → release is blocked

Selector

Selectors are query expressions used to match resources, environments, or deployments.
Used in:
  • Environment resource selectors
  • Deployment resource selectors
  • Policy target selectors
See Selectors for full syntax.

Variables

Variables provide dynamic configuration for deployments.

Quick Reference Table

Next Steps