Skip to main content
A System is the top-level organizational unit in Ctrlplane. It represents a logical grouping of related deployments, environments, and resources.

What is a System?

Think of a system as a workspace for a product, platform, or major component of your infrastructure. It contains everything related to deploying that product:
  • Deployments - The services/applications you deploy
  • Environments - Where you deploy (dev, staging, prod)
  • Resources - The infrastructure targets
  • Policies - Rules governing deployments
  • Variables - Configuration values

When to Create a System

Create a system when you have: A product or platform - E.g., “E-commerce Platform”, “Data Pipeline”
Multiple related services - Microservices that work together
Shared deployment policies - Common approval/progression rules
Logical separation - Different teams, security boundaries

System Structure

Creating a System

Via Web UI

  1. Navigate to your workspace
  2. Click “Create System”
  3. Fill in the form:
    • Name: Display name (e.g., “E-commerce Platform”)
    • Slug: URL-friendly identifier (e.g., “ecommerce-platform”)
    • Description: What this system encompasses

Via CLI

Full System Configuration

Create a system with deployments and environments in one file:

System Properties

Name

  • Display name shown in the UI
  • Can contain spaces and special characters
  • Can be changed without affecting existing deployments

Slug

  • URL-friendly identifier
  • Must be unique within workspace
  • Used in API paths and CLI commands
  • Cannot be changed after creation
  • Format: lowercase letters, numbers, hyphens

Description

  • Optional text describing the system’s purpose
  • Supports markdown formatting
  • Displayed in the UI

Workspace ID

  • The parent workspace this system belongs to
  • Automatically set when creating a system
  • Cannot be changed

Organizing with Multiple Systems

When to Use Multiple Systems

Use separate systems when:
  1. Team Boundaries
  2. Security Boundaries
  3. Deployment Independence
  4. Different Policies

When to Use One System

Keep things in one system when:
  1. Tightly Coupled Services
    • Microservices that must deploy together
    • Services with shared dependencies
  2. Shared Deployment Pipeline
    • Same approval requirements
    • Same environment progression
  3. Single Team/Product
    • One team owns all services
    • Deployed as a unit

System-Level Operations

Viewing System Status

Get an overview of all deployments in a system:
Response:

Listing All Entities

List Deployments:
List Environments:
List Policies:

Deleting a System

⚠️ Warning: Deleting a system removes all associated deployments, releases, and jobs. This cannot be undone.

Best Practices

Naming Conventions

Good Names:
  • ✅ “E-commerce Platform”
  • ✅ “Analytics Pipeline”
  • ✅ “Customer Portal”
Good Slugs:
  • ecommerce-platform
  • analytics-pipeline
  • customer-portal
Avoid:
  • ❌ “System 1”, “Test”, “Prod” (too generic)
  • My_System, PROD-SYSTEM (inconsistent formatting)

Start Simple

Begin with one system for your product:
Split into multiple systems as you grow:

Documentation

Use the description field to document:
  • Purpose of the system
  • Ownership/team responsible
  • Key dependencies
  • Links to external documentation
Example:

Consistent Structure

Maintain consistent structure across systems:
  • Standard environment names (dev, staging, prod)
  • Similar deployment naming patterns
  • Common policy approaches

Common Patterns

Microservices System

Multi-Region System

Monorepo with Multiple Apps

Troubleshooting

System not appearing in UI

  • Verify system was created successfully
  • Check you’re in the correct workspace
  • Refresh the page

Cannot create deployment in system

  • Verify you have permissions for the system
  • Check system ID is correct
  • Ensure deployment slug is unique within system

System deletion fails

  • Active releases may prevent deletion
  • Cancel or complete all active releases first
  • Or force delete via API with force=true parameter

Next Steps