Priority 3 of the horizontal-scaling work (#1574), alongside the scope declaration (#1757). Every item here is a one-line or one-file change; shipping them as one "safe with several replicas" change avoids a trickle of unrelated PRs and gives the docs one statement.
At a glance
| Issue |
What is wrong |
Best fix |
| #1746 |
episode_store.with_count_cache defaults to true; per-process, never invalidated |
Default false; document as a single-process optimization |
| #1747, #1730 |
semantic_memory.with_config_cache defaults to true; per-process and per-instance |
Default false; set_setid_config writes only the fields it was given |
| #1751 |
MCP over HTTP is stateful |
stateless_http=True |
| #1750 |
MCP default identity is the host MAC address |
A configured default identity |
| #1752 |
Config API mutates one process and rewrites the file with resolved secrets |
Off by default and documented single-process; save never writes resolved secrets |
| #1754 |
Helm hard-codes one replica, no affinity, no worker count; compose cannot scale; one shared log file |
Chart values; logs to stdout; a docs page naming what is replica-safe |
Single change
One PR flipping the two cache defaults, setting MCP stateless with a configured identity, gating the config API, and making replica and worker counts chart values, plus a docs page that lists which components are safe with several replicas and ties it to the scope declaration (#1757). The two cache fixes that go beyond a default (coherent count, partial set_setid_config) can follow separately without blocking the default change.
Tracked
🤖 Written by Claude Code (Claude Fable 5.1) on behalf of @edwinyyyu.
Priority 3 of the horizontal-scaling work (#1574), alongside the scope declaration (#1757). Every item here is a one-line or one-file change; shipping them as one "safe with several replicas" change avoids a trickle of unrelated PRs and gives the docs one statement.
At a glance
episode_store.with_count_cachedefaults to true; per-process, never invalidatedsemantic_memory.with_config_cachedefaults to true; per-process and per-instanceset_setid_configwrites only the fields it was givenstateless_http=Truesavenever writes resolved secretsSingle change
One PR flipping the two cache defaults, setting MCP stateless with a configured identity, gating the config API, and making replica and worker counts chart values, plus a docs page that lists which components are safe with several replicas and ties it to the scope declaration (#1757). The two cache fixes that go beyond a default (coherent count, partial
set_setid_config) can follow separately without blocking the default change.Tracked
🤖 Written by Claude Code (Claude Fable 5.1) on behalf of @edwinyyyu.