Configuration
These are the Helm chart’s configurable values. Override them with --set <key>=<value> or a values file (-f values.yaml) at install or upgrade time.
When installed through tt-operator,
the same keys apply under a tt-fabric-manager. prefix.
For bare-metal and Docker deployments the chart is not involved; edit the YAML config file directly, as described in the configuration reference.
Image
Key |
Default |
Description |
|---|---|---|
|
|
Image used by both the controller and the agent |
|
chart |
Image tag |
|
|
Image pull policy |
|
|
Pull secrets that already exist in the install namespace |
|
Override the chart name used in resource names |
|
|
Override the full release name used in resource names |
|
|
Create a ServiceAccount for the pods |
|
|
Name of the ServiceAccount to create or use |
Scaleout configs (FSDs)
Factory System Descriptors are supplied to both pods, mounted read-only at
/scaleout_configs, from one of two sources:
Key |
Default |
Description |
|---|---|---|
|
|
Host directory holding the FSDs. Ignored when |
|
|
OCI image whose filesystem provides the FSDs, mounted as a Kubernetes image volume instead of the host path, e.g. |
The image volume route requires the ImageVolume feature (beta and on by default
since Kubernetes 1.33). Pulls reuse the pod’s imagePullSecrets through the
service account.
Mounting the configs is not enough on its own — point
controller.factorySystemDescriptorSearchPath at a path inside the mount to
actually enable the FSD-backed features.
Controller
Key |
Default |
Description |
|---|---|---|
|
|
Replica count. The controller holds topology state in memory, so treat it as stateful and leave this at 1 |
|
unset |
Path searched for FSD textprotos, normally under |
|
unset |
Path to a Physical Grouping Descriptor, giving the mapper hardware-specific tray layout knowledge |
|
|
Shapes that |
|
|
Container resource requests and limits |
|
|
Readiness probe |
|
unset |
Liveness probe |
|
|
Node selector |
|
|
Affinity rules |
|
|
Tolerations |
|
|
Extra pod annotations |
|
|
Extra pod labels |
|
|
Pod security context |
|
|
Container security context |
The controller always serves gRPC on port 50052, and its heartbeat timings are fixed by the chart (60s interval, 90s timeout, 120s reconnect grace). These are not exposed as values; change them by templating your own ConfigMap if you need to.
Web UI
See Web UI & HTTP API for what these expose.
Key |
Default |
Description |
|---|---|---|
|
|
Serve the HTTP JSON API and web UI alongside gRPC |
|
|
Container port for the HTTP server |
|
|
Static UI assets inside the image. Set to |
Warning
The HTTP endpoint is unauthenticated. Only expose it on trusted networks.
Agent
The agent runs as a privileged DaemonSet, registering under the node name as its host ID and advertising its pod IP on port 50053.
Key |
Default |
Description |
|---|---|---|
|
|
Overrides the default node targeting (see below) |
|
Legacy node selector. Still honoured, but ANDs with whatever affinity is in effect |
|
|
|
Tolerations |
|
|
Container resource requests and limits |
|
|
Liveness probe |
|
|
Readiness probe |
|
Extra arguments appended to the agent command, e.g. |
|
|
Additional volumes and mounts |
|
|
|
Extra pod annotations |
|
|
Extra pod labels |
|
|
Pod security context |
|
|
Container security context. The container always runs privileged, as UMD needs PCI config space access |
By default the DaemonSet lands on every Tenstorrent-equipped node, matching the
union of tenstorrent.com/has-tt=true (applied manually, e.g. via tt-ansible)
and feature.node.kubernetes.io/pci-1200_1e52.present=true (applied
automatically by NFD). Setting agent.affinity replaces that whole expression.
See the configuration reference for
the flags you can pass through agent.extraArgs.
OpenTelemetry
Key |
Default |
Description |
|---|---|---|
|
|
Emit OTEL logs, traces, and metrics from the controller |
|
|
Reported service name |
|
|
Reported deployment environment |
|
|
Metric export interval |
Telemetry currently goes to stdout in OStream/OTLP-style format, so pair it with a sidecar Collector or stdout scraping until OTLP/gRPC export lands.
Ingress
Two independent Ingress objects, because the gRPC backend needs HTTP/2 while the
UI is plain HTTP. Both share the ingress controller’s external ports (80/443) and
are routed by Host header, so they need distinct hostnames.
Key |
Default |
Description |
|---|---|---|
|
|
Ingress for the external gRPC endpoint |
|
|
Hostname for the gRPC endpoint |
|
|
Ingress class |
|
|
Ingress annotations |
|
|
TLS configuration |
|
|
Ingress for the web UI. Requires |
|
|
Hostname for the web UI |
|
|
Ingress class for the UI |
|
|
Ingress annotations for the UI |
|
|
TLS configuration for the UI |
Enabling ingress also creates a Traefik ServersTransport with extended
timeouts (900s response header and idle timeouts), since a placement query on a
large fabric can run for minutes.
Example
controller:
factorySystemDescriptorSearchPath: /scaleout_configs/mysite/factory_system_descriptor.textproto
web:
enabled: true
ingress:
enabled: true
host: ttfm.example.com
ui:
enabled: true
host: ttfm-ui.example.com
Site-specific values files live alongside the chart, for example
values.exabox.yaml.