Amazon S3 Vectors can serve as a persistent memory provider for NVIDIA NeMo Agent Toolkit (NAT). AWS demonstrates the integration with a multi-agent investment research workflow running on Amazon Elastic Kubernetes Service (Amazon EKS). The implementation connects NAT’s memory subsystem to vector storage through a custom provider, giving agents a way to retrieve information across sessions. AWS’s implementation guide establishes the architecture; Remio’s account supplies the implementation details discussed below.
The practical starting point is the provider interface: connect NAT’s memory operations to embedding generation, vector storage and filtered retrieval. Persistent storage supplies the foundation, while the application still needs rules for which memories an agent may retrieve.
Connect the provider through MemoryEditor
According to Remio’s technical account, NAT exposes a MemoryEditor interface for adding items, searching memories and removing items. A memory item can carry conversation data, tags, metadata, a user identifier and a text representation. AWS implements that interface through a custom plugin named s3vectors_memory, which NAT discovers through its YAML configuration.
This interface is the architectural boundary between the agents and their storage backend. The provider handles persistence and retrieval while the workflow interacts with memory through NAT’s abstraction. For developers adapting the reference design, the first integration task is therefore to connect the custom provider to those memory operations.
The available evidence identifies the plugin and configuration mechanism, but does not supply a complete YAML payload or installation commands. Those details must come from the implementation itself; the architecture alone is insufficient for a copy-and-run deployment.
Build the embedding and retrieval path
Remio describes a reference design with one vector bucket and one vector index. The bucket is an S3 resource specifically for vector data; the index organizes embeddings for similarity search. The example uses 1,024 dimensions and cosine similarity, paired with Amazon Titan Text Embeddings V2 through Amazon Bedrock.
The provider sends memory text to the embedding model, then stores the resulting vector with metadata describing its origin and permitted scope. On retrieval, it embeds the query, calls the S3 Vectors similarity API and converts the returned records into NAT MemoryItem objects.
That sequence explains how stored information becomes usable agent context. Storage holds the vectors and metadata, the embedding model supplies the numerical representations, and the provider translates between the storage service and NAT’s memory objects. Each component has a distinct role in the retrieval path.
Remio also describes filters using agent_id, memory_type, ticker, team_id, user_id and whether a record is shared. In the investment research example, these fields provide ways to narrow retrieval by subject or ownership. Similarity alone does not establish that a memory belongs in a particular agent’s context; the metadata restrictions are part of the retrieval design.
Separate runtime identity from memory scope
AWS’s demonstration runs NAT on Amazon EKS. Remio reports that the architecture uses IAM Roles for Service Accounts (IRSA), associating a Kubernetes service account with an AWS identity. It also reports that the sample was tested with NAT 1.6 and Python 3.11 or 3.12.
The identity mechanism and metadata filters address different parts of the system. IRSA associates the workload with an AWS identity. The provider’s filters narrow the memories returned to an agent. A deployment review should examine both: the workload’s access to AWS resources and the application’s rules for selecting records within its memory store.
The reported test versions provide a reference environment. They do not establish compatibility with every other toolkit or Python version.
Plan around storage limits, then measure the workflow
Remio reports the following S3 Vectors limits. These are service constraints described by the secondary source, rather than throughput demonstrated by the multi-agent example.
| Constraint | Reported limit |
|---|---|
| Vectors per index | Up to two billion |
| Indexes per vector bucket | Up to 10,000 |
| Dimensions | 1 through 4,096 |
| Metadata per vector | 40 KB total; up to 2 KB filterable |
| Combined write or delete requests | Up to 1,000 per second per index |
| Inserted or deleted vectors | Up to 2,500 per second per index |
| Write batch | Up to 500 vectors per request |
The request and vector limits are separate constraints; batching does not remove the per-index vector limit. Likewise, the distinction between total and filterable metadata matters when choosing which memory attributes will support retrieval restrictions.
Remio reports AWS’s latency description as subsecond for infrequent access and as low as 100 milliseconds for more frequent access. That is an attributed service claim, not an independently measured result for this agent workflow. The supplied evidence does not establish end-to-end retrieval latency or answer-quality improvements.
The reference architecture gives developers a concrete route to persistent NAT memory: implement the provider interface, align embeddings with the vector index, apply metadata restrictions and deploy with a workload identity. Its usefulness for a particular application still depends on whether the retrieved memories are relevant, appropriately scoped and available within that application’s latency requirements.



