> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trainy.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Konduktor Config Yamls

> Schema and examples for your `~/.konduktor/config.yaml`

## Konduktor Config Yaml

The schema defaults to what is stored in `~/.konduktor/config.yaml`, but can be customized
with the environment variable `KONDUKTOR_CONFIG='/path/to/custom_konduktorconf.yaml'`

#### Schema

```
allowed_clouds:                   # optional, choose one
  - gs
  - s3

logs:                             # optional
  timeout: <int>                  # defaults to 60 (seconds)
  backend: {victoria, loki}       # choose one, defaults to victoria

tailscale:                        # optional
  secret_name: <string>

ssh:                              # optional
  enable: <boolean>               # defaults to false

serving:                          # optional
  endpoint: {trainy, direct}      # choose one, defaults to trainy

kubernetes:                       # optional
  allowed_contexts: [ <string> ]  # optional
  pod_config:
    spec:
      <dict>                      # MANY SPEC OPTIONS (see details below)
      imagePullSecrets:           # ex. private container registry
        - name: regcred
      volumes:                    # ex. volumes
        - name: shared-memory
          emptyDir:
            medium: "Memory"
            sizeLimit: <string>   # defaults to 4Gi; Format:{#Gi, #Mi, #Ki}
  jobset_config:                  # optional, JobSet-level metadata
    metadata:
      annotations:
        kueue.x-k8s.io/maxRunDurationSeconds: <string>  # ex. "86400" for 24 hours
      labels:
        <key>: <value>            # custom labels for all JobSets
  provision_timeout: <int>        # defaults to 300 (seconds)
```

#### Details

<a href="/setup#optional-setup-cloud-storage-credentials" target="_blank">`allowed_clouds`</a> - which storage backends Konduktor uses for uploads/downloads

<a href="/commands#stream-logs" target="_blank">`logs: timeout`</a> - timeout in seconds for querying logs via `konduktor logs`

<a href="/commands#stream-logs" target="_blank">`logs: backend`</a> - which log stack your cluster exposes

<a href="/tailscale" target="_blank">`tailscale: secret_name`</a> - Kubernetes secret containing your Tailscale auth key so Konduktor can auto-connect jobs/containers to your Tailnet

<a href="/tailscale" target="_blank">`ssh: enable`</a> - flips on SSH support (and key management) for launched pods so you can debug or port-forward into them

<a href="/deployments" target="_blank">`serving: endpoint`</a> - choice between direct IPs or `.trainy.us` endpoints for accesing deployments

<a href="/https://kubernetes.io/docs/reference/kubectl/generated/kubectl_config/kubectl_config_use-context/" target="_blank">`kubernetes: allowed_contexts`</a> - pins Konduktor to a specific kube context from `KUBECONFIG` i.e. `~/.kube/config`. Only use a 1 item list

<a href="https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#PodSpec" target="_blank">`kubernetes: pod_config: spec`</a> - raw PodSpec overrides merged into every JobSet pod (handy for imagePullSecrets, volumes, tolerations, etc.)

<a href="/setup#optional-setup-private-container-registry-credentials" target="_blank">`kubernetes: pod_config: spec: imagePullSecrets`</a> - supply registry creds for pulling private images

<a href="https://jobset.sigs.k8s.io/docs/reference/jobset.v1alpha2/#jobset-x-k8s-io-v1alpha2-JobSetSpec" target="_blank">`kubernetes: jobset_config`</a> - JobSet-level metadata (annotations and labels) merged into every JobSet. Useful for setting Kueue annotations like `maxRunDurationSeconds` as a default for all jobs. See the <a href="https://jobset.sigs.k8s.io/docs/" target="_blank">JobSet documentation</a> for more details on JobSet configuration

<a href="https://kueue.sigs.k8s.io/docs/tasks/run/jobsets/#c-set-the-maximum-execution-time-for-a-job" target="_blank">`kubernetes: jobset_config: metadata: annotations: kueue.x-k8s.io/maxRunDurationSeconds`</a> - maximum job runtime in seconds before Kueue terminates it (defaults to 604800 = 7 days). Can be overridden per-task via `resources.labels.maxRunDurationSeconds`

<a href="https://jobset.sigs.k8s.io/docs/reference/jobset.v1alpha2/#jobset-x-k8s-io-v1alpha2-ReplicatedJobStatus" target="_blank">`kubernetes: provision_timeout`</a> - timeout in seconds for pods/services/deployments to become ready before giving up (set -1 to disable)
