Next steps:
Minimum supported Hermes version: v0.10.0 (2026-04-16) or newer.
- Run Hermes memory setup and select
tablestore-mem:
hermes memory setupThis is the recommended activation path. It sets memory.provider and lets
Hermes install missing pip_dependencies declared by this plugin, including
tablestore==6.4.5, alibabacloud-tablestore20201209, and
alibabacloud-credentials.
- If setup reports that dependency installation failed, install the SDK into
the same interpreter used by
hermes:
uv pip install --python "$(head -n 1 "$(which hermes)" | sed 's/^#!//')" \
tablestore==6.4.5 \
alibabacloud-tablestore20201209 \
alibabacloud-credentials- Add credentials to
~/.hermes/.env:
TABLESTORE_MEMORY_AK=your_access_key_id
TABLESTORE_MEMORY_SK=your_access_key_secret- Create
~/.hermes/tablestore_memory.jsonfor all non-secret config:
{
"memory_store_name": "hermes_mem",
"description": "",
"app_id": "hermes",
"tenant_id": "",
"enable_rerank": true,
"auto_create_store": true,
"timeout": 30.0
}tenant_id is configuration-first. If it is set in
tablestore_memory.json, the plugin uses that value as the active
tenantId. Hermes session user_id is only used as a fallback when
tenant_id is empty. If both are empty, the provider falls back to
__default__.
If instance_name is missing, the plugin automatically creates a VCU instance
on first initialization, enables INTERNET/VPC/CLASSIC network access on
that new instance, sets NetworkSourceACL=TRUST_PROXY, derives the endpoint as
https://{instance_name}.cn-beijing.ots.aliyuncs.com, and persists both
fields for reuse.
Automatic instance bootstrap reuses TABLESTORE_MEMORY_AK and
TABLESTORE_MEMORY_SK directly for both control-plane and data-plane access.
A newly created instance may still need a propagation window before the public
endpoint becomes reachable. During first initialization, Hermes waits for the
new endpoint DNS to resolve and retries transient data-plane endpoint errors.
As a result, the first doctor on a brand-new Hermes home may take noticeably
longer than normal.
If memory_store_name is omitted, the plugin uses hermes_mem and creates it
automatically when missing.
- Verify:
hermes memory statusExpected:
Plugin: installed ✓
Status: available ✓
If the plugin is available, Hermes will use it for:
- memory prefetch before turns
- turn sync after completed turns
- explicit tools:
tablestore_profiletablestore_searchtablestore_remembertablestore_forget
Scope behavior:
- writes use the current session scope exactly
- searches use the current
tenantIdwithagentId=*andrunId=*
CLI commands are also available when tablestore-mem is the active provider:
hermes tablestore-mem add "Remember this fact"
hermes tablestore-mem search "this fact"
hermes tablestore-mem doctordoctor performs read-only diagnostics for provider initialization,
DescribeMemoryStore, and ListMemories.
Search behavior:
- writes use semantic extraction, not literal key-value storage
- default
addwrites are asynchronous unless--syncis provided - search results are ranked semantically, so exact new phrases may not appear immediately at the top of results even when the write has already succeeded