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:
- Creating — Infrastructure is being provisioned
- Provisioning — Workstation Configurations are being applied
- Running — Ready to use
- Stopped — Halted but disk preserved
- 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