nc://deja

v0.1.0Pinned
ThomSharktools/nodecode-deja: Recalls past coding sessions from every agent on this machine: deja's three tools, a digest each turn, and /deja. - a rewrite of vshulcz/deja-vu (MIT), credited to vshulcz040556c· 8 Nov1 commit
test2 filescell.lisp18.3 KB

nodecode-deja

Deja Memory: recalls past coding sessions from every agent on this machine, so the model remembers earlier work. A Nodecode rewrite of vshulcz/deja-vu by vshulcz.

The memory is the coding sessions this machine already wrote to disk — Claude Code, Codex, Cursor, Nodecode and the other agents deja reads, including the months before anything was installed. It is indexed locally by deja, a single Go binary: no model, no API key, no server.

Get it

Tell the agent "add the deja cell", or run nodecode add nc://deja.

Set it up

The cell drives the deja program, so that has to be there first:

brew install deja-vu        # or: go install github.com/vshulcz/deja-vu/cmd/deja@latest

It is found on PATH. If it lives somewhere else, give its path in the cell's deja setting (/settings); a cell that cannot find it refuses to start and says so. The first search may build the index over the transcripts already on disk, which takes seconds; after that a search is milliseconds.

Use it

The model gets the same three tools a Hermes user got:

Tool What it answers
deja_recall What past sessions on this machine did with a term — 1-3 exact terms (a path, an error string, a flag), paged with offset.
deja_fix For an error message, what was run after the same error last time, and whether it worked.
deja_blame For a file, the sessions that edited it and what each concluded.

And it arrives on its own, as it did in Hermes: at a session's first request, deja's digest of where the work in this project stood; at each turn, what the turn's own prompt matches. Most turns it adds nothing, which is the point — a memory that talks every turn is wallpaper. A cron run recalls nothing on its own; its job can still call the tools. What deja says is framed as reference data, not instructions: a line marked User said (this project) is shown and confirmed before it changes a command or a file.

You can look yourself:

/deja parser fix          the operator's own search
(deja:recall "make check")
(deja:fix "error: unknown flag -x")
(deja:blame "src/parser.lisp")

(help :deja) has the same guidance the model is given.

Settings

Setting Default What it is
deja deja The program's name on PATH, or its path.
auto on The digest and the prompt match at each turn. Off leaves the tools and /deja.
max_chars 6000 The longest recall one turn carries, in characters.

What is in it

File What it is
cell.lisp The three verbs, the round hook that records the digest, the standing section, the tools and /deja.
package.lisp The deja package: three verbs, the condition every refusal signals.
test/ Offline tests: the argv each tool builds, the round's reminder over a real store, the refusals, and one real run of a stand-in program.

What the Hermes plugin got from its host and Nodecode has no seam for — a compression recovery packet, the session-end stamp, mirroring MEMORY.md entries into the index — is not here; deja rebuilds its index on its next refresh either way.

License

MIT. The original is Copyright (c) 2026 Vladislav Shulcz: see LICENSE and NOTICE.

Add nc://deja

  1. 1

    Install Nodecode

    Once per machine.

    $ curl -fsSL https://nodecode.ai/install.sh | sh
  2. 2

    Add the cell

    Pinned at 040556c.

    $ nodecode add nc://deja

    Or tell the agent add the deja cell.