DirectorySecurity AdvisoriesPricing
Sign in
Directory
alloy logoHELM

alloy

Helm chart
Last changed
Request a free trial

Contact our team to test out this Helm chart and related images for free. Please also indicate any other images you would like to evaluate.

Overview
Chart tags
Default values
Chart metadata
Images

Tag:
Compare:

1
# -- Overrides the chart's name. Used to change the infix in the resource names.
2
nameOverride: null
3
# -- Overrides the chart's namespace.
4
namespaceOverride: null
5
# -- Overrides the chart's computed fullname. Used to change the full prefix of
6
# resource names.
7
fullnameOverride: null
8
## Global properties for image pulling override the values defined under `image.registry` and `configReloader.image.registry`.
9
## If you want to override only one image registry, use the specific fields but if you want to override them all, use `global.image.registry`
10
global:
11
image:
12
# -- Global image registry to use if it needs to be overridden for some specific use cases (e.g local registries, custom images, ...)
13
registry: ""
14
# -- Optional set of global image pull secrets.
15
pullSecrets: []
16
# -- Global image pull policy to apply to all containers. Overrides `image.pullPolicy` and `configReloader.image.pullPolicy`.
17
pullPolicy: ""
18
# -- Security context to apply to the Grafana Alloy pod.
19
podSecurityContext: {}
20
crds:
21
# -- Whether to install CRDs for monitoring.
22
create: true
23
## Various Alloy settings. For backwards compatibility with the grafana-agent
24
## chart, this field may also be called "agent". Naming this field "agent" is
25
## deprecated and will be removed in a future release.
26
alloy:
27
configMap:
28
# -- Create a new ConfigMap for the config file.
29
create: true
30
# -- Content to assign to the new ConfigMap. This is passed into `tpl` allowing for templating from values.
31
content: ''
32
# -- Name of existing ConfigMap to use. Used when create is false.
33
name: null
34
# -- Key in ConfigMap to get config from.
35
key: null
36
clustering:
37
# -- Deploy Alloy in a cluster to allow for load distribution.
38
enabled: false
39
# -- Name for the Alloy cluster. Used for differentiating between clusters.
40
name: ""
41
# -- Name for the port used for clustering, useful if running inside an Istio Mesh
42
portName: http
43
# -- Minimum stability level of components and behavior to enable. Must be
44
# one of "experimental", "public-preview", or "generally-available".
45
stabilityLevel: "generally-available"
46
# -- Path to where Grafana Alloy stores data (for example, the Write-Ahead Log).
47
# By default, data is lost between reboots.
48
storagePath: /tmp/alloy
49
# -- Enables Grafana Alloy container's http server port.
50
enableHttpServerPort: true
51
# -- Address to listen for traffic on. 0.0.0.0 exposes the UI to other
52
# containers.
53
listenAddr: 0.0.0.0
54
# -- Port to listen for traffic on.
55
listenPort: 12345
56
# -- Scheme is needed for readiness probes. If enabling tls in your configs, set to "HTTPS"
57
listenScheme: HTTP
58
# -- Initial delay for readiness probe.
59
initialDelaySeconds: 10
60
# -- Timeout for readiness probe.
61
timeoutSeconds: 1
62
# -- Base path where the UI is exposed.
63
uiPathPrefix: /
64
# -- Enables sending Grafana Labs anonymous usage stats to help improve Grafana
65
# Alloy.
66
enableReporting: true
67
# -- Extra environment variables to pass to the Alloy container.
68
extraEnv: []
69
# -- Maps all the keys on a ConfigMap or Secret as environment variables. https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.24/#envfromsource-v1-core
70
envFrom: []
71
# -- Override the entrypoint command for the Alloy container. When set, this
72
# replaces the image's default entrypoint (the chart-provided `args` are still
73
# passed). Useful on Windows where the binary lives at a different path, for
74
# example `["C:\\Program Files\\GrafanaLabs\\Alloy\\alloy.exe"]`. Leave empty
75
# to use the image's default entrypoint.
76
command: []
77
# -- Extra args to pass to `alloy run`: https://grafana.com/docs/alloy/latest/reference/cli/run/
78
extraArgs: []
79
# -- Extra ports to expose on the Alloy container.
80
# If `service.type` is `NodePort`, each item may set `nodePort` to choose the Service NodePort for that port.
81
extraPorts: []
82
# - name: "faro"
83
# nodePort: 31129
84
# port: 12347
85
# targetPort: 12347
86
# protocol: "TCP"
87
# appProtocol: "h2c"
88
89
# -- Host aliases to add to the Alloy container.
90
hostAliases: []
91
# - ip: "20.21.22.23"
92
# hostnames:
93
# - "company.grafana.net"
94
95
mounts:
96
# -- Mount /var/log from the host into the container for log collection.
97
varlog: false
98
# -- Mount /var/lib/docker/containers from the host into the container for log
99
# collection.
100
dockercontainers: false
101
# -- Extra volume mounts to add into the Grafana Alloy container. Does not
102
# affect the watch container.
103
extra: []
104
# -- Security context to apply to the Grafana Alloy container.
105
securityContext: {}
106
# -- Resource requests and limits to apply to the Grafana Alloy container.
107
resources: {}
108
# -- Resize policy for the Grafana Alloy container. Controls whether an
109
# in-place resize of CPU or memory restarts the container.
110
resizePolicy: []
111
# - resourceName: cpu
112
# restartPolicy: NotRequired
113
# - resourceName: memory
114
# restartPolicy: RestartContainer
115
116
# -- Set lifecycle hooks for the Grafana Alloy container.
117
lifecycle: {}
118
# preStop:
119
# exec:
120
# command:
121
# - /bin/sleep
122
# - "10"
123
124
# -- Set livenessProbe for the Grafana Alloy container.
125
livenessProbe: {}
126
image:
127
# -- Grafana Alloy image registry (defaults to docker.io)
128
registry: cgr.dev
129
# -- Grafana Alloy image repository.
130
repository: chainguard-private/grafana-alloy
131
# -- (string) Grafana Alloy image tag. When empty, the Chart's appVersion is
132
# used.
133
tag: 1.20.1-r3
134
# -- Grafana Alloy image's SHA256 digest (either in format "sha256:XYZ" or "XYZ"). When set, will override `image.tag`.
135
digest: sha256:2e127ce40e03a157b7dd40a218e4fd6a46e2e85cd7ef4b0d147567002251db1e
136
# -- Grafana Alloy image pull policy.
137
pullPolicy: IfNotPresent
138
# -- Optional set of image pull secrets.
139
pullSecrets: []
140
rbac:
141
# -- Whether to create RBAC resources for Alloy.
142
create: true
143
# -- If set, only create Roles and RoleBindings in the given list of namespaces, rather than ClusterRoles and
144
# ClusterRoleBindings. If not using ClusterRoles, bear in mind that Alloy will not be able to discover cluster-scoped
145
# resources such as Nodes.
146
namespaces: []
147
# -- The rules to create for the ClusterRole or Role objects.
148
rules:
149
# -- Rules required for the `discovery.kubernetes` component.
150
- apiGroups: ["", "discovery.k8s.io", "networking.k8s.io"]
151
resources: ["endpoints", "endpointslices", "ingresses", "pods", "services"]
152
verbs: ["get", "list", "watch"]
153
# -- Rules required for the `loki.source.kubernetes` component.
154
- apiGroups: [""]
155
resources: ["pods", "pods/log", "namespaces"]
156
verbs: ["get", "list", "watch"]
157
# -- Rules required for the `loki.source.podlogs` component.
158
- apiGroups: ["monitoring.grafana.com"]
159
resources: ["podlogs"]
160
verbs: ["get", "list", "watch"]
161
# -- Rules required for the `mimir.rules.kubernetes` component.
162
- apiGroups: ["monitoring.coreos.com"]
163
resources: ["prometheusrules"]
164
verbs: ["get", "list", "watch"]
165
# -- Rules required for the `mimir.alerts.kubernetes` component.
166
- apiGroups: ["monitoring.coreos.com"]
167
resources: ["alertmanagerconfigs"]
168
verbs: ["get", "list", "watch"]
169
# -- Rules required for the `prometheus.operator.*` components.
170
- apiGroups: ["monitoring.coreos.com"]
171
resources: ["podmonitors", "servicemonitors", "probes", "scrapeconfigs"]
172
verbs: ["get", "list", "watch"]
173
# -- Rules required for the `loki.source.kubernetes_events` component.
174
- apiGroups: [""]
175
resources: ["events"]
176
verbs: ["get", "list", "watch"]
177
# -- Rules required for the `remote.kubernetes.*` components.
178
- apiGroups: [""]
179
resources: ["configmaps", "secrets"]
180
verbs: ["get", "list", "watch"]
181
# -- Rules required for the `otelcol.processor.k8sattributes` component.
182
- apiGroups: ["apps", "extensions"]
183
resources: ["replicasets"]
184
verbs: ["get", "list", "watch"]
185
# -- The rules to create for the ClusterRole objects.
186
clusterRules:
187
# -- Rules required for the Nodes role in the `discovery.kubernetes` component.
188
- apiGroups: [""]
189
resources: ["nodes"]
190
verbs: ["get", "list", "watch"]
191
# -- Rules required for the `discovery.kubelet` component.
192
- apiGroups: [""]
193
resources: ["nodes/pods"]
194
verbs: ["get", "list", "watch"]
195
# -- Rules required accessing metric endpoints on the Node (e.g. Kubelet, cAdvisor, etc...).
196
- apiGroups: [""]
197
resources: ["nodes/metrics"]
198
verbs: ["get", "list", "watch"]
199
# -- Rules required for accessing metrics endpoint.
200
- nonResourceURLs: ["/metrics"]
201
verbs: ["get"]
202
serviceAccount:
203
# -- Whether to create a service account for the Grafana Alloy deployment.
204
create: true
205
# -- Additional labels to add to the created service account.
206
additionalLabels: {}
207
# -- Annotations to add to the created service account.
208
annotations: {}
209
# -- The name of the existing service account to use when
210
# serviceAccount.create is false.
211
name: null
212
# Whether the Alloy pod should automatically mount the service account token.
213
automountServiceAccountToken: true
214
# Options for the extra controller used for config reloading.
215
configReloader:
216
# -- Enables automatically reloading when the Alloy config changes.
217
enabled: true
218
image:
219
# -- Config reloader image registry (defaults to docker.io)
220
registry: cgr.dev
221
# -- Repository to get config reloader image from.
222
repository: chainguard-private/prometheus-config-reloader
223
# -- Tag of image to use for config reloading.
224
tag: 0.94.1-r4
225
# -- SHA256 digest of image to use for config reloading (either in format "sha256:XYZ" or "XYZ"). When set, will override `configReloader.image.tag`
226
digest: sha256:d46000d7187f3eb1f488d23f305846bc773f711da568dbfb1e620198f5cfafd8
227
# -- Config reloader image pull policy.
228
pullPolicy: IfNotPresent
229
# -- Override the args passed to the container.
230
customArgs: []
231
# -- Resource requests and limits to apply to the config reloader container.
232
resources:
233
requests:
234
cpu: "10m"
235
memory: "50Mi"
236
# -- Resize policy for the config reloader container. Controls whether an
237
# in-place resize of CPU or memory restarts the container.
238
resizePolicy: []
239
# -- Security context to apply to the Grafana configReloader container.
240
securityContext:
241
allowPrivilegeEscalation: false
242
readOnlyRootFilesystem: true
243
capabilities:
244
drop:
245
- ALL
246
runAsNonRoot: true
247
runAsUser: 65534
248
runAsGroup: 65534
249
seccompProfile:
250
type: RuntimeDefault
251
controller:
252
# -- Type of controller to use for deploying Grafana Alloy in the cluster.
253
# Must be one of 'daemonset', 'deployment', or 'statefulset'.
254
type: 'daemonset'
255
# -- Number of pods to deploy. Ignored when controller.type is 'daemonset'.
256
replicas: 1
257
# -- Extra labels to add to the controller.
258
extraLabels: {}
259
# -- Annotations to add to controller.
260
extraAnnotations: {}
261
# -- Whether to deploy pods in parallel. Only used when controller.type is
262
# 'statefulset'.
263
parallelRollout: true
264
# -- How many additional seconds to wait before considering a pod ready.
265
minReadySeconds: 10
266
# -- Configures Pods to use the host network. When set to true, the ports that will be used must be specified.
267
hostNetwork: false
268
# -- Configures Pods to use the host PID namespace.
269
hostPID: false
270
# -- Configures the DNS policy for the pod. https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-s-dns-policy
271
dnsPolicy: ClusterFirst
272
# -- Configures the DNS config for the pod. https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-dns-config
273
dnsConfig: {}
274
# -- Termination grace period in seconds for the Grafana Alloy pods.
275
# The default value used by Kubernetes if unspecifed is 30 seconds.
276
terminationGracePeriodSeconds: null
277
# -- The maximum number of revisions that will be maintained in the Controllers's revision history. The history consists of all revisions not represented by a currently applied reversion.
278
revisionHistoryLimit: 10
279
# -- Update strategy for updating deployed Pods.
280
updateStrategy: {}
281
# -- nodeSelector to apply to Grafana Alloy pods.
282
nodeSelector: {}
283
# -- Tolerations to apply to Grafana Alloy pods.
284
tolerations: []
285
# -- Topology Spread Constraints to apply to Grafana Alloy pods.
286
topologySpreadConstraints: []
287
# -- priorityClassName to apply to Grafana Alloy pods.
288
priorityClassName: ''
289
# -- Extra pod annotations to add.
290
podAnnotations: {}
291
# -- Extra pod labels to add.
292
podLabels: {}
293
# -- PodDisruptionBudget configuration.
294
podDisruptionBudget:
295
# -- Whether to create a PodDisruptionBudget for the controller.
296
enabled: false
297
# -- Minimum number of pods that must be available during a disruption.
298
# Note: Only one of minAvailable or maxUnavailable should be set.
299
minAvailable: null
300
# -- Maximum number of pods that can be unavailable during a disruption.
301
# Note: Only one of minAvailable or maxUnavailable should be set.
302
maxUnavailable: null
303
# -- Whether to enable automatic deletion of stale PVCs due to a scale down operation, when controller.type is 'statefulset'.
304
enableStatefulSetAutoDeletePVC: false
305
autoscaling:
306
# -- Creates a HorizontalPodAutoscaler for controller type deployment.
307
# Deprecated: Please use controller.autoscaling.horizontal instead
308
enabled: false
309
# -- The lower limit for the number of replicas to which the autoscaler can scale down.
310
minReplicas: 1
311
# -- The upper limit for the number of replicas to which the autoscaler can scale up.
312
maxReplicas: 5
313
# -- Average CPU utilization across all relevant pods, a percentage of the requested value of the resource for the pods. Setting `targetCPUUtilizationPercentage` to 0 will disable CPU scaling.
314
targetCPUUtilizationPercentage: 0
315
# -- Average Memory utilization across all relevant pods, a percentage of the requested value of the resource for the pods. Setting `targetMemoryUtilizationPercentage` to 0 will disable Memory scaling.
316
targetMemoryUtilizationPercentage: 80
317
scaleDown:
318
# -- List of policies to determine the scale-down behavior.
319
policies: []
320
# - type: Pods
321
# value: 4
322
# periodSeconds: 60
323
# -- Determines which of the provided scaling-down policies to apply if multiple are specified.
324
selectPolicy: Max
325
# -- The duration that the autoscaling mechanism should look back on to make decisions about scaling down.
326
stabilizationWindowSeconds: 300
327
scaleUp:
328
# -- List of policies to determine the scale-up behavior.
329
policies: []
330
# - type: Pods
331
# value: 4
332
# periodSeconds: 60
333
# -- Determines which of the provided scaling-up policies to apply if multiple are specified.
334
selectPolicy: Max
335
# -- The duration that the autoscaling mechanism should look back on to make decisions about scaling up.
336
stabilizationWindowSeconds: 0
337
# -- Configures the Horizontal Pod Autoscaler for the controller.
338
horizontal:
339
# -- Enables the Horizontal Pod Autoscaler for the controller.
340
enabled: false
341
# -- When true, the chart omits `spec.replicas` from the workload AND does NOT
342
# render its own HorizontalPodAutoscaler. Use this when an external controller
343
# (e.g. KEDA, a hand-written HPA, or another scaler) owns replicas for the Alloy
344
# workload. Mutually exclusive with `horizontal.enabled`. When set, all other
345
# `controller.autoscaling.horizontal.*` fields are ignored.
346
#
347
# Upgrade note: switching this from `false` to `true` on an existing release
348
# triggers a one-time single-cycle dip to 1 replica on the next `helm upgrade`
349
# (Helm removes the `replicas` field via `{"spec":{"replicas":null}}`, which
350
# Kubernetes interprets as "reset to default"). The external HPA corrects this
351
# within its next polling interval; users with `minReplicaCount > 1` are
352
# restored within ~30s under KEDA defaults. Plan upgrades accordingly.
353
externalHPA: false
354
# -- The lower limit for the number of replicas to which the autoscaler can scale down.
355
minReplicas: 1
356
# -- The upper limit for the number of replicas to which the autoscaler can scale up.
357
maxReplicas: 5
358
# -- Average CPU utilization across all relevant pods, a percentage of the requested value of the resource for the pods. Setting `targetCPUUtilizationPercentage` to 0 will disable CPU scaling.
359
targetCPUUtilizationPercentage: 0
360
# -- Average Memory utilization across all relevant pods, a percentage of the requested value of the resource for the pods. Setting `targetMemoryUtilizationPercentage` to 0 will disable Memory scaling.
361
targetMemoryUtilizationPercentage: 80
362
scaleDown:
363
# -- List of policies to determine the scale-down behavior.
364
policies: []
365
# - type: Pods
366
# value: 4
367
# periodSeconds: 60
368
# -- Determines which of the provided scaling-down policies to apply if multiple are specified.
369
selectPolicy: Max
370
# -- The duration that the autoscaling mechanism should look back on to make decisions about scaling down.
371
stabilizationWindowSeconds: 300
372
scaleUp:
373
# -- List of policies to determine the scale-up behavior.
374
policies: []
375
# - type: Pods
376
# value: 4
377
# periodSeconds: 60
378
# -- Determines which of the provided scaling-up policies to apply if multiple are specified.
379
selectPolicy: Max
380
# -- The duration that the autoscaling mechanism should look back on to make decisions about scaling up.
381
stabilizationWindowSeconds: 0
382
# -- Configures the Vertical Pod Autoscaler for the controller.
383
vertical:
384
# -- Enables the Vertical Pod Autoscaler for the controller.
385
enabled: false
386
# -- List of recommenders to use for the Vertical Pod Autoscaler.
387
# Recommenders are responsible for generating recommendation for the object.
388
# List should be empty (then the default recommender will generate the recommendation)
389
# or contain exactly one recommender.
390
recommenders: []
391
# recommenders:
392
# - name: custom-recommender-performance
393
394
# -- Configures the resource policy for the Vertical Pod Autoscaler.
395
resourcePolicy:
396
# -- Configures the container policies for the Vertical Pod Autoscaler.
397
containerPolicies:
398
- containerName: alloy
399
# -- The controlled resources for the Vertical Pod Autoscaler.
400
controlledResources:
401
- cpu
402
- memory
403
# -- The controlled values for the Vertical Pod Autoscaler. Needs to be either RequestsOnly or RequestsAndLimits.
404
controlledValues: "RequestsAndLimits"
405
# -- The maximum allowed values for the pods.
406
maxAllowed: {}
407
# cpu: 200m
408
# memory: 100Mi
409
# -- Defines the min allowed resources for the pod
410
minAllowed: {}
411
# cpu: 200m
412
# memory: 100Mi
413
# -- Configures the update policy for the Vertical Pod Autoscaler.
414
updatePolicy:
415
# -- Specifies minimal number of replicas which need to be alive for VPA Updater to attempt pod eviction
416
# minReplicas: 1
417
# -- Specifies whether recommended updates are applied when a Pod is started and whether recommended updates
418
# are applied during the life of a Pod. Possible values are "Off", "Initial", "Recreate", and "Auto".
419
# updateMode: Auto
420
# -- Affinity configuration for pods.
421
affinity: {}
422
volumes:
423
# -- Extra volumes to add to the Grafana Alloy pod.
424
extra: []
425
# -- volumeClaimTemplates to add when controller.type is 'statefulset'.
426
volumeClaimTemplates: []
427
## -- Additional init containers to run.
428
## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
429
##
430
initContainers: []
431
# -- Additional containers to run alongside the Alloy container and initContainers.
432
extraContainers: []
433
networkPolicy:
434
enabled: false
435
flavor: kubernetes
436
policyTypes:
437
- Ingress
438
- Egress
439
# Default allow all traffic because Alloy is so configurable
440
# It is recommended to change this before deploying to production
441
# To disable each policyType, set value to `null`
442
ingress:
443
- {}
444
egress:
445
- {}
446
service:
447
# -- Creates a Service for the controller's pods.
448
enabled: true
449
# -- Service type
450
type: ClusterIP
451
# -- NodePort port. Only takes effect when `service.type: NodePort`
452
nodePort: 31128
453
# -- Cluster IP, can be set to None, empty "" or an IP address
454
clusterIP: ''
455
# -- Value for internal traffic policy. 'Cluster' or 'Local'
456
internalTrafficPolicy: Cluster
457
# -- Value for external traffic policy. 'Cluster' or 'Local'
458
externalTrafficPolicy: Cluster
459
# -- Value for traffic distribution. 'PreferSameNode' or 'PreferSameZone' (k8s >= 1.34)
460
trafficDistribution: ""
461
annotations: {}
462
# cloud.google.com/load-balancer-type: Internal
463
serviceMonitor:
464
enabled: false
465
# -- Additional labels for the service monitor.
466
additionalLabels: {}
467
# -- Scrape interval. If not set, the Prometheus default scrape interval is used.
468
interval: ""
469
# -- MetricRelabelConfigs to apply to samples after scraping, but before ingestion.
470
# ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig
471
metricRelabelings: []
472
# - action: keep
473
# regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'
474
# sourceLabels: [__name__]
475
476
# -- Customize tls parameters for the service monitor
477
tlsConfig: {}
478
# -- RelabelConfigs to apply to samples before scraping
479
# ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig
480
relabelings: []
481
# - sourceLabels: [__meta_kubernetes_pod_node_name]
482
# separator: ;
483
# regex: ^(.*)$
484
# targetLabel: nodename
485
# replacement: $1
486
# action: replace
487
ingress:
488
# -- Enables ingress for Alloy (Faro port)
489
enabled: false
490
# For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName
491
# See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress
492
# ingressClassName: nginx
493
# Values can be templated
494
annotations: {}
495
# kubernetes.io/ingress.class: nginx
496
# kubernetes.io/tls-acme: "true"
497
labels: {}
498
path: /
499
faroPort: 12347
500
# pathType is only for k8s >= 1.1=
501
pathType: Prefix
502
hosts:
503
- chart-example.local
504
## Extra paths to prepend to every host configuration. This is useful when working with annotation based services.
505
extraPaths: []
506
# - path: /*
507
# backend:
508
# serviceName: ssl-redirect
509
# servicePort: use-annotation
510
## Or for k8s > 1.19
511
# - path: /*
512
# pathType: Prefix
513
# backend:
514
# service:
515
# name: ssl-redirect
516
# port:
517
# name: use-annotation
518
519
tls: []
520
# - secretName: chart-example-tls
521
# hosts:
522
# - chart-example.local
523
# -- Extra k8s manifests to deploy
524
extraObjects: []
525
# - apiVersion: v1
526
# kind: Secret
527
# metadata:
528
# name: grafana-cloud
529
# stringData:
530
# PROMETHEUS_HOST: 'https://prometheus-us-central1.grafana.net/api/prom/push'
531
# PROMETHEUS_USERNAME: '123456'
532

The trusted source for open source

Talk to an expert
PrivacyTerms

Product

Chainguard ContainersChainguard LibrariesChainguard VMsChainguard OS PackagesChainguard ActionsChainguard Agent SkillsIntegrationsPricing
© 2026 Chainguard, Inc. All Rights Reserved.
Chainguard® and the Chainguard logo are registered trademarks of Chainguard, Inc. in the United States and/or other countries.
The other respective trademarks mentioned on this page are owned by the respective companies and use of them does not imply any affiliation or endorsement.