In one paragraph
Agents lose their state when a session ends, and their context fills up on long tasks. These projects attack that from different sides. Some give the agent a prompt and a script for keeping notes. Some persist sessions in a database behind the agent framework’s storage interface. Others run a memory server, train a model to manage its own context, or convert session transcripts into one format.
What counts here: libraries, stores and models that give agents memory, managed context or durable state across sessions.
The main approaches
Memory prompts and scripts
The agent gets a short instruction and a small tool, and does its own memory keeping. OptMem is a 426-token prompt plus one Python script. The agent calls memo wake, memo note, memo nap, memo recall and memo zoom against an append-only log of fixed-width lines, with a tree of cached summaries that can be rebuilt from the log. There is no vector database and no cloud service.
Storage backends
These plug durable storage into an agent framework. strands-dynamodb-storage is a DynamoDB backend for the Strands Agents SDK, in TypeScript and Python. One Storage instance covers sessions, memory and vector search. With an S3 bucket set, oversized values are offloaded there and a pointer stays in DynamoDB.
Context databases
A server owns the memory and the agent reads and writes it through an API. hindsight, the most starred in this theme, offers retain, recall and reflect calls, runs four retrieval strategies in parallel, and consolidates stored facts into beliefs in the background. OpenViking lays out memories, resources and skills as a filesystem under viking:// URIs, with abstract, overview and full-content tiers. edgequake is a GraphRAG store: documents become a knowledge graph in PostgreSQL, queried with vector search plus graph traversal. Recur runs a chat server that remembers procedures instead of facts. When it sees repeated questions, it searches for a verified dataflow program, keeps it in a registry stored as a single JSON file, and answers later matches locally with no model call.
Context models
The model itself is trained to handle context. MEM1 uses reinforcement learning so a 7B model rewrites a compact internal state each turn instead of appending history. context-language-models treats context as a file the model can write freely, then improves that with evolved instructions or online RL. imprint puts a memory encoder, full-attention or recurrent, between episode history and a robot VLA policy.
Session trajectories
This family handles the record of what an agent did. trajectory parses transcripts from 15 agent runtimes into one schema-validated array of meta, user, assistant, tool, reasoning and observation records.
Map of the theme
flowchart LR t["Agent memory and context"] t --> f1["Memory prompts and scripts"] t --> f2["Storage backends"] t --> f3["Context databases"] t --> f4["Context models"] t --> f5["Session trajectories"] f1 --> r1["VictorTaelin/OptMem"] f2 --> r2["aws/strands-dynamodb-storage"] f3 --> r3["vectorize-io/hindsight"] f3 --> r4["raphaelmansuy/edgequake"] f3 --> r5["volcengine/OpenViking"] f3 --> r6["haaaarsh4/Recur"] f4 --> r7["MIT-MI/MEM1"] f4 --> r8["facebookresearch/context-language-models"] f4 --> r9["amazon-far/imprint"] f5 --> r10["letta-ai/trajectory"]
Where the new ideas are
- Trained context handling: MEM1 and context-language-models move memory work into the model, through a rewritten state each turn or a file the model edits.
- Beliefs over piles of facts: hindsight consolidates stored facts into evidence-backed beliefs and keeps standing answers as mental models.
- Context as a filesystem: OpenViking lets agents judge relevance from summaries before reading full content.
- Memory as a plain log: OptMem makes position the identity of a record, so lookup is one seek.
- Memory as compiled code: Recur turns repeated requests into local programs.
- Memory for robots: imprint adds history encoders to existing VLA policies.
Side by side
| Repo | Approach | Memory form | Language | Runs where |
|---|---|---|---|---|
| MIT-MI/MEM1 | Context models | Compact internal state rewritten each turn | Python | CUDA GPU hardware |
| vectorize-io/hindsight | Context databases | Banks of facts, observations and mental models | Python | Self-hosted |
| raphaelmansuy/edgequake | Context databases | Knowledge graph plus vectors in PostgreSQL | Rust | Self-hosted, one binary |
| volcengine/OpenViking | Context databases | viking:// virtual filesystem | Python | Self-hosted |
| letta-ai/trajectory | Session trajectories | Normalized record array from 15 runtimes | TypeScript | Not stated |
| VictorTaelin/OptMem | Memory prompts and scripts | Append-only log plus summary tree | Python | Local files, no cloud infrastructure |
| aws/strands-dynamodb-storage | Storage backends | DynamoDB items, optional S3 offload | TypeScript | DynamoDB |
| facebookresearch/context-language-models | Context models | Context as a file the model edits | Python | Not stated |
| haaaarsh4/Recur | Context databases | Compiled local programs | JavaScript | Self-hosted |
| amazon-far/imprint | Context models | Memory encoder over episode history | Python | Linux x86_64 with CUDA 12.8 GPUs |
How the idea moved
flowchart LR n1["started Jul 2025<br/>MIT-MI/MEM1"] n2["started Oct 2025<br/>vectorize-io/hindsight"] n3["started Dec 2025<br/>raphaelmansuy/edgequake"] n4["started Jan 2026<br/>volcengine/OpenViking"] n5["started Jul 2026<br/>letta-ai/trajectory"] n6["started Jul 2026<br/>VictorTaelin/OptMem"] n7["started Aug 2026<br/>aws/strands-dynamodb-storage"] n8["started Sep 2026<br/>facebookresearch/context-language-models"] n9["started Sep 2026<br/>haaaarsh4/Recur"] n10["started Oct 2026<br/>amazon-far/imprint"] n1 --> n2 --> n3 --> n4 --> n5 --> n6 --> n7 --> n8 --> n9 --> n10
- started Jul 2025 · MEM1 · Adds: trains a 7B model with reinforcement learning to merge prior memory and each new observation into a compact state, so context stops growing with every turn.
- started Oct 2025 · hindsight · Adds: a memory server with retain, recall and reflect calls that merges four retrieval strategies and consolidates stored facts into evidence-backed beliefs.
- started Dec 2025 · edgequake · Adds: graph-based retrieval as a single Rust binary on PostgreSQL, with six query modes, multi-tenant auth, a web UI and an MCP server.
- started Jan 2026 · OpenViking · Adds: agent memory, knowledge and skills organized as a browsable filesystem under viking:// URIs, with three-tier summaries and path-scoped search.
- started Jul 2026 · trajectory · Adds: converts session transcripts from 15 agent runtimes into one schema-validated record format that other systems can consume.
- started Jul 2026 · OptMem · Adds: persistent agent memory from a short prompt and one script, using an append-only text log and a binary tree of summaries.
- started Aug 2026 · strands-dynamodb-storage · Adds: a DynamoDB backend for the Strands Agents SDK covering sessions, memory, vector search, TTL expiry and S3 offload behind one Storage interface.
- started Sep 2026 · context-language-models · Adds: lets the model write to its context as a file, improved by evolved instructions or online RL, to cut FLOPs while raising task accuracy.
- started Sep 2026 · Recur · Adds: compiles repeated chat requests into verified local programs that answer later matches without a model call.
- started Oct 2026 · imprint · Adds: a pluggable memory encoder, full-attention or recurrent, that gives an existing VLA robot policy access to long episode history.
Easily confused
- Plain RAG: retrieval over documents is a read-only lookup. In hindsight and OpenViking, memory is written over time, extracted from content or sessions, and consolidated or summarized.
- A chat history log: a log keeps everything. OptMem, MEM1 and context-language-models decide what to keep, summarize or drop, through a summary tree, a rewritten state or a model that edits its own context.
- A vector database: hindsight, edgequake and strands-dynamodb-storage use vector search. OptMem uses a plain text log and a script, and trajectory only reformats transcripts.
- Answer caching: Recur compiles verified programs from repeated requests, so it is closer to learning a procedure than to caching text.
Gaps nobody has filled
- No benchmark compares a memory server, a prompt-and-script log and a trained context model on the same task.
- No link exists between robot-policy memory and the memory stores built for text agents.
- No trained context model is paired with a durable store, so a model that rewrites its own state has nowhere persistent to put it.