Network requirements
The worker connects outbound over HTTPS (443) to your KAOP host, agentops.komodor.com, which
also serves Komodor’s managed model gateway; nothing inbound is required. Your nodes also pull images
from ghcr.io unless you mirror them, and the agent reaches its
model provider (in byo mode) and any MCP servers you configure. See
Network & egress control
for proxy configuration and TLS-inspecting proxies.
Install the chart
The agent runs from an OCI chart, so there is nohelm repo add — reference it directly by its
registry path:
values.yaml
for you, with the worker token filled in.
Use the agent id as the release name so the upgrade commands on
Upgrade a self-hosted agent resolve it
without extra lookup. Pin a release with --version <version>; omitting it installs the newest
stable release.
A minimal values.yaml:
values.yaml
Upgrade the chart
--reuse-values carries forward everything you set at install — including the worker token and any
model API key, neither of which KAOP holds a copy of to put back for you. To change one value
without retyping the rest, add --set <key>=<value> alongside --reuse-values; it overrides just
that key and leaves everything else as installed.
--reuse-values also carries forward the previous chart’s defaults for anything you never set
explicitly, so a default introduced by a newer chart version doesn’t reach an existing release on
its own. On Helm 3.14 or newer, --reset-then-reuse-values resets to the new chart’s defaults
first and reapplies your previous overrides on top, so new defaults do take effect — on an older
Helm it fails with unknown flag, which is why the command above uses plain --reuse-values.
Pin the chart version the same way you would at install, with --version <version>; omitting it
upgrades to the newest stable release.
When an upgrade changes the image tag, the Deployment’s own rolling update replaces the pods as
soon as the upgrade applies — there is no separate restart step to run. The old pod finishes its
in-flight work before the new one starts, so a rollout can take several minutes while a run drains.
The exact command differs for a catalog agent, which pins an image tag, versus one you built
yourself, which tracks the chart version instead; see
Upgrade a self-hosted agent for each path.
Deploying via GitOps (ArgoCD, Flux)
The agent base chart is published as an OCI artifact, so it works with GitOps tools that support OCI Helm sources. Point an ArgoCDApplication or Flux HelmRelease at the same chart used
above — oci://ghcr.io/komodorio/charts/agentops-agent-base — with no helm repo add needed,
though your GitOps tool may still require its own OCI source configuration.
Keep the chart version and values.yaml in git. To upgrade, change the chart version or image
configuration there and let your GitOps controller reconcile it, rather than running
helm upgrade yourself.
Rendering manifests into git
If you’d rather commit rendered manifests than have your GitOps controller pull the chart directly:path-based Helm source, rather than an OCI repoURL.
Managing secrets
GitOps configuration is typically stored in git.Values reference
Agent
Connecting to KAOP
Model
One ofllm.credentialRef (cloud) or llm.anthropicApiKey (byo) is required; the chart
refuses to render without one.
Scaling with KEDA
Resources, scheduling and identity
MCP servers: two lists, one merge
Keep your own in-cluster MCP servers inagent.mcpServers — the chart renders them into the
worker’s .mcp.json. Leave agent.managedMcpServers alone; it holds servers KAOP itself adds and
is merged into the same file.
Using your own image registry
image.registry, image.repository and image.tag point the chart at wherever your cluster pulls
images from; set imagePullSecrets if that registry needs one. If your cluster mirrors images into
its own registry rather than pulling from the default, set these to the mirrored location instead.
What to mirror
An agent you built yourself runs one image, public onghcr.io/komodorio:
agentops-agent-base, published for amd64 and arm64. A catalog agent runs its own image instead,
named under image: in the values file the console generates; mirror that one, and change
image.registry in that file.
Mirror the tag your chart version uses: with image.tag left blank, the chart pulls the tag equal
to its own version, so mirroring only latest fails.
Mirroring has to preserve the whole multi-arch manifest, not just the image for one platform — a
plain docker pull / docker push round-trip only carries the local daemon’s platform unless you
explicitly request every variant. Use a tool built for registry-to-registry copies instead, such as
crane copy, skopeo copy, or docker buildx imagetools create.
For help mirroring the images into your own registry, contact Komodor support.
Pointing the chart at the mirror
If you mirror under akomodorio/ prefix at your destination —
<your-registry>/komodorio/agentops-agent-base — you only need to override the registry host:
values.yaml
image.repository to match — the chart’s default
(komodorio/agentops-agent-base) only resolves correctly under that komodorio/ convention.
Putting it together
Avalues.yaml that keeps the worker token and model key in Secrets you manage, adds an in-cluster
MCP server whose token comes from a Secret, and scales to zero between runs:
values.yaml
${VAR} references in an MCP server’s settings from the pod’s environment, so a
token never has to be written into the values file. Scaling to zero (minReplicaCount: 0) is safe
from the first deploy: KEDA polls the control plane
on the worker token alone, so it needs no replica already running to find the agent.
Next steps
Upgrade a self-hosted agent
Move an installed agent to the newest release.
Agent identity
How the worker token and control-plane URL authenticate a worker.
Proving it works
Confirm the worker is reachable and a real run completes.
Troubleshooting
What to check when a worker does not come online.