Special Thanks
Most of this release came from outside the maintainer.
- @filhocf — the
agent_idauthor identity and its search filter, both phases of #1100 (#1278, #1297), plus the harvest tracker fix andforce_reharvest(#1277, #1283) and the consolidation decay timestamp fix (#1288) - @massimiliano1991 — belief quarantine reachable again (#1296), the Vectorize recall ceiling surfaced (#1299), consolidation access patterns scoped to the candidate window (#1291), Milvus log hygiene (#1298) and the Milvus Lite CI matrix (#1303)
- @Anshu666666 — log-injection guard extended to
config/base.py(#1308) - @Blizzeq — Home Assistant setup documented (#1282)
- @manus-pi — reported the
/mcp/healthinformation disclosure (GHSA-7w86-2vmv-fqwm)
Highlights
Memories can name the agent that wrote them. Pass agent_id or set MCP_AGENT_ID and it lands in metadata with no schema change (#1278). memory_search and memory_list take an agent_id filter that matches attribution from either transport, and /mcp reads an X-Agent-ID header so several agents sharing one server are attributed per request (#1297). The filter is opt-in: omit it and you see every agent's memories, because a per-agent bubble is the wrong default.
GET /mcp/health no longer discloses storage statistics to unauthenticated callers (GHSA-7w86-2vmv-fqwm, #1305). It returned memory count, database size, embedding model and backend class to anyone who could reach the port, in every authentication mode. GHSA-73hc-m4hx-79pj had already moved this class of data behind authentication on the REST side, but that fix only touched health.py and left the parallel MCP route open. The route stays unauthenticated so liveness probes keep working; the statistics are gone.
Consolidation reads the right clock. Decay measured relevance with edit timestamps instead of access timestamps, so a memory read constantly but never edited slowly lost its protection; get_access_patterns() now queries last_accessed and drops the LIMIT 100 that quietly truncated the statistics (#1288), while no longer loading every memory ever accessed on each run (#1291). Belief quarantine is reachable again: a naturally-phrased value swap is filed as a contradiction rather than dropped as a near-duplicate (#1296).
Upgrade notes
None. No configuration or behaviour changes are required to move from v11.13.0.
If anything monitored GET /mcp/health for its statistics block, point it at /api/health/detailed with credentials, or at /api/health for plain liveness.
Verification
scripts/release/verify_artifacts.sh 11.14.0 exits 0: both PyPI distributions report 11.14.0, all four Docker tags exist, and latest, 11.14 and 11.14-slim resolve to the same digests as the exact version tags.
Full changelog: CHANGELOG.md