nc://nexus

v0.1.0Pinned
ThomSharktools/nodecode-nexus: Long-term memory on Qdrant: recall, remember and forget facts, guardrails over stored rules, entities. - a rewrite of Neboy72/nexus-memory (MIT), credited to Neboy72f0bde4a· 9 Nov1 commit
test1 filecell.lisp49.3 KBcontracts.lisp4.1 KB

nodecode-nexus

Nexus Memory: durable facts on a Qdrant collection, guardrails over them. A Nodecode rewrite of Neboy72/nexus-memory by Neboy72.

The model gets five tools - nexus_recall, nexus_remember, nexus_forget, nexus_guardrail_check, nexus_find_entities - over the nexus collection the original keeps, with the same payload fields, so a cell and the original plugin (or any MCP-connected agent) share one memory. What the collection holds about the newest ask rides every request as one nexus block, so recall needs no call; a finished turn is filed in the background; /nexus shows the store or searches it.

Two things are its own: a memory carries an access level (public, trusted, private) and this cell reads only up to the level its section names, with a memory that has no known level counting as private; and a memory stored under category rule is a protection rule, which nexus_guardrail_check matches against the targets of a destructive command before it runs.

Get it

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

Set it up

A Qdrant you run and an embeddings endpoint of the model the collection was built with:

{
  "nexus": {
    "url": "http://127.0.0.1:6333",
    "collection": "nexus",
    "embedding_url": "http://127.0.0.1:11434/api/embed",
    "embedding_model": "qwen3-embedding:0.6b",
    "api_key_env": "QDRANT_API_KEY",
    "access_level": "private"
  }
}

embedding_url is the one required member: a vector has to come from somewhere. Any OpenAI-compatible /v1/embeddings endpoint answers it as well as Ollama's /api/embed, and its model must be the one the collection's vectors were made with - the original's local model is 1024 dimensions. A Qdrant Cloud store takes its key from api_key (or api_key_env, or QDRANT_API_KEY in the environment). Nothing else is contacted: the memories, the vectors and the ids stay in your store.

Member Default What it does
url http://127.0.0.1:6333 the Qdrant REST base URL
api_key / api_key_env unset the Qdrant API key, when the store asks for one
collection nexus the collection the memories live in
vector_name empty the named vector, when the collection has one
distance Cosine what a collection this cell creates uses
embedding_url - required: the embeddings endpoint
embedding_model qwen3-embedding:0.6b the model that endpoint serves
access_level private the level this agent reads up to and writes at
agent nodecode the name stamped on what this cell writes
scope default the scope a memory is filed under
recall true recall for the newest ask before each turn
recall_limit 5 the most memories one recall or search answers
capture true file each finished turn in the background
max_chars 400 how much of a captured turn is stored
retry_seconds 60 how long a store that just failed is left alone
timeout 20 one request's ceiling, in seconds

Use it

nexus_remember {text: "Prefers green tea over coffee", category: "preference"}
nexus_recall   {query: "what does the user drink"}
nexus_remember {text: "Never delete /srv/protected - production data", category: "rule"}
nexus_guardrail_check {command: "rm -rf /srv/protected"}   -> verdict block, with the rule
nexus_forget   {memory_id: "..."}

From eval the same verbs are functions: (nexus:recall "what does the user drink"), (nexus:remember "..." :category "rule"), (nexus:status), and (help :nexus) is the primer the model reads.

Add nc://nexus

  1. 1

    Install Nodecode

    Once per machine.

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

    Add the cell

    Pinned at f0bde4a.

    $ nodecode add nc://nexus

    Or tell the agent add the nexus cell.