Workstations

A Workstation is the core resource in werkr. It represents a development environment — either a local Docker container or a remote cloud VM.

API Definition

apiVersion: werkr.dev/v1alpha1
kind: Workstation
metadata:
  name: <string>          # Unique name
  labels:                   # Key-value labels for matching configs
    <key>: <value>
spec:
  os:
    id: <string>           # OS identifier (e.g., debian-13, ubuntu-2404)
  provider: <string>       # Provider: docker, gcp
  providerConfig:           # Provider-specific settings
    projectId: <string>    # GCP project ID
    machineType: <string>  # e.g., e2-medium, e2-standard-4
    diskType: <string>     # e.g., pd-ssd, pd-standard
    region: <string>       # e.g., europe-west3, us-central1
  resources:
    diskSize: <number>     # Disk size in GB

Supported Providers

Provider Description Use Case
docker Local Docker containers Development, testing, CI
gcp Google Cloud Compute Engine VMs Remote development, powerful workloads

Supported Operating Systems

OS ID Description
debian-13 Debian 13 (Trixie)
ubuntu-2404 Ubuntu 24.04 LTS

Lifecycle

Workstations go through the following states:

  1. Creating — Infrastructure is being provisioned
  2. Provisioning — Workstation Configurations are being applied
  3. Running — Ready to use
  4. Stopped — Halted but disk preserved
  5. Deleting — Being torn down

Labels

Labels are key-value pairs attached to workstations. They serve two purposes:

  • Configuration matching — WorkstationConfigs use label selectors to target workstations
  • Organization — Group and filter workstations by purpose, team, or project

Common Operations

# Create from manifest
wer apply -f workstation.yaml

# List workstations
wer get workstations

# Get details
wer get workstation my-dev-env

# Edit in default editor
wer edit workstation my-dev-env

# Delete
wer delete workstation my-dev-env