# Agent Configuration Parameters

The agent configuration parameters specify the characteristics and attributes of your Hybrid Deployment Agent. These parameters enable you to customize the Hybrid Deployment Agent specifically for your environment. While the default settings support most use cases, you can customize these parameters to meet additional configuration requirements.

****Agent configuration parameters for Docker****

## Agent configuration parameters for Docker

In Docker deployments, the only mandatory configuration parameter for the Hybrid Deployment Agent is [`token`](#token). You can find the agent token on the Fivetran dashboard when [creating the agent](/docs/core-concepts/deployment-models/hybrid-deployment/setup-guide-docker.md#createagent). The token is unique to each agent and establishes a secure connection between the agent and the Fivetran cloud. All other parameters are optional, and the default values are sufficient for most environments.

If you want to customize the configuration parameters, do one of the following:

- (Recommended) Define the parameters in your `config.json` file and [start the agent](/docs/core-concepts/deployment-models/hybrid-deployment/setup-guide-docker.md#startagent) using the updated file
- Define the parameters as environment variables when [starting the agent](/docs/core-concepts/deployment-models/hybrid-deployment/setup-guide-docker.md#startagent)

> **Note:** If you define the same parameter in the `config.json` file and as an environment variable, the environment variable takes precedence and overrides the value in the `config.json` file.

The following is an example of a basic agent configuration in the `config.json` file:

```json
{
  "token": "your_agent_token",
  "container_env_type": "docker",
  "host_persistent_storage_mount_path": "~/fivetran/data",
  "host_selinux_enabled": false,
  "save_controller_logs_to_file": true
}

```

---

## Parameter descriptions

We have divided the configuration parameters into 4 categories. Expand the following sections for the configuration parameters in each category and their descriptions:

**General configuration**

### token

**Description**: Specifies the Hybrid Deployment Agent token provided in the Fivetran dashboard when registering your agent. The agent uses the token to authenticate and connect to the Fivetran cloud.

**Default value**: `your-agent-token`

---

### container_env_type

**Description**: Specifies the container runtime for agent containers.

**Default value**: `docker`

---

### controller_disk_space_abort_threshold_bytes

**Description**: Sets the minimum free disk space (in bytes) at which the agent aborts operations. You can raise this threshold to stop the agent earlier in low-disk scenarios.

**Default value**: `102400`

---

### controller_disk_space_threshold_bytes

**Description**: Sets the minimum free disk space (in bytes) that triggers a dashboard warning. Adjust this threshold to receive earlier alerts before disk space becomes critical.

**Default value**: `4294967296`

---

### docker_pull_retries

**Description**: Sets the number of retry attempts when pulling container images. Increase this value in environments with unreliable connectivity to improve deployment resilience.

**Default value**: `10`

---

### docker_pull_timeout_seconds

**Description**: Sets the timeout (in seconds) for pulling container images. Increase this value on slow networks to prevent premature pull failures.

**Default value**: `300`

---

### host_persistent_storage_mount_path

**Description**: Defines the host path for persistent pipeline data and metadata. Point this to reliable, performant storage with enough capacity to hold the full dataset during the [initial sync](/docs/getting-started/glossary.md#initialsync).

**Default value**: `~/fivetran/data`

> **Note:** Each Hybrid Deployment Agent must use a unique persistent storage location. _Do not_ share the same storage path between multiple agents, as this can cause data conflicts and operational issues.

---

### host_persistent_temp_storage_mount_path

**Description**: This is an optional parameter that defines a host path for temporary pipeline data. Set this path to a spacious storage (for example, `~/fivetran/tmp`) for syncs with a large dataset that needs extra disk space.

**Default value**: null (no value)

---

### host_selinux_enabled

**Description**: Indicates whether the agent container host enforces SELinux policies. Set to `true` when SELinux is enabled so the agent can operate under SELinux security policies.

**Default value**: `false`

**Possible values**: `true`, `false`

---

### poll_container_status_interval_seconds

**Description**: Sets the interval (in seconds) for polling container status. Increase the interval to reduce overhead or decrease it to get more frequent status updates.

**Default value**: `10`

---

### profile

**Description**: Specifies the agent profile that matches the container runtime.

**Default value**: `docker`

**Performance**

### agent_memory_limit_bytes

**Description**: Caps the Hybrid Deployment Agent memory in bytes (B). Adjust this value to match your workload needs. Increase it when you run a high number of concurrent pipeline jobs per agent. **Default value**: `2147483648`

---

### container_cpu_limit

**Description**: Caps the CPU resources globally for all Hybrid Deployment job containers, including the Agent container. The default value, `0`, does not impose a CPU limit. Set a value to prevent the container from consuming excessive CPU resources or to align with host quotas.

**Default value**: `0`

---

### container_cpu_limit_integrations_your-integration-id

**Description**: Caps the CPU resources for a specific integration job. The default value, `0`, does not impose a CPU limit. Increase this value if you want to run multiple integration jobs concurrently and prioritize one job over others.

**Default value**: `0`

> **Note:** Some existing agents use [`container_cpu_limit.integrations.your-integration-id`](#containercpulimitintegrationsyourintegrationid) instead of `container_cpu_limit_integrations_your-integration-id` to control this setting. For new agents, _do not_ use `container_cpu_limit.integrations.your-integration-id`, as we have discontinued it.

---

### container_memory_limit_gigabytes

**Description**: Caps the container memory in gigabytes (GB), globally for all Hybrid Deployment job containers, including the Agent container. Adjust this value to match workload needs. Increase it for large data loads or memory-intensive operations to reduce out-of-memory failures.

**Default value**: `4`

---

### container_memory_limit_gigabytes_integrations_your-integration-id

**Description**: Caps container memory (in GB) for a specific integration job. Increase this value if you want to run multiple integration jobs concurrently and prioritize one job over others.

**Default value**: `4`

> **Note:** Some existing agents use [`container_memory_limit_gigabytes.integrations.your-integration-id`](#containermemorylimitgigabytesintegrationsyourintegrationid) instead of `container_memory_limit_gigabytes_integrations_your-integration-id` to control this setting. For new agents, _do not_ use `container_memory_limit_gigabytes.integrations.your-integration-id `, as we have discontinued it.

---

### hva_container_cpu_limit_integrations_your-integration-id

**Description**: Caps the CPU resources for a specific integration job for High-Volume Agents. The default value, `0`, does not impose a CPU limit. Increase this value if you want to run multiple integration jobs concurrently and prioritize one job over others.

**Default value**: `0`

---

### hva_container_memory_limit_gigabytes_integrations_your-integration-id

**Description**: Caps container memory (in GB) for a specific integration job for High-Volume Agents. Increase this value if you want to run multiple integration jobs concurrently and prioritize one job over others.

**Default value**: `4`

**Audit**

### log_clean_frequency_milliseconds

**Description**: Controls how often the agent purges log files, in milliseconds. Tune this interval to balance disk usage with log availability.

**Default value**: `1800000`

---

### log_retention_days

**Description**: Sets how many days the agent retains log files. Adjust this value to specify how long you want to retain the log files for troubleshooting and audits.

**Default value**: `3`

---

### save_controller_logs_to_file

**Description**: Enables writing agent container logs to local files. Retain the default value to preserve the logs for troubleshooting and audits. Disable it to save disk space.

**Default value**: `true`

**Possible values**: `true`, `false`

---

### save_job_logs_to_file

**Description**: Enables writing job (container) logs to local files. Retain the default value to save disk space. Enable it to preserve the logs for troubleshooting and audits.

**Default value**: `false`

**Possible values**: `true`, `false`

**Networking**

### http_proxy

**Description**: Routes HTTP traffic through a specific proxy server (for example, `http://proxy.local:3128`).

**Default value**: null (no value)

---

### https_proxy

**Description**: Routes HTTPS traffic through a specific proxy server (for example, `http://proxy.local:3128`).

**Default value**: null (no value)

---

### no_proxy

**Description**: Specifies the hosts and domains that bypass the configured proxies (for example, `localhost`, `gateway`). Use this parameter to ensure local or internal endpoints do not use the proxy.

**Default value**: null (no value)

---

### use_docker_networks_for_jobs

**Description**: Creates a dedicated Docker network for each integration job. Disable it to have all jobs share the `fivetran_ldp` network, which can help avoid reaching Docker network limits when many jobs run concurrently.

**Default value**: `true`

**Possible values**: `true`, `false`

**Discontinued parameters**

This section lists the configuration parameters that we have discontinued. Some existing Hybrid Deployment Agents still use these parameters, but you must _not_ use them for new agents.

### container_cpu_limit.integrations.your-integration-id

**Description**: Caps the container CPU limit per integration job. The default value, `0`, indicates that the container has no CPU limit.

**Default value**: `0`

**Replaced by**: [`container_cpu_limit_integrations_your-integration-id`](#containercpulimitintegrationsyourintegrationid)

---

### container_memory_limit_gigabytes.integrations.your-integration-id

**Description**: Caps the container memory limit (in GB) per integration job.

**Default value**: `4`

**Replaced by**: [`container_memory_limit_gigabytes_integrations_your-integration-id`](#containermemorylimitgigabytesintegrationsyourintegrationid)

****Agent configuration parameters for Kubernetes****

## Agent configuration parameters for Kubernetes

In Kubernetes deployments, the mandatory configuration parameters for the Hybrid Deployment Agent are:

- [`Deployment name`](#deploymentname)
- [`namespace`](#namespace)
- [`data_volume_pvc`](#datavolumepvc)
- [`token`](#token_1)

All other parameters are optional, and the default values are sufficient for most environments.

If you want to customize the configuration parameters, set the parameters as command line options using the `--set` command and [start the agent](/docs/core-concepts/deployment-models/hybrid-deployment/setup-guide-kubernetes.md#installandstartagent). For example:

```bash
  helm upgrade --install hd-agent \
   oci://us-docker.pkg.dev/prod-eng-fivetran-ldp/public-docker-us/helm/hybrid-deployment-agent \
   --create-namespace \
   --namespace default \
   --set config.data_volume_pvc="VOL_CLAIM_HERE" \
   --set config.token="YOUR_TOKEN_HERE" \
   --set config.namespace=default \
   --version 0.27.0

```

If you are an advanced user, you can do the following to customize the configuration parameters:

1. Set the parameters in a `values.yaml`. For example:

   ```yaml
   config:
     namespace: fivetran
     data_volume_pvc: VOL_CLAIM_HERE
     token: YOUR_TOKEN_HERE

   agent:
     image: "us-docker.pkg.dev/prod-eng-fivetran-ldp/public-docker-us/ldp-agent:production"
     image_pull_policy: "Always"

   pdb:
     enabled: true

   ```
2. Deploy the `values.yaml` file.

   ```bash
      helm upgrade --install hd-agent \
       oci://us-docker.pkg.dev/prod-eng-fivetran-ldp/public-docker-us/helm/hybrid-deployment-agent \
       --create-namespace \
       --namespace fivetran \
       -f values.yaml \
       --version 0.27.0

   ```

> **Note:** - We recommend using the `values.yaml` file only for complex configurations, such as when using [Node Selector](/docs/core-concepts/deployment-models/hybrid-deployment/troubleshooting/kubernetes-node-selector-for-hybrid-deployment.md) or [Node Affinity rules](/docs/core-concepts/deployment-models/hybrid-deployment/troubleshooting/kubernetes-node-to-run-hybrid-deployment.md).
> - You can specify additional labels or node selection options in the `values.yaml` file.
> - You must specify the agent configuration parameters and their values only in the `config` section of the `values.yaml` file.
> - The ConfigMap created by the Helm chart during the agent installation will, by default, contain all the configuration parameters you specify in the `values.yaml` file.

---

## Parameter descriptions

We have divided the configuration parameters into 4 categories. Expand the following sections for the configuration parameters in each category and their descriptions:

**General configuration**

### Deployment name

**Description**: Specifies the release name you assign to the Helm deployment. The deployment name uniquely identifies the deployment within your cluster in the defined namespace. You can set the deployment name using the Helm `install` command: `helm --upgrade install &lt;deployment-name&gt;...`.

**Default value**: `hd-agent`

---

### namespace

**Description**: Specifies the Kubernetes namespace where you want to deploy the Helm chart. Use it to isolate the deployment from other workloads.

**Default value**: `default`

---

### data_volume_pvc

**Description**: Specifies the name of the PersistentVolumeClaim (PVC) to use for the agent’s data volume. Make sure the claim has sufficient disk space for your syncs.

**Default value**: `VOL_CLAIM_HERE`

---

### token

**Description**: Specifies the Hybrid Deployment Agent token provided in the Fivetran dashboard when registering your agent. The agent uses the token to authenticate and connect to Fivetran.

**Default value**: `YOUR_TOKEN_HERE`

---

### version

**Description**: Specifies the version of the Hybrid Deployment Agent Helm chart to install. The Helm chart version ensures consistent deployments.

**Default value**: `0.27.0`

---

### pdb

**Description**: Specifies whether to enable the Fivetran-managed Kubernetes PodDisruptionBudget (PDB) for the Hybrid Deployment Agent. The PDB helps maintain agent availability during voluntary disruptions, such as node maintenance or cluster upgrades. Set `enabled: false` to disable it.

**Default value**: `enabled: true`

**Possible values**: `enabled: true`, `enabled: false`

**Performance**

> **Note:** **Kubernetes memory and CPU request/limit behavior**
> 
> - **Requests** (`*_request`) defines the minimum CPU or memory for scheduling. Kubernetes uses requests to determine which node can run a pod. Kubernetes does not pre-allocate or consume this memory at startup.
> - **Limits** (`*_limit`) define the maximum amount of CPU or memory a container can use. Kubernetes does not pre-allocate this memory. Monitoring tools typically display actual resource usage rather than the configured limit.
> - If you set a **limit** but do not set a **request**, the agent follows Kubernetes conventions and automatically sets the request equal to the limit for that job.

### affinity_rules

**Description**: Defines node-affinity rules that control where connections run. Use it to schedule most jobs on a small node group and direct specific connectors to larger nodes. For more information, see our [Troubleshooting documentation](/docs/core-concepts/deployment-models/hybrid-deployment/troubleshooting/kubernetes-node-to-run-hybrid-deployment.md).

**Default value**: null (no value)

---

### donkey_container_cpu_limit

**Description**: This parameter globally caps the CPU resources for all pipeline processing jobs. By default, this parameter does not impose a CPU limit. Set a value to prevent excessive CPU usage.

**Default value**: unlimited

> **Note:** Some existing agents use [`donkey_container_max_cpu_limit`](#donkeycontainermaxcpulimit) instead of `donkey_container_cpu_limit` to control this setting. For new agents, _do not_ use `donkey_container_max_cpu_limit`, as we have discontinued it.

---

### donkey_container_cpu_limit_integrations_your-integration-id

**Description**: Caps CPU resources for a specific integration job. By default, this parameter does not impose a CPU limit. Increase the value if you want to run multiple integration jobs concurrently and prioritize one job over others. If you do not set this parameter for an integration job, the agent applies the [`donkey_container_cpu_limit`](#donkeycontainercpulimit) value by default to the job.

**Default value**: unlimited

---

### donkey_container_cpu_request

**Description**: Reserves baseline CPU resources globally for all pipeline processing jobs to improve scheduling and performance consistency. Use this parameter to ensure that the pipeline processing job receives a guaranteed baseline of CPU resources.

**Default value**: `2`

> **Note:** Some existing agents use [`donkey_container_min_cpu_request`](#donkeycontainermincpurequest) instead of `donkey_container_cpu_request` to control this setting. For new agents, _do not_ use `donkey_container_min_cpu_request`, as we have discontinued it.

---

### donkey_container_cpu_request_integrations_your-integration-id

**Description**: Specifies the baseline CPU resources for a specific integration job. If you do not set this parameter for an integration job, the agent applies the [`donkey_container_cpu_request`](#donkeycontainercpurequest) value by default to the job.

**Default value**: `2`

---

### donkey_container_memory_limit

**Description**: Sets the maximum memory globally for all pipeline processing jobs. This value sets a Kubernetes memory limit (upper bound). Kubernetes does not pre-allocate this memory at pod startup; the container uses memory on demand up to the limit. If the container exceeds its limit, Kubernetes may terminate it. Increase the value for larger datasets or memory-intensive operations.

**Default value**: `4Gi`

> **Note:** Some existing agents use [`donkey_container_max_memory_limit`](#donkeycontainermaxmemorylimit) instead of `donkey_container_memory_limit` to control this setting. For new agents, _do not_ use `donkey_container_max_memory_limit`, as we have discontinued it.

---

### donkey_container_memory_limit_integrations_your-integration-id

**Description**: Sets the maximum memory for a specific integration job. This value sets a Kubernetes memory limit (upper bound) for that integration. If you do not set this parameter for an integration job, the agent applies the [`donkey_container_memory_limit`](#donkeycontainermemorylimit) value by default to the job.

**Precedence**: The agent applies CPU and memory settings in the following order (highest to lowest priority), and selects the first applicable value in this list:

1. **Support override**: If Fivetran Support applies an override for an integration during incident mitigation, the agent uses that value and ignores all other configured limits.
2. **Per-integration limit**: If you set `donkey_container_memory_limit_integrations_your-integration-id`, the agent uses that value.
3. **Global limit**: If no per-integration limit exists, the agent uses `donkey_container_memory_limit`, if set.
4. **Internal default**: If none of the above values are set, the agent uses the internal default.

**Examples**:

- If you set the global limit to `4Gi` and the per-integration limit to `8Gi`, the agent assigns `8Gi` to that integration because the per-integration setting takes precedence.
- If you set the global limit to `8Gi` and the per-integration limit to `4Gi`, the agent assigns `4Gi` to that integration because the per-integration setting overrides the global value.
- If you set the global limit to `4Gi` and do not set a per-integration limit, the agent assigns `4Gi` to the integration.

**Default value**: `4Gi`

---

### donkey_container_memory_request

**Description**: Specifies the minimum memory globally for all pipeline processing jobs to ensure reliable scheduling. Kubernetes uses this value for scheduling (it must fit on a node for the pod to be scheduled). Requests are not pre-allocated or consumed at startup. If you set [`donkey_container_memory_limit`](#donkeycontainermemorylimit) but do not set `donkey_container_memory_request`, the agent sets the request equal to the limit (Kubernetes default behavior).

**Default value**: `4Gi`

> **Note:** Some existing agents use [`donkey_container_min_memory_request`](#donkeycontainerminmemoryrequest) instead of `donkey_container_memory_request` to control this setting. For new agents, _do not_ use `donkey_container_min_memory_request`, as we have discontinued it.

---

### donkey_container_memory_request_integrations_your-integration-id

**Description**: Specifies the baseline memory resources for a specific integration job. If you do not set this parameter for an integration ID, the agent applies the [`donkey_container_memory_request`](#donkeycontainermemoryrequest) value by default to the job. If you set an integration memory limit but do not set an integration memory request, the agent sets the request equal to the limit for that integration (Kubernetes default behavior).

**Default value**: `4Gi`

---

### use_empty_dir_for_temp

**Description**: Enables writing temporary files for pipeline processing jobs to `/tmp`, where they are stored in an [emptyDir](https://kubernetes.io/docs/concepts/storage/volumes/#emptydir). Retain the default value unless you need to customize temporary storage behavior.

**Default value**: `false`

**Possible values**: `true`, `false`

---

### hva_container_cpu_limit

**Description**: Caps the CPU resources globally for all High-Volume Agents. By default, this parameter does not impose a CPU limit. Set a value to control CPU usage.

**Default value**: unlimited

> **Note:** Some existing agents use [`hva_container_max_cpu_limit`](#hvacontainermaxcpulimit) instead of `hva_container_cpu_limit` to control this setting. For new agents, _do not_ use `hva_container_max_cpu_limit`, as we have discontinued it.

---

### hva_container_cpu_limit_integrations_your-integration-id

**Description**: Caps the CPU resources for the High-Volume Agent for a specific integration job. By default, this parameter does not impose a CPU limit. Set a value to control CPU usage.

**Default value**: unlimited

---

### hva_container_cpu_request

**Description**: Reserves baseline CPU resources globally for all High-Volume Agents to improve scheduling and performance consistency. Use this parameter to ensure that the HVA sidecar job receives a guaranteed baseline of CPU resources.

**Default value**: `2`

> **Note:** Some existing agents use [`hva_container_min_cpu_request`](#hvacontainermincpurequest) instead of `hva_container_cpu_request` to control this setting. For new agents, _do not_ use `hva_container_min_cpu_request`, as we have discontinued it.

---

### hva_container_cpu_request_integrations_your-integration-id

**Description**: Reserves baseline CPU resources for the High-Volume Agent to improve scheduling and performance consistency for a specific integration job. Use this parameter to ensure that the HVA sidecar job receives a guaranteed baseline of CPU resources.

**Default value**: `2`

---

### hva_container_memory_limit

**Description**: Sets the maximum memory globally for all High-Volume Agents. Increase the value for larger datasets or memory-intensive operations.

**Default value**: `4Gi`

> **Note:** Some existing agents use [`hva_container_max_memory_limit`](#hvacontainermaxmemorylimit) instead of `hva_container_memory_limit` to control this setting. For new agents, _do not_ use `hva_container_max_memory_limit`, as we have discontinued it.

---

### hva_container_memory_limit_integrations_your-integration-id

**Description**: Sets the maximum memory for the High-Volume Agent for a specific integration job. Increase the value for larger datasets or memory-intensive operations.

**Default value**: `4Gi`

---

### hva_container_memory_request

**Description**: Reserves the minimum memory globally for all High-Volume Agents to ensure reliable scheduling.

**Default value**: `4Gi`

> **Note:** Some existing agents use [`hva_container_min_memory_request`](#hvacontainerminmemoryrequest) instead of `hva_container_memory_request` to control this setting. For new agents, _do not_ use `hva_container_min_memory_request`, as we have discontinued it.

---

### hva_container_memory_request_integrations_your-integration-id

**Description**: Reserves the minimum memory for High-Volume Agent for a specific integration job to ensure reliable scheduling.

**Default value**: `4Gi`

---

### kubernetes_node_selector_custom_selector

**Description**: Defines a Kubernetes node selector as label key–value pairs. This parameter allows the scheduler to place agent pods only on nodes that match the labels. Use this to isolate workloads or target nodes with specific hardware or performance characteristics (for example, GPU or high-memory nodes).

**Default value**: null (no value)

---

### kubernetes_node_selector_enable

**Description**: Enables scheduling pipeline processing jobs with a Kubernetes node selector. If you set the value to `true`, the agent uses labels from the `kubernetes_node_selector_custom_selector` parameter value to place pods only on matching nodes. _Do not_ use this parameter with `kubernetes_affinity` as these parameters are mutually exclusive.

**Default value**: `false`

**Possible values**: `true`, `false`

---

### kubernetes_node_selector_include_role

**Description**: Adds the node selector `fivetran.role=job` to pipeline processing job pods. If you set the value to `true`, the scheduler places these pods only on nodes with that label, isolating job workloads from other system or application components.

**Default value**: `false`

**Possible values**: `true`, `false`

---

### kubernetes_affinity

**Description**: Maps connection IDs to named affinity rules for pod scheduling. This parameter allows the agent to apply the corresponding rule from the `affinity_rules` parameter so each connection runs on nodes that match the rule’s constraints. _Do not_ use this parameter with `kubernetes_node_selector_enable`.

**Default value**: null (no value)

---

### pending_pod_status_check_max_interval_seconds

**Description**: Sets how often (in seconds) the agent checks pods in the Pending state. Decrease the interval to detect scheduling issues sooner and increase it to reduce polling overhead in stable environments.

**Default value**: `300`

---

### standard_config_container_cpu_limit

**Description**: Caps the CPU resources globally for all Standard Configuration jobs that retrieve the database schema. Set a limit to control CPU usage during schema discovery and to align with cluster quotas.

**Default value**: unlimited

> **Note:** Some existing agents use [`standard_config_container_max_cpu_limit`](#standardconfigcontainermaxcpulimit) instead of `standard_config_container_cpu_limit` to control this setting. For new agents, _do not_ use `standard_config_container_max_cpu_limit`, as we have discontinued it.

---

### standard_config_container_cpu_request

**Description**: Reserves the baseline CPU resource globally for all Standard Configuration jobs that retrieve the database schema. Increase the value to improve scheduling and performance during schema discovery; decrease the value to reduce reserved capacity.

**Default value**: `2`

> **Note:** Some existing agents use [`standard_config_container_min_cpu_request`](#standardconfigcontainermincpurequest) instead of `standard_config_container_cpu_request` to control this setting. For new agents, _do not_ use `standard_config_container_min_cpu_request`, as we have discontinued it.

---

### standard_config_container_memory_limit

**Description**: Sets the maximum memory globally for all Standard Configuration jobs that retrieve the database schema. Increase the value for large schemas or memory-intensive discovery; decrease the value to conserve cluster resources.

**Default value**: `4Gi`

> **Note:** Some existing agents use [`standard_config_container_max_memory_limit`](#standardconfigcontainermaxmemorylimit) instead of `standard_config_container_memory_limit` to control this setting. For new agents, _do not_ use `standard_config_container_max_memory_limit`, as we have discontinued it.

---

### standard_config_container_memory_request

**Description**: Reserves baseline memory globally for all Standard Configuration jobs that retrieve the database schema. Default: 4Gi. Increase the value for large or complex schemas to improve scheduling and stability; decrease the value to reduce reserved capacity.

**Default value**: `4Gi`

> **Note:** Some existing agents use [`standard_config_container_min_memory_request`](#standardconfigcontainerminmemoryrequest) instead of `standard_config_container_memory_request` to control this setting. For new agents, _do not_ use `standard_config_container_min_memory_request`, as we have discontinued it.

---

### test_runner_container_cpu_limit

**Description**: Caps the CPU resources globally for all Connectivity Test jobs. Set a limit to control CPU consumption during connectivity checks and align with cluster quotas, especially when multiple tests run concurrently.

**Default value**: unlimited

> **Note:** Some existing agents use [`test_runner_container_max_cpu_limit`](#testrunnercontainermaxcpulimit) instead of `test_runner_container_cpu_limit` to control this setting. For new agents, _do not_ use `test_runner_container_max_cpu_limit`, as we have discontinued it.

---

### test_runner_container_cpu_request

**Description**: Reserves baseline CPU resources globally for all Connectivity Test jobs to improve scheduling and performance consistency. Increase the value on busy clusters or to speed up tests; decrease the value to reduce reserved capacity.

**Default value**: `2`

> **Note:** Some existing agents use [`test_runner_container_min_cpu_request`](#testrunnercontainermincpurequest) instead of `test_runner_container_cpu_request` to control this setting. For new agents, _do not_ use `test_runner_container_min_cpu_request`, as we have discontinued it.

---

### test_runner_container_memory_limit

**Description**: Sets the maximum memory globally for all Connectivity Test jobs. Increase the value for larger or concurrent connectivity checks; decrease the value to conserve cluster resources.

**Default value**: `4Gi`

> **Note:** Some existing agents use [`test_runner_container_max_memory_limit`](#testrunnercontainermaxmemorylimit) instead of `test_runner_container_memory_limit` to control this setting. For new agents, _do not_ use `test_runner_container_max_memory_limit`, as we have discontinued it.

---

### test_runner_container_memory_request

**Description**: Reserves baseline memory globally for all Connectivity Test jobs to ensure reliable scheduling. Increase the value for larger or parallel tests to improve stability; decrease the value to reduce reserved capacity.

**Default value**: `4Gi`

> **Note:** Some existing agents use [`test_runner_container_min_memory_request`](#testrunnercontainerminmemoryrequest) instead of `test_runner_container_memory_request` to control this setting. For new agents, _do not_ use `test_runner_container_min_memory_request`, as we have discontinued it.

---

### cleanup_jobs_interval_seconds

**Description**: Sets how often (in seconds) the agent scans for and removes stale jobs. Decrease the interval to clean up sooner; increase it to reduce background overhead.

**Default value**: `60`

**Security**

### token

**Description**: Specifies your Hybrid Deployment Agent token. Set this to your actual token to enable agent registration, job assignment, and secure metric reporting.

**Default value**: `your-agent-token`

---

### token_secret_name

**Description**: Specifies the name of the existing Kubernetes Secret you want to use for the agent token. Use this parameter if you want the agent token to use a Secret that already exists in your Kubernetes cluster. Use this parameter if you want the agent to use a pre-created Kubernetes Secret for authentication, instead of specifying the token directly. _Do not_ use this parameter with `token` as these parameters are mutually exclusive.

**Default value**: null (no value)

---

### token_secret_key

**Description**: Specifies the Kubernetes Secret key you want to assign to the agent token. Use this parameter if you want the agent token to use a Secret that already exists in your Kubernetes cluster. _Do not_ use this parameter with `token` as these parameters are mutually exclusive.

**Default value**: `token`

**Networking**

### http_proxy

**Description**: Routes HTTP traffic through a specific proxy server (for example, http://proxy.local:3128).

**Default value**: null (no value)

---

### https_proxy

**Description**: Routes HTTPS traffic through a specific proxy server (for example, http://proxy.local:3128).

**Default value**: null (no value)

---

### no_proxy

**Description**: Specifies the hosts and domains that bypass the configured proxies (for example, `localhost`, `gateway`). Use this parameter to ensure local or internal endpoints do not use the proxy.

**Default value**: null (no value)

**Discontinued parameters**

This section lists the configuration parameters that we have discontinued. Some existing Hybrid Deployment Agents still use these parameters, but you must _not_ use them for new agents.

### donkey_container_max_cpu_limit

**Description**: Sets the maximum CPU limit globally for all pipeline processing jobs.

**Default value**: unlimited

**Replaced by**: [`donkey_container_cpu_limit`](#donkeycontainercpulimit)

---

### donkey_container_max_memory_limit

**Description**: Sets the maximum memory limit globally for all pipeline processing jobs.

**Default value**: `4Gi`

**Replaced by**: [`donkey_container_memory_limit`](#donkeycontainermemorylimit)

---

### donkey_container_min_cpu_request

**Description**: Sets the minimum CPU request globally for all pipeline processing jobs.

**Default value**: `2`

**Replaced by**: [`donkey_container_cpu_request`](#donkeycontainercpurequest)

---

### donkey_container_min_memory_request

**Description**: Sets the minimum memory request globally for all pipeline processing jobs.

**Default value**: `4Gi`

**Replaced by**: [`donkey_container_memory_request`](#donkeycontainermemoryrequest)

---

### hva_container_max_cpu_limit

**Description**: Sets the maximum CPU limit globally for all High-Volume Agents.

**Default value**: unlimited

**Replaced by**: [`hva_container_cpu_limit`](#hvacontainercpulimit)

---

### hva_container_max_memory_limit

**Description**: Sets the maximum memory limit globally for all High-Volume Agents.

**Default value**: `4Gi`

**Replaced by**: [`hva_container_memory_limit`](#hvacontainermemorylimit)

---

### hva_container_min_cpu_request

**Description**: Sets the minimum CPU request globally for all High-Volume Agents.

**Default value**: `2`

**Replaced by**: [`hva_container_cpu_request`](#hvacontainercpurequest)

---

### hva_container_min_memory_request

**Description**: Sets the minimum memory request globally for all High-Volume Agents.

**Default value**: `4Gi`

**Replaced by**: [`hva_container_memory_request`](#hvacontainermemoryrequest)

---

### standard_config_container_max_cpu_limit

**Description**: Sets the maximum CPU limit globally for all Standard Configuration jobs that retrieve the database schema.

**Default value**: unlimited

**Replaced by**: [`standard_config_container_cpu_limit`](#standardconfigcontainercpulimit)

---

### standard_config_container_max_memory_limit

**Description**: Sets the maximum memory limit globally for all Standard Configuration jobs that retrieve the database schema.

**Default value**: `4Gi`

**Replaced by**: [`standard_config_container_memory_limit`](#standardconfigcontainermemorylimit)

---

### standard_config_container_min_cpu_request

**Description**: Sets the minimum CPU request globally for all Standard Configuration jobs that retrieve the database schema.

**Default value**: `2`

**Replaced by**: [`standard_config_container_cpu_request`](#standardconfigcontainercpurequest)

---

### standard_config_container_min_memory_request

**Description**: Sets the minimum memory request globally for all Standard Configuration jobs that retrieve the database schema.

**Default value**: `4Gi`

**Replaced by**: [`standard_config_container_memory_request`](#standardconfigcontainermemoryrequest)

---

### test_runner_container_max_cpu_limit

**Description**: Sets the maximum CPU limit globally for all Connectivity Test jobs.

**Default value**: unlimited

**Replaced by**: [`test_runner_container_cpu_limit`](#testrunnercontainercpulimit)

---

### test_runner_container_max_memory_limit

**Description**: Sets the maximum memory limit globally for all Connectivity Test jobs.

**Default value**: `4Gi`

**Replaced by**: [`test_runner_container_memory_limit`](#testrunnercontainermemorylimit)

---

### test_runner_container_min_cpu_request

**Description**: Sets the minimum CPU request globally for all Connectivity Test jobs.

**Default value**: `2`

**Replaced by**: [`test_runner_container_cpu_request`](#testrunnercontainercpurequest)

---

### test_runner_container_min_memory_request

**Description**: Sets the minimum memory request globally for all Connectivity Test jobs.

**Default value**: `4Gi`

**Replaced by**: [`test_runner_container_memory_request`](#testrunnercontainermemoryrequest)

---

### use_security_context

**Description**: Applies a restrictive Kubernetes `securityContext` to Hybrid Deployment job pods. When enabled, the agent configures each job pod with the following security settings:

```terraform
securityContext:
    allowPrivilegeEscalation: false
    readOnlyRootFilesystem: true
    capabilities:
    drop:
        - ALL

```

When set to `true,` this parameter runs job pods with reduced container privileges. This prevents privilege escalation, makes the container root filesystem read-only, and drops all Linux capabilities from the job containers.

**Default value**: `false`

> **Important:** Hybrid Deployment job containers must run as the root user. Enabling `use_security_context` restricts the privileges of the root user but does not configure the containers to run as non-root users. The parameter does not set `runAsUser` or `runAsNonRoot`.
> 
> Fivetran does not support cluster-enforced `runAsNonRoot: true` policies in the Hybrid Deployment namespace. For more information, see our [Troubleshooting documentation](/docs/core-concepts/deployment-models/hybrid-deployment/troubleshooting/kubernetes-runasnonroot-permission-denied.md).

****Agent configuration parameters for Podman****

## Agent configuration parameters for Podman

In Podman deployments, the only mandatory configuration parameter for the Hybrid Deployment Agent is [`token`](#token_1). You can find the agent token on the Fivetran dashboard when [creating the agent](/docs/core-concepts/deployment-models/hybrid-deployment/setup-guide-podman.md#createagent). The token is unique to each agent and establishes a secure connection between the agent and the Fivetran cloud. All other parameters are optional, and the default values are sufficient for most environments.

If you want to customize the configuration parameters, do one of the following:

- (Recommended) Define the parameters in your `config.json` file and [start the agent](/docs/core-concepts/deployment-models/hybrid-deployment/setup-guide-podman.md#startagent) using the updated file
- Define the parameters as environment variables when [starting the agent](/docs/core-concepts/deployment-models/hybrid-deployment/setup-guide-podman.md#startagent)

> **Note:** If you define the same parameter in the `config.json` file and as an environment variable, the environment variable takes precedence and overrides the value in the `config.json` file.

The following is an example of a basic agent configuration in the `config.json` file:

```json
{
  "token": "your_agent_token",
  "container_env_type": "podman",
  "host_persistent_storage_mount_path": "~/fivetran/data",
  "host_selinux_enabled": false,
  "save_controller_logs_to_file": true
}

```

---

## Parameter descriptions

We have divided the configuration parameters into 4 categories. Expand the following sections for the configuration parameters in each category and their descriptions:

**General configuration**

### token

**Description**: Specifies the Hybrid Deployment Agent token provided in the Fivetran dashboard when registering your agent. The agent uses the token to authenticate and connect to the Fivetran cloud.

**Default value**: `your-agent-token`

---

### container_env_type

**Description**: Specifies the container runtime for agent containers.

**Default value**: `docker`

**Possible values**: `docker`, `podman`

---

### container_podman_sock_file_mount_path

**Description**: Specifies the Podman socket path for the agent container. Set this path if your environment uses a nonstandard Podman socket location.

**Default value**: `unix:///run/user/1000/podman/podman.sock`

---

### controller_disk_space_abort_threshold_bytes

**Description**: Sets the minimum free disk space (in bytes) at which the agent aborts operations. You can raise this threshold to stop the agent earlier in low-disk scenarios.

**Default value**: `102400`

---

### controller_disk_space_threshold_bytes

**Description**: Sets the minimum free disk space (in bytes) that triggers a dashboard warning. Adjust this threshold to receive earlier alerts before disk space becomes critical.

**Default value**: `4294967296`

---

### docker_pull_retries

**Description**: Sets the number of retry attempts when pulling container images. Increase this value in environments with unreliable connectivity to improve deployment resilience.

**Default value**: `10`

---

### docker_pull_timeout_seconds

**Description**: Sets the timeout (in seconds) for pulling container images. Increase this value on slow networks to prevent premature pull failures.

**Default value**: `300`

---

### host_persistent_storage_mount_path

**Description**: Defines the host path for persistent pipeline data and metadata. Point this to reliable, performant storage with enough capacity to hold the full dataset during the [initial sync](/docs/getting-started/glossary.md#initialsync).

**Default value**: `~/fivetran/data`

> **Note:** Each Hybrid Deployment Agent must use a unique persistent storage location. _Do not_ share the same storage path between multiple agents, as this can cause data conflicts and operational issues.

---

### host_persistent_temp_storage_mount_path

**Description**: This is an optional parameter that defines a host path for temporary pipeline data. Set this path to a spacious storage (for example, `~/fivetran/tmp`) for syncs with a large dataset that needs extra disk space.

**Default value**: null (no value)

---

### host_selinux_enabled

**Description**: Indicates whether the agent container host enforces SELinux policies. Set to `true` when SELinux is enabled so the agent can operate under SELinux security policies.

**Default value**: `false`

**Possible values**: `true`, `false`

---

### poll_container_status_interval_seconds

**Description**: Sets the interval (in seconds) for polling container status. Increase the interval to reduce overhead or decrease it to get more frequent status updates.

**Default value**: `10`

---

### profile

**Description**: Specifies the agent profile that matches the container runtime.

**Default value**: `docker`

**Possible values**: `docker`, `podman`

**Performance**

### agent_memory_limit_bytes

**Description**: Caps the Hybrid Deployment Agent memory in bytes (B). Adjust this value to match your workload needs. Increase it when you run a high number of concurrent pipeline jobs per agent. **Default value**: `2147483648`

---

### container_cpu_limit

**Description**: Caps the CPU resources globally for all Hybrid Deployment job containers, including the Agent container. The default value, `0`, does not impose a CPU limit. Set a value to prevent the container from consuming excessive CPU resources or to align with host quotas.

**Default value**: `0`

---

### container_cpu_limit_integrations_your-integration-id

**Description**: Caps the CPU resources for a specific integration job. The default value, `0`, does not impose a CPU limit. Increase this value if you want to run multiple integration jobs concurrently and prioritize one job over others.

**Default value**: `0`

> **Note:** Some existing agents use [`container_cpu_limit.integrations.your-integration-id`](#containercpulimitintegrationsyourintegrationid_1) instead of `container_cpu_limit_integrations_your-integration-id` to control this setting. For new agents, _do not_ use `container_cpu_limit.integrations.your-integration-id`, as we have discontinued it.

---

### container_memory_limit_gigabytes

**Description**: Caps the container memory in gigabytes (GB), globally for all Hybrid Deployment job containers, including the Agent container. Adjust this value to match workload needs. Increase it for large data loads or memory-intensive operations to reduce out-of-memory failures.

**Default value**: `4`

---

### container_memory_limit_gigabytes_integrations_your-integration-id

**Description**: Caps container memory (in GB) for a specific integration job. Increase this value if you want to run multiple integration jobs concurrently and prioritize one job over others.

**Default value**: `4`

> **Note:** Some existing agents use [`container_memory_limit_gigabytes.integrations.your-integration-id`](#containermemorylimitgigabytesintegrationsyourintegrationid_1) instead of `container_memory_limit_gigabytes_integrations_your-integration-id` to control this setting. For new agents, _do not_ use `container_memory_limit_gigabytes.integrations.your-integration-id `, as we have discontinued it.

---

### hva_container_cpu_limit_integrations_your-integration-id

**Description**: Caps the CPU resources for a specific integration job for High-Volume Agents. The default value, `0`, does not impose a CPU limit. Increase this value if you want to run multiple integration jobs concurrently and prioritize one job over others.

**Default value**: `0`

---

### hva_container_memory_limit_gigabytes_integrations_your-integration-id

**Description**: Caps container memory (in GB) for a specific integration job for High-Volume Agents. Increase this value if you want to run multiple integration jobs concurrently and prioritize one job over others.

**Default value**: `4`

**Audit**

### log_clean_frequency_milliseconds

**Description**: Controls how often the agent purges log files, in milliseconds. Tune this interval to balance disk usage with log availability.

**Default value**: `1800000`

---

### log_retention_days

**Description**: Sets how many days the agent retains log files. Adjust this value to specify how long you want to retain the log files for troubleshooting and audits.

**Default value**: `3`

---

### save_controller_logs_to_file

**Description**: Enables writing agent container logs to local files. Retain the default value to preserve the logs for troubleshooting and audits. Disable it to save disk space.

**Default value**: `true`

**Possible values**: `true`, `false`

---

### save_job_logs_to_file

**Description**: Enables writing job (container) logs to local files. Retain the default value to save disk space. Enable it to preserve the logs for troubleshooting and audits.

**Default value**: `false`

**Possible values**: `true`, `false`

**Networking**

### http_proxy

**Description**: Routes HTTP traffic through a specific proxy server (for example, `http://proxy.local:3128`).

**Default value**: null (no value)

---

### https_proxy

**Description**: Routes HTTPS traffic through a specific proxy server (for example, `http://proxy.local:3128`).

**Default value**: null (no value)

---

### no_proxy

**Description**: Specifies the hosts and domains that bypass the configured proxies (for example, `localhost`, `gateway`). Use this parameter to ensure local or internal endpoints do not use the proxy.

**Default value**: null (no value)

---

### use_docker_networks_for_jobs

**Description**: Creates a dedicated Docker network for each integration job. Disable it to have all jobs share the `fivetran_ldp` network, which can help avoid reaching Docker network limits when many jobs run concurrently.

**Default value**: `true`

**Possible values**: `true`, `false`

**Discontinued parameters**

This section lists the configuration parameters that we have discontinued. Some existing Hybrid Deployment Agents still use these parameters, but you must _not_ use them for new agents.

### container_cpu_limit.integrations.your-integration-id

**Description**: Caps the container CPU limit per integration job. The default value, `0`, indicates that the container has no CPU limit.

**Default value**: `0`

**Replaced by**: [`container_cpu_limit_integrations_your-integration-id`](#containercpulimitintegrationsyourintegrationid_1)

---

### container_memory_limit_gigabytes.integrations.your-integration-id

**Description**: Caps the container memory limit (in GB) per integration job.

**Default value**: `4`

**Replaced by**: [`container_memory_limit_gigabytes_integrations_your-integration-id`](#containermemorylimitgigabytesintegrationsyourintegrationid_1)
