Four follow-up fixes to v0.9.6 reported live on #234 and #278: the @agentmemory/mcp shim gained probe diagnostics, an escape hatch, and an end-to-end debug trace knob; the Docker compose stack now persists state across docker compose down (the volume binding was unused due to a working-directory mismatch in the engine config); a cosmetic which iii stderr leak was suppressed; and the engine container's log output is now bounded so a crash/restart spam loop can no longer fill the host disk.
Fixed
@agentmemory/mcp standalone shim: probe diagnostics, escape hatch, and debug trace
The livez probe in src/mcp/rest-proxy.ts used a 500 ms timeout and silently swallowed every failure: when the probe failed, the shim fell back to the 7-tool IMPLEMENTED_TOOLS set with no log line explaining why. v0.9.7 surfaces every probe failure to stderr (URL + HTTP status or thrown reason + active timeout), raises the default timeout to 2000 ms, and adds three new env knobs:
AGENTMEMORY_PROBE_TIMEOUT_MS— override the probe timeout for slow loopbacks.AGENTMEMORY_FORCE_PROXY=1— skip the probe entirely and trustAGENTMEMORY_URL. The right escape hatch when the shim can reach the server via a known route but not the host'slocalhost.AGENTMEMORY_DEBUG=1— tracetools/listend-to-end:handle.mode,/agentmemory/mcp/toolsresponse shape, returned tool count, and local-fallback contents.
Verified end-to-end via stdio against a live AGENTMEMORY_TOOLS=all server: tools/list returns all 51 tools, with the shim's stderr trace confirming returning 51 tools from server.
{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}} \
| AGENTMEMORY_URL=http://localhost:3111 AGENTMEMORY_DEBUG=1 \
npx @agentmemory/mcp 2>&1 >/dev/null
[@agentmemory/mcp] tools/list: handle.mode=proxy baseUrl=http://localhost:3111
[@agentmemory/mcp] tools/list: remote response shape: keys=tools toolsType=array(len=51)
[@agentmemory/mcp] tools/list: returning 51 tools from server
Closes #234. Thanks @jcalfee for the host-vs-sandboxed-client repro and the detailed log captures.
Docker compose: state no longer wiped on docker compose down
iii-config.docker.yaml configured iii-state and iii-stream with relative file_path: ./data/..., which the engine resolves against its container WORKDIR=/home/nonroot — not the /data mount where the named iii-data volume lives. State and stream stores were written to the ephemeral container layer and discarded on every container restart, so memories, BM25 index, and stream backlog vanished.
Both paths are now absolute (/data/state_store.db and /data/stream_store), routing writes through the named volume as the compose file always intended.
Migration note: existing users need a one-time docker compose down -v to clear the old empty volume layout before upgrading. New writes will land in the correct location from the first start after upgrade.
Engine container log size capped at 30 MB total
@satabd reported the iiidev/iii:0.11.2 engine container filling a host disk with a 129 GB <container-id>-json.log when the engine fell into a crash/restart spam loop (#278). The compose service now sets:
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"so unbounded engine stdout/stderr can no longer eat the host's disk. The upstream engine spam itself is filed against iiidev/iii — this is the compose-side guardrail.
CLI banner: no more which: no iii in $PATH leak
whichBinary() in src/cli.ts called execFileSync("which", ["iii"]) with default stdio, which inherits the child's stderr to the parent process — and GNU which writes "no iii in (...)" to stderr with exit 1 on miss. The catch swallowed the throw but the stderr line had already drained into the user's terminal between the agentmemory banner and the "iii-engine ready" line. stdio: ["ignore", "pipe", "pipe"] now captures both streams. Pure cosmetic, no behavior change.
Changed
@agentmemory/mcppackage version bumped 0.9.6 → 0.9.7 to lockstep with the main package.
Install / upgrade
npm i -g @agentmemory/agentmemory@0.9.7
# or
npx @agentmemory/agentmemory
# MCP standalone shim
npx -y @agentmemory/mcpExisting Docker compose users should run docker compose down -v once before docker compose up -d to clear the old empty volume layout — see the volume-mount fix above.
Full changelog: v0.9.6...v0.9.7