Configuration

werkr uses Workstation Configurations to define what tools, runtimes, and settings should be applied to workstations. Configurations use label selectors to target specific workstations, enabling centralized management with local flexibility.

How It Works

A WorkstationConfig defines a set of provisioning steps (tools to install, files to create, scripts to run). It uses a selector to match workstations by their labels. When a workstation matches, the configuration is applied during provisioning.

Example

# config-k8s.yaml
apiVersion: werkr.dev/v1alpha1
kind: WorkstationConfig
metadata:
  name: k8s-tools
spec:
  selector:
    matchLabels:
      devtype: k8s
  devtools:
    asdf:
      plugins:
        - name: kubectl
          version: 1.31.4
        - name: helm
          version: 3.16.4
        - name: k9s
          version: 0.32.7

This configuration will be applied to any workstation with the label devtype: k8s.

Configuration Hierarchy

Multiple configurations can match a single workstation. werkr merges them in order, allowing you to layer organizational defaults with team-specific and project-specific customizations:

  1. Org-level — Base tools and policies for everyone
  2. Team-level — Additional tools for specific teams
  3. Project-level — Project-specific dependencies

CLI Configuration

werkr stores its own settings locally. Use wer configure to manage them:

# Set the path to a binary used by werkr
wer configure path <tool> <path>

Next Steps

Explore the full WorkstationConfig reference for all available configuration options.