Quotas and limits that apply to MemoryStore regions, memory stores, write operations, searches, Scope, SDK versions, and agent plugins.
Regions
MemoryStore is available only in the China (Beijing) region.
Memory store limits
|
Item |
Limit |
|
Memory store name characters |
Letters, digits, and underscores only |
|
Memory store name length |
Up to 32 characters |
|
Memory store description length |
Up to 1,024 characters |
After you create a memory store, index initialization takes about one minute. Wait for initialization to finish before you write or search data.
AddMemories limits
|
Item |
Limit |
|
|
Up to 20 |
|
|
Up to 32,000 characters |
|
|
Up to 32,000 characters |
|
|
Up to 256 characters |
|
|
Up to 16 |
|
|
Up to 64 characters |
|
|
Up to 1,024 characters |
Provide at least one of messages or text. When you write memories, the wildcard * is not allowed in the Scope.
SearchMemories defaults
|
Parameter |
Default |
Description |
|
|
|
Number of results to return. Valid values: |
|
|
|
Whether to enable reranking. |
When you search long-term memories, appId and tenantId are required. You can use the wildcard * for agentId and runId.
Memory consolidation (Dream) limits
CreateMemoryDreamTask limits
|
Item |
Limit |
|
|
Required. Up to 20. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Up to 4,000 characters |
|
|
Up to 100 per call |
Enum values
|
Field |
Values |
|
|
|
|
|
|
|
|
|
|
|
|
|
Task status (task |
|
|
Action type ( |
|
|
Action status (action |
|
Async tasks and list pagination
|
API |
Default limit |
Maximum limit |
|
|
50 |
100 |
|
|
100 |
100 |
|
|
50 |
100 |
|
|
100 |
100 |
Extraction task status (ListMemoryTasks.status or the task.status returned by GetMemoryTask): queued / running / completed / failed / needs_reconcile.
Scope rules
|
Operation |
Scope requirement |
Wildcard |
|
Write memories |
|
No |
|
Search long-term memories |
|
|
|
Query short-term memories |
All four Scope levels are required. |
No |
|
Get a single long-term memory |
All four Scope levels are required. |
No |
|
Update a single long-term memory |
All four Scope levels are required. |
No |
|
Delete a single long-term memory |
All four Scope levels are required. |
No |
|
List long-term memories |
Specify Scope by level. |
Yes |
|
Query request audits |
Specify Scope by level. |
Yes |
Wildcards must follow hierarchical order. After you use * at a level, all subsequent levels must also use * or be left empty. For example, app-001/user-001/*/* is valid, but app-001/*/agent-001/* is not.
Async write visibility
AddMemories.sync defaults to false (asynchronous). When async write is used:
-
Raw messages are written first and become immediately available as short-term memories.
-
Long-term memory extraction runs in the background.
-
After extraction completes, long-term memories become searchable through
SearchMemories.
To view extraction results immediately during testing, set sync to true. Even with synchronous writes, a brief index refresh delay occurs before long-term memories become searchable.
Short-term memory queries
ListMemoryStoreMessages retrieves raw conversation messages. All four Scope levels (appId, tenantId, agentId, and runId) are required. Wildcards are not supported.
Use cases:
-
View raw conversation messages.
-
Replay a specific conversation.
-
Troubleshoot long-term memory extraction issues.
SDK versions
|
SDK |
Minimum version |
|
Python SDK |
|
|
Node.js SDK |
|
|
CLI |
|
CLI paging
CLI memory list commands return a single page of results. To retrieve the next page, pass the nextToken from the response.
Example:
tablestore-agent-cli memory list-units \
--store agent_memory \
--app-id app-001 \
--next-token <token>
CLI auto-provisioning
If ots_endpoint and ots_instance_name are not configured, the CLI automatically creates a managed Tablestore instance in the China (Beijing) region when you run the doctor command or perform an operation. Auto-provisioning takes some time, and the result is saved to the local configuration file.
To use a different instance, manually set the endpoint and instance name. The CLI then uses your explicit configuration.
Agent plugin notes
The Hermes and OpenClaw plugins search across agents and conversations by default (agentId=*, runId=*) within the current tenant. If your business requires memory isolation between agents or conversations, use the SDK to control the search Scope directly, or adjust the plugin configuration.