> For the complete documentation index, see [llms.txt](https://docs.cybus.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.cybus.io/2-4-1/documentation/agents/agents-in-kubernetes/deploying-agents-with-your-connectware-installation.md).

# Deploying Agents with Your Connectware Installation

You can deploy agents as part of your Connectware installation using the `connectware-agent` Helm subchart. This allows you to manage agents alongside Connectware without requiring a separate Helm release.

## Deploying Agents

* To deploy agents, define them under `connectwareAgent.protocolMapperAgents` in your `values.yaml` file for the `connectware` Helm chart. Each agent must have a unique name.

All agent configuration is placed under the `connectwareAgent` key. The available configuration options are the same as those in the standalone `connectware-agent` Helm chart. For detailed configuration options, see [Configuring agents with the connectware-agent Helm chart](/2-4-1/documentation/agents/agents-in-kubernetes/installing-connectware-agents-using-the-connectware-agent-helm-chart.md).

{% hint style="warning" %}
You cannot change the name of an agent after creating it.
{% endhint %}

**Example**

{% code title="values.yaml" lineNumbers="true" %}

```yaml
connectwareAgent:
  protocolMapperAgents:
    - name: welder-robots
    - name: bender-robots
```

{% endcode %}

## Configuration Inheritance

When agents are deployed as part of the `connectware` Helm chart, you can configure them at three levels. Configuration is applied in the following order, with each level overriding or being merged with the previous one:

1. **Global values** — Top-level `global` values from the `connectware` Helm chart (e.g., `global.podPriorityClassName`) are applied to all agents first.
2. **Agent defaults** (`connectwareAgent.protocolMapperAgentDefaults`) — Override global values and apply to all agents.
3. **Per-agent values** (`connectwareAgent.protocolMapperAgents[*]`) — Override both global values and agent defaults for a specific agent.

### Example: Using Global Defaults and Per-Agent Overrides

This example demonstrates how to set global defaults and override them for specific agents. The global `storageClassName: standard` applies to all Connectware PersistentVolumeClaims, but is overridden to `nfs` for all agent PVCs via `protocolMapperAgentDefaults`. The `bender-robots` agent further overrides the storage `size` for its own PVC.

{% code title="values.yaml" lineNumbers="true" %}

```yaml
global:
  licenseKey: <your-connectware-license-key>
  podPriorityClassName: high # This pod priority class will be applied to all resources created by the Connectware chart including agents
  persistence:
    storageClassName: standard # This storage class will be used for all PVCs created by the Connectware chart
connectwareAgent:
  protocolMapperAgentDefaults:
    persistence:
      storageClassName: nfs # This storage class will be used for all PVCs created for agents
    env:
      - name: CYBUS_TRUST_ALL_CERTS
        value: 'true' # For production environment, provide the Connectware CA Certificate to agents
  protocolMapperAgents:
    - name: welder-robots
    - name: bender-robots
      persistence:
        size: 500Mi # overrides the default for this agent only
```

{% endcode %}

{% hint style="warning" %}
For production environments, provide agents with the Connectware CA certificate instead of using `CYBUS_TRUST_ALL_CERTS`.
{% endhint %}

### Example: Unsetting Inherited Configuration

This example demonstrates the complete three-level priority chain and shows how to explicitly unset an inherited configuration for a specific agent.

{% code title="values.yaml" lineNumbers="true" %}

```yaml
global:
  podSecurityContextOverride: # applied to all agents as the base
    fsGroup: 1000
    runAsNonRoot: true
    seccompProfile:
      type: RuntimeDefault
connectwareAgent:
  protocolMapperAgentDefaults:
    env:
      - name: CYBUS_TRUST_ALL_CERTS
        value: 'true' # For production environment, provide the Connectware CA Certificate to agents
    podSecurityContextOverride: # overrides the global value for all agents
      fsGroup: 2000
      runAsNonRoot: true
      seccompProfile:
        type: RuntimeDefault
  protocolMapperAgents:
    - name: welder-robots
      # inherits podSecurityContextOverride from protocolMapperAgentDefaults
    - name: bender-robots
      podSecurityContextOverride: # overrides defaults for this agent only
        fsGroup: 3000
        runAsNonRoot: true
        seccompProfile:
          type: RuntimeDefault
    - name: driller-robots
      podSecurityContextOverride: {} # unsets the inherited podSecurityContext for this agent
```

{% endcode %}

{% hint style="info" %}
To unset an inherited object value for a specific agent, set it to `{}`. For example, `podSecurityContextOverride: {}` removes the inherited security context. For more details, see [Overriding Security Contexts](/2-4-1/cybus-helm-charts/working-with-cybus-helm-charts/overriding-security-contexts.md).
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.cybus.io/2-4-1/documentation/agents/agents-in-kubernetes/deploying-agents-with-your-connectware-installation.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
