Skip to content

Concepts

SKE organizes resources in a hierarchy. Understanding this hierarchy is essential for managing projects, permissions, and infrastructure.

Organization (billing root, team membership)
└── Workspace (isolation boundary for projects and infrastructure)
├── Cloud Provider (AWS account or GCP project credentials)
├── Network (VPC / subnet configuration)
│ ├── Database (RDS or Cloud SQL instance)
│ └── Cache (ElastiCache or Memorystore instance)
├── Domain (registered domain for custom URLs)
├── Project (your application)
│ └── Environment (production, staging, etc.)
│ └── Deployment (a released version of your code)

An organization is the top-level billing and membership boundary. Every user has a personal organization created at signup. You can create additional organizations for companies or teams.

Organizations own billing, members, teams, and roles. All resources ultimately belong to an organization.

Switch between organizations:

Terminal window
ske orgs
SLUG NAME PERSONAL
* acme-corp Acme Corporation no
jane-doe Jane Doe yes
Terminal window
ske orgs switch acme-corp

A workspace groups related projects and infrastructure within an organization. Every organization has a default workspace created automatically.

Workspaces provide isolation — cloud providers, networks, databases, and caches are scoped to a workspace. A common pattern is one workspace per client or product line.

Terminal window
ske workspace list
NAME SLUG DEFAULT CREATED
Production production yes 2026-08-15
Staging staging no 2026-08-20
Terminal window
ske workspace switch production

A cloud provider connects an external AWS account or GCP project to your workspace. SKE uses the provided credentials to provision and manage infrastructure inside that account.

Each workspace can have multiple cloud providers. An environment references a specific provider for deployment.

See Cloud Providers for setup instructions.

A project represents a single application. It has a name, a runtime (e.g., laravel), and one or more environments.

Projects live in a workspace and are identified by a slug. The ske.yml file in your repository root links your local code to an SKE project.

An environment is a deployment target within a project — typically production, staging, or development. Each environment has its own:

  • Cloud provider and region
  • Container image version
  • Secrets and environment variables
  • Database, cache, and network configuration
  • Custom domains
  • Deployment history

Environments are isolated from each other. A deployment to staging does not affect production.

A deployment is a specific release of your code to an environment. Each deployment produces an immutable container image stored in your cloud provider’s registry.

Deployments have a status lifecycle:

Status Meaning
pending Deployment created, waiting to start
building Container image being built and pushed
deploying Infrastructure being provisioned or updated
succeeded Live and serving traffic
failed Something went wrong (check deployment output)
cancelled Cancelled before completion

Deployment types:

Type Meaning
deploy A new code release
rollback Reactivating a previous deployment’s image
env_sync Applying configuration changes without new code
maintenance Toggling maintenance mode

Infrastructure operations are asynchronous jobs for provisioning or modifying cloud resources — creating a database, setting up a VPC, or issuing an SSL certificate. They run in the background and report progress through the API.

Terminal window
ske job list
ID TYPE STATUS CREATED
42 database:create succeeded 2026-09-15 14:30
41 network:create succeeded 2026-09-15 14:28
40 cache:create running 2026-09-15 14:35

All infrastructure operations are non-blocking. SKE submits the operation and polls for completion with exponential backoff, so the CLI returns immediately while the work happens in your cloud account.

The ske.yml file in your project root maps your local code to an SKE project and environment:

name: my-laravel-app
environments:
production: {}
staging:
region: eu-west-1

Run ske init to create it interactively, or edit it by hand. The CLI uses this file to determine which project and environment to target when you run commands like ske deploy.