# Tag Configuration

Sedai automatically infers resource tags and Kubernetes annotations. These can be used to optionally define [feature settings](#features) and [compute action](#compute-actions) controls as well as for configuring [Infrastructure as Code (IaC)](#iac-configurations) changes.

***

## Features

{% hint style="info" %}
When you define settings via tags, Sedai considers it an override on settings a resource would otherwise inherit from its parent (such as a group, account, or Kubernetes cluster).
{% endhint %}

Tags must include the prefix `settings.sedai.io` followed by a period (.); for example:

> `settings.sedai.io.optimization.setting.configMode`

For feature settings, the accepted keys are `DATA_PILOT`, `CO_PILOT` and `AUTO`.

For Kubernetes workloads, add the prefix `settings.sedai.io` followed by a slash (/); for example:

> `settings.sedai.io/optimization.setting.configMode`

{% hint style="info" %}
For feature settings, the accepted keys are `DATA_PILOT`, `CO_PILOT` and `AUTO`.
{% endhint %}

### Optimization

Learn more about [optimization settings](https://docs.sedai.io/get-started/platform/settings/features/optimization).

{% tabs %}
{% tab title="AWS ECS/Kubernetes" %}

<table data-full-width="false"><thead><tr><th>Setting</th><th width="267">Key</th><th>Accepted Key</th></tr></thead><tbody><tr><td>Optimization Setting</td><td><code>optimization.setting.configMode</code></td><td><code>DATA_PILOT</code>, <code>CO_PILOT</code>, <code>AUTO</code></td></tr><tr><td>Goal</td><td><code>optimization.optimizationFocus.focus</code></td><td><code>COST</code>, <code>DURATION</code>, <code>COST_AND_DURATION</code></td></tr><tr><td>If goal is to improve performance, the allowed percent increase impact on cost from memory</td><td><code>optimization.optimizationFocus.maxMemoryIncreasePct</code></td><td>Integer between 0-100</td></tr><tr><td>If goal is to improve performance, the allowed percent increase impact on cost from CPU</td><td><code>optimization.optimizationFocus.maxCPUIncreasePct</code></td><td>Integer between 0-100</td></tr><tr><td>If goal is to reduce cost, the allowed percent increase on latency</td><td><code>optimization.optimizationFocus.maxLatencyIncreasePct</code></td><td>Integer between 0-100</td></tr></tbody></table>
{% endtab %}

{% tab title="AWS Lambda" %}

<table data-full-width="false"><thead><tr><th>Setting</th><th width="267">Key</th><th>Accepted Key</th></tr></thead><tbody><tr><td>Memory optimization setting</td><td><code>optimization.setting.configMode</code></td><td><code>OFF</code>, <code>MANUAL</code>, <code>AUTO</code></td></tr><tr><td>Goal</td><td><code>optimization.optimizationFocus.focus</code></td><td><code>COST</code>, <code>DURATION</code>, <code>COST_AND_DURATION</code></td></tr><tr><td>If goal is to improve performance, the allowed percent increase impact on cost</td><td><code>optimization.optimizationFocus.autoOptMaxCostChangePct</code></td><td>Integer between 0-100</td></tr><tr><td>If goal is to reduce cost, the allowed percent increase on duration</td><td><code>optimization.optimizationFocus.autoOptMaxLatencyChangePct</code></td><td>Integer between 0-100</td></tr><tr><td>Autonomous Concurrency setting</td><td><code>optimization.concurrency.configMode</code></td><td><code>OFF</code>, <code>MANUAL</code>, <code>AUTO</code></td></tr></tbody></table>
{% endtab %}
{% endtabs %}

### Availability

Learn more about [availability settings](https://docs.sedai.io/get-started/platform/settings/features/availability).

| Key                                                                                 | Acceoted Value                   |
| ----------------------------------------------------------------------------------- | -------------------------------- |
| `availability.configMode`                                                           | `DATA_PILOT`, `CO_PILOT`, `AUTO` |
| <p><strong>AWS Lambda only</strong></p><p><code>telemetryLogging.enabled</code></p> | Boolean                          |

### Release Intelligence

Learn more about[ release intelligence settings](https://github.com/SedaiEngineering/sedai-public-docs/blob/main/platform/settings/features/broken-reference/README.md).

| Key                              | Acceoted Value  |
| -------------------------------- | --------------- |
| `releaseIntelligence.configMode` | `OFF`, `MANUAL` |

## Compute Actions

{% hint style="info" %}
The following settings only apply to AWS ECS/Fargate and Kubernetes stateless workloads.
{% endhint %}

Learn more about container and virtual machine [compute actions](https://docs.sedai.io/get-started/platform/settings/features/..#compute-actions).

<table data-full-width="false"><thead><tr><th width="260">Setting</th><th width="349">Key</th><th>Accepted Value</th></tr></thead><tbody><tr><td><strong>Vertical Scaling</strong></td><td><code>enableVerticalScaling.enabled</code></td><td>Boolean</td></tr><tr><td>↳ Minimum CPU in MiB (optional)</td><td><code>enableVerticalScaling.minCpu</code></td><td>Integer</td></tr><tr><td>↳ Minimum memory in GB (optional)</td><td><code>enableVerticalScaling.minMemory</code></td><td>Integer</td></tr><tr><td><strong>Horizontal Scaling</strong></td><td><code>enableHorizontalScaling.enabled</code></td><td>Boolean</td></tr><tr><td>↳ Minimum replica count<br>(optional) <em>Default is set to 2</em></td><td><code>enableHorizontalScaling.minReplicas</code></td><td>Integer</td></tr><tr><td>↳ Maximum replica count<br>(optional)</td><td><code>enableHorizontalScaling.maxReplicas</code></td><td>Integer</td></tr><tr><td>↳ <strong>ECS only:</strong> Replica increment count (optional)</td><td><code>enableHorizontalScaling.replicaMultiplier</code></td><td>Integer</td></tr><tr><td>↳ <strong>ECS only:</strong> Replica increment count (optional)</td><td><code>enableHorizontalScaling.replicaIncrement</code></td><td>Integer</td></tr><tr><td><strong>Auto Scaling</strong> (ECS only)</td><td><code>enableServiceAutoscalingConfiguration.enabled</code></td><td>Boolean</td></tr><tr><td><strong>Autonomous Action without Traffic</strong></td><td><code>autonomousActionWithoutTraffic.enabled</code></td><td>Boolean</td></tr><tr><td><strong>Pre-production/Production</strong></td><td><code>isProd.enabled</code></td><td>Boolean</td></tr></tbody></table>

**AWS Kubernetes**

<table data-full-width="false"><thead><tr><th width="260">Setting</th><th width="349">Key</th><th>Accepted Value</th></tr></thead><tbody><tr><td><strong>Vertical Scaling</strong></td><td><code>enableVerticalScaling.enabled</code></td><td>Boolean</td></tr><tr><td>↳ Minimum CPU in Cores (optional)</td><td><code>enableVerticalScaling.minPerContainerCpuInCores</code></td><td>Integer</td></tr><tr><td>↳ Minimum memory in Bytes (optional)</td><td><code>enableVerticalScaling.minPerContainerMemoryInBytes</code></td><td>Integer</td></tr><tr><td><strong>Horizontal Scaling</strong></td><td><code>enableHorizontalScaling.enabled</code></td><td>Boolean</td></tr><tr><td>↳ Minimum replica count<br>(optional) <em>Default is set to 2</em></td><td><code>enableHorizontalScaling.minReplicas</code></td><td>Integer</td></tr><tr><td>↳ Maximum replica count<br>(optional)</td><td><code>enableHorizontalScaling.maxReplicas</code></td><td>Integer</td></tr><tr><td>↳ Replica Multiplier (optional)</td><td><code>enableHorizontalScaling.replicaMultiplier</code></td><td>Integer</td></tr><tr><td><strong>Autonomous Action without Traffic</strong></td><td><code>autonomousActionWithoutTraffic.enabled</code></td><td>Boolean</td></tr><tr><td><strong>Pre-production/Production</strong></td><td><code>isProd.enabled</code></td><td>Boolean</td></tr></tbody></table>

***

## IaC Configurations

{% hint style="info" %}
Requires an IaC integration — [learn more](https://docs.sedai.io/get-started/platform/integrations/infrastructure-as-code-iac).
{% endhint %}

To apply IaC configurations, tags should be formatted with the following prefix:

> `configs:sedai.io:`

For Kubernetes workloads, annotations should be formatted with the prefix:

> `configs.sedai.io/`

For example:

<table><thead><tr><th width="248">Tag</th><th>Example</th></tr></thead><tbody><tr><td><code>default_repo_path</code></td><td><code>configs:sedai.io:default_repo_path = 412335</code></td></tr><tr><td><code>variables_file_path</code></td><td><code>configs:sedai.io:variables_file_path = terraform/prod/prod-sls-1.tfvars</code></td></tr></tbody></table>

{% hint style="info" %}
If you use GitLabs, the `variables_file_path` does not need to include the project name. \\

For example, if the project name is **A** and the variables file **C** is at location **A/B/C** then you only need to include **B/C** as the value for `variables_file_path`.
{% endhint %}

***

### AWS Lambda

<table><thead><tr><th width="277">Tag</th><th>Example</th></tr></thead><tbody><tr><td><code>memory_size</code><br>(MB)</td><td><code>configs:sedai:io:memory_size = var.memory_size["prod-sls-1"]</code></td></tr><tr><td><code>timeout</code><br>(seconds)</td><td><code>configs:sedai.io:timeout = var.timeout[“prod-sls-1”]</code></td></tr><tr><td><code>reserved_concurrency</code></td><td><code>configs:sedai.io:reserved_concurrency = var.reserved_concurrency[“prod-sls-1”]</code></td></tr><tr><td><code>provisioned_concurrency</code></td><td><code>configs:sedai.io:provisioned_concurrency = var.provisioned_concurrency[“prod-sls-1”]</code></td></tr></tbody></table>

### AWS ECS

<table><thead><tr><th width="347">Tag</th><th>Example</th></tr></thead><tbody><tr><td><code>task_cpu</code><br>(units)</td><td><code>configs:sedai.io:task_cpu = var.task_cpu[“prod-app-1”]</code></td></tr><tr><td><code>task_memory</code><br>(MiB)</td><td><code>configs:sedai.io:task_memory = var.task_memory[“prod-app-1”]</code></td></tr><tr><td><code>desired_count</code></td><td><code>configs:sedai.io:desired_count = var.desired_count[“prod-app-1”]</code></td></tr><tr><td><code>container.soft_memory</code><br>(MiB)</td><td><code>configs:sedai.io:container.soft_memory = var.soft_memory[“prod-app-1”]</code></td></tr><tr><td><code>container.hard_memory</code><br>(MiB)</td><td><code>configs:sedai.io:container.hard_memory = var.hard_memory[“prod-app-1”]</code></td></tr><tr><td><code>container.soft_cpu</code><br>(units)</td><td><code>configs:sedai.io:container.soft_cpu = var.memosoft_cpury_size[“prod-app-1”]</code></td></tr><tr><td><code>autoscaler_config.as_min_task</code></td><td><code>configs:sedai.io:autoscaler_config.as_min_task = var.as_min_task[“prod-app-1”]</code></td></tr><tr><td><code>autoscaler_config.as_max_task</code></td><td><code>configs:sedai.io:autoscaler_config.as_max_task = var.as_max_task[“prod-app-1”]</code></td></tr><tr><td><code>autoscaler_config.metric</code></td><td><code>configs:sedai.io:autoscaler_config.metric = var.metric[“prod-app-1”]</code></td></tr><tr><td><code>autoscaler_config.target_value</code></td><td><code>configs:sedai.io:autoscaler_config.target_value = var.target_value[“prod-app-1”]</code></td></tr></tbody></table>

### Kubernetes

<table><thead><tr><th width="291">Annotation</th><th>Example</th></tr></thead><tbody><tr><td><code>replica_count</code></td><td><code>configs.sedai.io/container.app-1.replica_count = var.replica_count[“prod-app-1”]</code></td></tr><tr><td><code>container.&#x3C;container_name>.cpu_request</code></td><td><code>configs.sedai.io/container.app-1.cpu_request = var.cpu_request[“prod-app-1”]</code></td></tr><tr><td><code>container.&#x3C;container_name>.cpu_limit</code></td><td><code>configs.sedai.io/container.app-1.cpu_limit = var.cpu_limit[“prod-app-1”]</code></td></tr><tr><td><code>container.&#x3C;container_name>.memory_request</code></td><td><code>configs.sedai.io/container.app-1.memory_request = var.memory_request[“prod-app-1”]</code></td></tr><tr><td><code>container.&#x3C;container_name>.memory_limit</code></td><td><code>configs.sedai.io/container.app-1.memory_limit = var.memory_limit[“prod-app-1”]</code></td></tr><tr><td><code>hpa_min_count</code></td><td><code>configs.sedai.io/hpa_min_count = var.hpa_min_count[“prod-app-1”]</code></td></tr><tr><td><code>hpa_max_count</code></td><td><code>configs.sedai.io/hpa_max_count = var.hpa_max_count[“prod-app-1”]</code></td></tr><tr><td><code>hpa_metric</code></td><td><code>configs.sedai.io/hpa_metric = var.hpa_metric[“prod-app-1”]</code></td></tr><tr><td><code>hpa_target_value</code></td><td><code>configs.sedai.io/hpa_target_value = var.hpa_target_value[“prod-app-1”]</code></td></tr></tbody></table>
