跳到主要内容

nyx

❖ Communityv7.17.0

Nyx: local, single-user long-term memory with no LLM on the write path. Every turn is logged verbatim and indexed (SQLite FTS5, optional embeddings); on top of that log Nyx keeps bi-temporal facts (what is true now, and what you believed on a given day), source trust (tool, delegation and bot output never becomes a fact about you), two-stage forgetting with a restorable quarantine, and secrets filtering before anything is stored, with an optional encrypted vault that hands a pasted key back to its owner only after human approval.

Open in Hermes Desktop
hermes plugins install nyx

README

From the reviewed commit 101a64d ↗; it updates when the author re-pins.

Nyx — local long-term memory for Hermes

Nyx is a single-user, local memory provider. Writes involve no LLM: what you said is logged verbatim and indexed (FTS5, an inverted index, an optional embedding model). On top of that log, Nyx keeps:

  • Bi-temporal facts. It can answer both "what is true now" and "what did I believe on day K".
  • Source trust. Text from tools, delegation and bots never becomes a fact about you (a defence against memory poisoning).
  • Two-stage forgetting. A forgotten memory sits in a quarantine you can restore from until it expires, then it is erased from the disk too.
  • Secrets filtering. Tokens, API keys and passwords are replaced before anything is stored.
  • An optional encrypted vault. It can hand a key you pasted back to you, with human confirmation and without the model seeing it.

Source, benchmarks and design notes: https://github.com/sixgodgit/nyx

Install

hermes plugins install sixgodgit/nyx/hermes-plugin --enable
hermes config set memory.provider nyx
hermes gateway restart        # or restart Hermes

Hermes installs the declared dependency nyx-memory (PyPI) into its own environment. With the local embedding model, use sixgodgit/nyx/hermes-plugin-vector instead; its dependency is nyx-memory[vector] (sentence-transformers, about a 470 MB model download on first run).

Options: hermes memory setup (set lang to zh for Chinese output). Terminal commands: hermes nyx doctor, hermes nyx vault list, hermes nyx vault show v3, hermes nyx scrub, hermes nyx repair, hermes nyx status.

What it touches (disclosure)

  • Data. Memory lives in ~/.neurobase (data_dir in $HERMES_HOME/nyx.json; NEXSANDBASE_HOME overrides it). The optional vault's master key is ~/.config/nyx/vault.key (0600, outside the data dir), or NYX_VAULT_KEY.
  • Network. None by default. Each of these is opt-in:
    • [vector] downloads an embedding model from Hugging Face on first run. It sends no data.
    • embedding_api_url sends memory text and queries to the embedding API you configure (key: EMBEDDING_API_KEY).
    • l3_llm: on sends profile, scene and recent-decision snippets to DeepSeek or OpenRouter (key: DEEPSEEK_API_KEY / OPENROUTER_API_KEY).
    • NYX_UNDERSTAND_LLM / WTHREAD_LLM_EXTRACTION with LLM_EXTRACT_API_URL send the sentence being extracted to the endpoint you configure.
  • Credentials. Keys are read through agent.secret_scope.get_secret (profile-scoped). Nyx reads no .env or credential files. The optional keyring vault backend (NYX_VAULT_BACKEND=keyring) stores Nyx's own entries in the OS keychain under its own service name, and accepts only real system keychains (no plaintext backends).
  • Profiles. Settings from a profile's nyx.json apply only to that profile's calls; Nyx never writes them to os.environ and never changes sys.path. Environment variables set for the whole process still apply to every profile. One process uses one data directory: profiles with the same data_dir share memories, and a profile configured with a different data_dir reports unavailable in that process (Hermes tells the user why) instead of writing into another profile's memory. Profiles that share a data_dir share one memory, so an opt-in such as l3_llm in one of them covers what its own calls send from that shared memory.
  • Background work. On start, a short warm-up thread loads indexes. With an embedding backend, a thread backfills vectors. Nothing outlives the process.
  • Approvals. Revealing a vault entry asks for human confirmation through Hermes's request_tool_approval. When approvals are bypassed (--yolo, approvals.mode: off), Nyx asks the owner to reply with a one-time confirmation phrase instead; it never treats a bypass as consent. Under cron and subagents a reveal is refused.
  • Optional companion plugin nyx-reveal (pip entry point, opt-in with hermes plugins enable nyx-reveal). It registers one hook, transform_llm_output, which swaps a reveal handle for the secret just before the reply is sent, so the model provider never sees the value.

Origins

Nyx began as NexLSL's open-source project NexSandglass (MIT, June 2026, v1.0–v2.9.9). The sandglass log and full-text index, multi-path search, the knowledge graph, and the first MCP server and Hermes plugin come from there, and the Python package still carries its name, nexsandglass. sixgodgit has maintained it since v3.0 (July 2026). See LICENSE and the git history.


中文

hermes plugins install sixgodgit/nyx/hermes-plugin --enable
hermes config set memory.provider nyx

装完重启 Hermes。选项在 hermes memory setup 里,终端命令是 hermes nyx …。想要中文界面:在 hermes memory setup 里把 lang 设成 zh(系统语言是中文时自动中文)。完整说明见 nexsandglass_hermes/README.zh-CN.md。

Disclosure

← Back to the catalog · catalog built Nov 3, 2026