Repository navigation
Memory that works while the agent never calls a memory tool, rules measured against what the agent actually did, and one warm server shared by every client. The catalogue grows from 77 to 79 tools; migrations 038–042 run on first start.
Ambient memory
- Hooks do the recall, the rule checking and the saving themselves: every prompt gets the matching rules and a short block of relevant records (token budget 400, time limit 1.5 s, never blocking the prompt); a new PreToolUse hook shows a rule right before a command or edit it applies to; every tool call lands in a bounded, redacted action log.
- At Stop the turn is checked against the rules shown to the session: a broken "never X" is reported, and verdicts go to separate heuristic counters (
auto_success_count/auto_fail_count) that never touch explicit ratings or suspension. - A prompt that corrects the agent ("I already told you…", "я же говорил", a shouted prompt) becomes a draft insight that is promotable to a rule only after real upvotes.
- Turns that edited files or ran commands are saved as short summaries;
tam forget-autoremoves them. Works on native, Docker and Codex installs.
Rules
self_rules_context(query=...)ranks rules for the task and records each surface;self_rules(action='report')gives follow rates with 95% Wilson intervals and corrected verdicts, and never changes a rule's status.- Suspension now rests on explicit ratings only (at least 5, Wilson upper bound below 0.4). Loading rules no longer counts as firing them, which used to suspend helpful rules after ten session starts.
Shared warm daemon
tam daemon start|stop|statusruns one warm server per memory directory; clients launchtam proxy. Firstmemory_recallof a session: 0.18 s with the daemon, 1.51 s for a cold stdio server.TAM_TOOL_PROFILE=lean|minimallists 28 or 12 tools (about 4,400 / 2,150 tokens instead of 15,200).
Recall
- Relative dates ("last month", "three weeks ago", "recently") now give the temporal re-ranker a window, from now or from
memory_recall(as_of=...). - "What was it before?" questions rank the older value first (0/48 → 48/48 on
historical_value_eval); decisions, conventions and lessons no longer decay out of recall; compound questions keep each part in the top results. - Usage statistics moved off the read path: a search while another connection held the write lock went from about 1,050 ms to 16 ms.
- LongMemEval-S held-out: 88.0 on 400 questions (gpt-4.1-mini reader). Details: longmemeval-v14-9/RESULTS.md.
Import, export, operations
tam import chatgpt|claude|mem0|markdownkeeps original timestamps and skips what was already imported;tam export --encrypted/tam import-bundlemove a store between machines as an AES-256-GCM bundle.- Records saved while the embedder was down get their vectors later; swallowed write-path errors are journalled; per-tool call statistics in
memory_perf_report; an importance budget capscriticalsaves per project and day.
Fixed
- The stdio server no longer aborts at exit on Linux (Python 3.11/3.12) or macOS when a model thread is still inside onnxruntime, and no longer hangs after SIGTERM.
- The dashboard listens at once even with a slow reverse DNS resolver.
- Windows:
tam import-bundle --mode replace, directory replicas (file:///C:/...), refused dashboard writes, team server shutdown and rule-compliance verdicts on Python 3.11/3.12 all work now. - Hook output now reaches the model, SessionStart restores context after
/compact, the outbox can no longer replay a write twice, the recall cache actually hits, and macOS image OCR returns text ([ocr]extra).
CI
- Every pull request runs ruff, the full suite on Ubuntu, macOS and Windows with Python 3.11–3.13 (all blocking), a coverage floor, the recall-quality gate and CodeQL, behind one
ci-greencheck;scripts/check.shruns the same locally.
Every change: CHANGELOG.md.
Install: pip install total-agent-memory==14.9.0 · npx -y total-agent-memory connect <ide> · brew install vbcherepanov/tap/total-memory · docker run -p 37737:37737 -v ~/.tam:/data ghcr.io/vbcherepanov/total-agent-memory:14.9.0