Skip to content

v0.40.0

Choose a tag to compare

@github-actions github-actions released this 09 Nov 09:16
ad19e05

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.sh once, so they get the new relay credential.
  • With more than one replica, set HR_MEMORY_GRANTS_TTL_S=0 so 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/harnesses takes memory ("auto", "none", {"engine": …} or {"id": …}), and PUT /v1/harnesses/{id}/memory changes 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 user runs 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.sh starts 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 user ran 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