Memory

Persistent memory lets a session record what worked (and what didn't) and pull those facts back later. Every SDK session has a file-backed store at <workspace>/.a3s/memory, or at the ACL memory_dir when that is set. Pass a memoryStore / memory_store (with_file_memory in Rust, FileMemoryDir in Go) only when you want a different path or backend; a relative path resolves against the process working directory. Write outcomes explicitly with rememberSuccess / rememberFailure, then retrieve them with recallSimilar, recallByTags, or memoryRecent.

LLM extraction is also on by default (llm_extraction in the ACL memory block). After each completed turn with a non-empty prompt and reply, the session asks the model to distill durable memories: at most 5 items per turn, from at most 8,000 characters of input. Closing the session waits, up to a timeout, for extractions already in progress. Default stores merge an exact duplicate (the same content ignoring case and whitespace, at least 24 characters long) into the existing item; every other memory is stored separately.

Rust
Node.js
Python
Go

All four SDKs expose explicit memory write/query helpers. In Go these are RememberSuccess, RememberFailure, RecallSimilar, RecallByTags, MemoryRecent, and the working/short-term memory methods. rememberSuccess takes a short task description, the tools involved (also used as tags), and the outcome text; rememberFailure takes the task, the error text, and then the tools. recallByTags returns items carrying any of the given tags. The default stores rank recallSimilar results by matching the query's terms against each item's content and tags, weighted by importance and recency. If the memory store cannot be created, session creation fails with a session-initialization error that names the store path.