Repository navigation
v0.40.0
Memories: every new agent remembers what matters for its job, from its first task, with no setup.
Upgrading
- Hermes agents no longer read their private built-in memory files. Each agent now keeps one memory, the one you can see and edit in the console. The old files are not deleted.
- If you already run the memory engines, rerun
deploy/memories/up.shonce, so they get the new relay credential. - With more than one replica, set
HR_MEMORY_GRANTS_TTL_S=0so a revoked grant takes effect at once.
What's new (#658, building on #378)
-
Memory is chosen for each agent. A new agent gets memory unless you say otherwise. What the agent is for decides which engine:
- Mem0 for an agent that serves people, kept separately for each person;
- Graphiti for an agent that tracks things that change and relate;
- Hindsight for an agent that learns from its own work;
- ReMe for notes people read and edit;
- none for one-shot transforms, such as translating.
The agent's page shows the engine and why it was chosen, with "Change" next to it. In the API,
POST /v1/harnessestakesmemory("auto","none",{"engine": …}or{"id": …}), andPUT /v1/harnesses/{id}/memorychanges it later. -
Each person's memory is their own. An agent that serves people keeps a separate memory for each person, keyed by the task's
user.- A task reads its person's memory and the agent's shared knowledge, never another person's.
- A task writes only to its own person's memory.
- A task an API key starts without
userruns with memory off, and says so.
-
Remembering just works.
- What the agent knows is recalled at the start of each turn, so it remembers even when the model doesn't think to look.
- What matters is kept after each task. The turn says "Remembered N things", and a save that fails says so in plain words.
- Credentials are redacted before anything is stored.
-
One command for the engines.
deploy/memories/up.shstarts them and connects them to your instance. They call models through your existing connections, so there is no second model key to paste. On a single-operator instance, running engines are found on their own. -
Deleting is safe.
- A deleted agent's memory, and each person's memory under it, is kept for the agent's 30-day restore window, then deleted.
- Restoring the agent brings back its memory.
- A read that fails deletes nothing.
-
Share links show only that memory was used: no recalled content, no remembered facts, no ids.
-
Console:
- "Remember" is one switch.
- The Memories page has search, recently used, and "Used by".
- Records read as text, Schema moves under More, and the graph appears only when a memory has links.
- Every page is laid out for phone, tablet and desktop widths.
Checked
Real turns on a running instance, on the release candidate's image:
- Engine choice:
- a hotel concierge got Mem0, kept for each person;
- a repository fixer got Hindsight;
- an account researcher got Graphiti;
- a team wiki got ReMe;
- a translator got none, with its reason.
- Recall in a new session, with no instruction to use memory, on Claude Code (Mem0), Codex (Hindsight), Hermes (Graphiti) and Pi (ReMe).
- Per person:
- another person's new session didn't get the first person's fact;
- a task an API key started without
userran with memory off and said so.
- Delete and restore: deleting the agent kept its memory, and after a restore the person's new session still remembered.
- Share links showed memory steps only as "memory", with no names, arguments or ids.
- Regression: the five usual scenarios (first turn, follow-up, model switch, artifact, recycle) passed on seven agent harnesses with memory on by default: Codex, OpenCode, Gemini CLI, Claude Code, Pi, Qwen Code and Roder.
- Release gate: on a fresh volume on amd64 and arm64, every default harness installs, a second start installs nothing, and the credential canary is clean. The release's tree is identical to the candidate's.
Full Changelog: v0.39.1...v0.40.0