Self-managed Agent Memory prerequisites
Review software, Redis, network, Secret, image, and sizing prerequisites for self-managed Redis Agent Memory.
Redis Agent Memory is distributed as container images on Docker Hub plus a Helm chart in the Redis AI Helm repository. The chart deploys the Agent Memory Data Plane, Agent Memory workers, and optionally the Agent Memory Control Plane.
You provide the Redis databases, provider credentials, Kubernetes exposure, and license material used by the deployment.
What you need
| Item | Where it comes from |
|---|---|
| Container images | Docker Hub: redislabs/agent-memory and, when the Control Plane is enabled, redislabs/agent-memory-control-plane |
| Helm chart | redis-agent-memory chart in the Redis AI Helm repository, or a chart package provided by Redis |
| Redis databases | You provide Store Redis, Job Redis, and Metadata Redis as needed by the deployment mode |
| License key | Contact your Redis representative or contact sales. |
| Provider credentials | You provide embedding provider credentials and, when worker features are enabled, promotion or summarization LLM credentials |
Required software
| Software | Minimum version | Purpose |
|---|---|---|
| Kubernetes | 1.19+ | Orchestration |
| kubectl | 1.19+ | Kubernetes CLI |
| Helm | 3.x | Package manager |
Redis databases
The Helm chart does not deploy Redis databases. Provision the Redis databases
outside the Agent Memory chart and pass their URLs in
memory-dataplane.config.yaml and, when the Control Plane is enabled,
controlplane-onprem.config.yaml.
Store Redis must support Search and JSON capabilities because Agent Memory creates JSON and vector search indexes for memory data. Job Redis and Metadata Redis do not need those capabilities when they are deployed as separate Redis databases.
Static stores
Use static stores for a first install or a private single-store deployment.
Stores are declared directly in memory-dataplane.config.yaml. The Control
Plane and Metadata Redis are not used.
| Redis database | Required when | Configure in memory-dataplane.config.yaml |
Purpose |
|---|---|---|---|
| Store Redis | Always | metadata.stores.<store-id>.urls |
Session memory JSON, long-term memory hashes, RediSearch indexes, vectors, and TTL-managed data. |
| Job Redis | Worker/background jobs enabled | background_jobs.redis.urls |
Background work, retry state, delayed jobs, and idempotency markers. |
Control Plane managed stores
Use Control Plane managed stores when operators need to create stores or agent keys at runtime. The Data Plane and Control Plane must point to the same Metadata Redis namespace and Store Redis.
| Redis database | Required when | Configure in memory-dataplane.config.yaml |
Configure in controlplane-onprem.config.yaml |
Purpose |
|---|---|---|---|---|
| Store Redis | Always | metadata.live.store_db.urls |
store_db.urls |
Memory data for Control Plane managed stores. |
| Metadata Redis | Always | metadata.live.urls and metadata.live.namespace |
metadata.urls and metadata.namespace |
Store records, agent-key records, and grant metadata. |
| Job Redis | Worker/background jobs enabled | background_jobs.redis.urls |
Not used by Control Plane | Background work, retry state, delayed jobs, and idempotency markers. |
Do not combine static metadata.stores with Control Plane managed store
metadata for the same Data Plane. Static stores do not use Metadata Redis.
Control Plane managed stores require Metadata Redis and are required for
agent-key authentication.
For a lab deployment, the Redis roles required by your chosen mode can point to the same Redis endpoint if it has the required modules and capacity. For production, separate Store Redis, Job Redis, and Metadata Redis when possible so memory data, background work, and control metadata can be scaled, backed up, and operated independently.
For Job Redis, use a non-evicting policy such as noeviction or
volatile-ttl.
Metadata Redis durability
Metadata Redis is small compared with Store Redis, but it is operationally critical. Use persistent storage, Redis authentication, network isolation, and TLS where required.
In FIPS-oriented deployments, Redis URLs covered by the posture must use
rediss://. Avoid eviction of metadata keys; losing metadata removes Control
Plane store records and agent-key records.
Network access
- Connected install: the cluster must be able to pull images from
docker.ioand reach the Redis AI Helm repository. - Air-gapped install: mirror the images into an internal registry and use a chart package or locally downloaded chart.
- Runtime access: Agent Memory pods must reach the Redis databases and any embedding or LLM provider endpoints used by the deployment.
- Data Plane exposure: use NetworkPolicy, ingress, gateway, service mesh, private load balancer, or equivalent controls to restrict API access.
Credentials and Secrets
The chart consumes configuration and license material from Kubernetes Secrets:
| Secret | Required when | Default key |
|---|---|---|
| Agent Memory license Secret | Always | license |
| Agent Memory Data Plane config Secret | Always | memory-dataplane.config.yaml |
| Control Plane config Secret | Control Plane enabled | controlplane-onprem.config.yaml |
| Control Plane admin-token Secret | Control Plane enabled | token |
The config file is mounted as a Secret because it commonly contains provider API keys and Redis URLs may include credentials.
Release artifacts and image tags
Agent Memory self-managed image tags use the release SemVer value, for example:
image:
repository: redislabs/agent-memory
tag: "<ram-version>"
Use the image tag listed for the release on Docker Hub or provided by Redis.
Use the chart version supplied by Redis for the release. The published chart is
redis-ai/redis-agent-memory from https://helm.redis.io/ai.
Standard customer installs use the public Docker Hub images published by the
Agent Memory self-managed release: docker.io/redislabs/agent-memory:<ram-version>
and, when the Control Plane is enabled,
docker.io/redislabs/agent-memory-control-plane:<ram-version>.
Air-gapped and private registry installs
Mirror the published images into your internal registry:
docker pull redislabs/agent-memory:<ram-version>
docker tag redislabs/agent-memory:<ram-version> \
registry.example.com/redislabs/agent-memory:<ram-version>
docker push registry.example.com/redislabs/agent-memory:<ram-version>
docker pull redislabs/agent-memory-control-plane:<ram-version>
docker tag redislabs/agent-memory-control-plane:<ram-version> \
registry.example.com/redislabs/agent-memory-control-plane:<ram-version>
docker push registry.example.com/redislabs/agent-memory-control-plane:<ram-version>
If the registry requires authentication, create an image pull Secret:
kubectl -n <namespace-name> create secret docker-registry ram-registry \
--docker-server=registry.example.com \
--docker-username=<username> \
--docker-password=<password>
Add the registry settings to ram-values.yaml:
image:
repository: registry.example.com/redislabs/agent-memory
tag: "<ram-version>"
controlplane:
image:
repository: registry.example.com/redislabs/agent-memory-control-plane
tag: "<ram-version>"
imagePullSecrets:
- name: ram-registry
Omit imagePullSecrets if the internal registry does not require
authentication.
For air-gapped deployments, also set:
airgap:
enabled: true
System requirements
Default chart values:
| Component | Default | Purpose |
|---|---|---|
| Agent Memory server | 2 replicas with autoscaling enabled and a minimum of 2 | Data Plane API traffic |
| Agent Memory worker | 2 replicas with autoscaling enabled and a minimum of 2 | Background promotion, summarization, and forgetting jobs |
| Agent Memory Control Plane | 1 replica when controlplane.enabled=true |
Admin API for stores and agent keys |
During a rolling update, Kubernetes may temporarily run old and new pods at the same time. A small two-node test cluster can run out of CPU during install or upgrade.
For realistic validation, use at least three nodes or enough CPU headroom for the maximum rolling-update overlap.
For a constrained lab cluster, reduce replicas and autoscaling explicitly:
server:
replicaCount: 1
autoscaling:
enabled: false
worker:
replicaCount: 1
autoscaling:
enabled: false
Do not use reduced replica counts as the production HA recommendation.
Helm values to review
The walkthroughs use redis-agent-memory as the Helm release name. The
generated service and deployment names in the verification steps assume that
release name.
| Area | Values | Use when |
|---|---|---|
| Image | image.repository, image.tag, imagePullSecrets |
Selecting a release, private registry, or mirrored image. |
| Air-gapped installs | airgap.enabled |
Validating a disconnected or private-registry install. |
| API server capacity | server.resources, server.autoscaling.* |
Tuning request capacity or memory footprint. |
| Worker capacity | worker.resources, worker.autoscaling.* |
Tuning background job throughput. |
| Scheduling | server.nodeSelector, worker.nodeSelector, server.affinity, worker.affinity, server.tolerations, worker.tolerations |
Controlling pod placement. |
| Networking | service.type, ingress.* |
Exposing Agent Memory outside the cluster. |
| Naming | fullnameOverride |
Running more than one Agent Memory release in a namespace. |
| Service account | serviceAccount.* |
Matching customer namespace security policy. |
| Worker authentication | workerAuth.enabled, worker.serviceAccount.*, worker.serviceAccount.token.* |
Giving Agent Memory workers a Kubernetes projected service-account token for authenticated Data Plane callbacks. |
| Secret rollouts | license.existingSecretChecksum, config.existingSecretChecksum, controlplane.config.existingSecretChecksum |
Rolling pods after externally managed Secret changes. |
| Control Plane | controlplane.enabled, controlplane.image.*, controlplane.config.existingSecret, controlplane.adminToken.* |
Enabling the optional admin API for stores and agent keys. |
Do not use floating image tags in production.