All plugins

deja-memory

Memory from the coding sessions already on this machine — Claude Code, Codex, Cursor, Hermes and the other agents deja reads, including history from before it was installed. No model, no API key, no server. Disclosure — runs the separately installed, unpinned deja binary (brew install deja-vu) as a subprocess; deja reads Claude Code, Codex, Cursor, Hermes and other agents' local transcript files, keeps its index under ~/.cache/deja, receives the turns Hermes compresses so it can hand them back after compaction, and recalled text from those agents is injected into Hermes turns, with lines deja marks "User said (this project)" requiring user confirmation before changing a command, file, rule, or config; nothing leaves the machine.

vshulcz1.4kMemoryv0.1.0Updated 3 days ago

About

Memory from the coding sessions already on this machine — Claude Code, Codex, Cursor, Hermes and the other agents deja reads, including history from before it was installed. No model, no API key, no server. Disclosure — runs the separately installed, unpinned deja binary (brew install deja-vu) as a subprocess; deja reads Claude Code, Codex, Cursor, Hermes and other agents' local transcript files, keeps its index under ~/.cache/deja, receives the turns Hermes compresses so it can hand them back after compaction, and recalled text from those agents is injected into Hermes turns, with lines deja marks "User said (this project)" requiring user confirmation before changing a command, file, rule, or config; nothing leaves the machine.

deja-memory for Hermes

English | 中文

#1 Go Repository Of The Day GitHub Stars

Part of deja-vu (97.2% R@5 on LongMemEval-S · 13.6 s to index 19,195 sessions · half the tokens of agentmemory) · Website & live search · Browser demo · ★ Star deja-vu on GitHub

A Hermes memory provider that answers from the coding sessions already on this
machine: Claude Code, Codex, Cursor, Hermes itself and the other agents deja
reads, including the months before anything was installed. No model, no API
key, no server. The history is indexed locally by
deja, a single Go binary.

Install

deja has to be on PATH first:

brew install deja-vu        # or: go install github.com/vshulcz/deja-vu/cmd/deja@latest
hermes plugins install deja-memory   # or from GitHub: hermes plugins install vshulcz/deja-vu/extensions/hermes
hermes config set memory.provider deja-memory

or pick deja-memory in hermes memory setup, which checks for the binary
before it activates the provider.

What it does

  • Before the first turn of a session it hands Hermes the digest deja's hooks
    give Claude Code and Codex: the recent work in this project and what held.
    After that, only when what was just asked matches something earlier. Most
    turns it adds nothing.
  • You see what it brought: the lines deja shows in Claude Code (the receipt
    naming the agent a memory came from, what a session start recalled, the
    build and week notes)
    ride Hermes's recall line, 🧠 deja · …, in the interactive CLI and
    hermes chat -q. The model's text is the same as before. Hermes 0.17 has no
    recall line, hermes -z and hermes chat -Q print none, the TUI only
    flashes it in the status bar, and a gateway chat may be a group other
    people read, so there deja keeps its notes for a session that shows them.
  • A cron job's run gets no automatic recall: when Hermes says the platform is
    cron, the provider adds nothing on its own, and the deja tools still answer
    when the job calls them.
  • Three tools: deja_recall searches past sessions, deja_fix says what was
    run after an error last time, deja_blame lists the sessions that edited a
    file.
  • An entry Hermes adds to MEMORY.md or USER.md is kept as a deja note too, so
    it ranks above the sessions around it.
  • A compaction keeps what the session was in the middle of for the next turn,
    and the end of a session drops its live stamp.

One thing a memory provider cannot do: put the earlier fix beside a command
that just failed. That rides transform_tool_result, a plugin hook, and Hermes
hands a memory provider a context whose register_hook does nothing
(plugins/memory/__init__.py, 0.17.0). deja install hermes-auto writes the
hook plugin that carries it.

It never writes Hermes turns anywhere: Hermes already stores them, and deja
reads that store on its next refresh.

Same code as deja install

deja install hermes-auto writes this provider to ~/.hermes/plugins/deja-memory
along with the MCP server and a pre_llm_call hook plugin. The files here are
generated from the same source (cmd/deja/install_hermes_memory.go); the only
difference is that this copy finds deja on PATH instead of having the path
written in. TestHermesExtensionIsTheProviderInstallWrites fails when the two
drift.

Part of deja-vu. MIT. Found it useful? Star deja-vu on GitHub.

README from the reviewed commit 910d490; it updates when the author re-pins.