All plugins

Official

Memory Wiki

Memory Wiki dashboard tab and opt-in native Desktop page: browsable subject pages and daily logs derived from local session history, plus a read-only Persistent Memory (MEMORY.md / USER.md) audit panel.

NousResearch592DesktopUpdated 12 days ago

About

Memory Wiki dashboard tab and opt-in native Desktop page: browsable subject pages and daily logs derived from local session history, plus a read-only Persistent Memory (MEMORY.md / USER.md) audit panel.

hermes-memory-wiki

Part of Hermes Official Plugins, Nous Research's official plugins for Hermes Agent. Formerly NousResearch/hermes-memory-wiki, which is archived; this directory carries its full history.

Memory Wiki dashboard and native Desktop plugin for Hermes Agent:
a browsable session-history wiki (subject pages and daily logs derived deterministically from
your local state.db) plus a read-only Persistent Memory audit panel showing the MEMORY.md /
USER.md entries the agent actually carries into every session.

No LLM calls, no writes: the plugin opens state.db read-only through the public
hermes_state.SessionDB API and only reads memory files. Editing memory stays with the memory
tool (prompt-cache safe).

What you get

A Memory Wiki tab in hermes dashboard (after Sessions) with:

  • Subjects — topics extracted from session titles, file paths, tool names, slash commands,
    quoted phrases and CamelCase identifiers; each subject page lists related sessions and snippets.
  • Daily logs — per-day activity with sessions, subjects and "what we did" work items.
  • Recent activity — the ten most recently active sessions.
  • Persistent Memory — agent notes and user profile entries, rendered exactly as the memory tool
    parses them, so you can audit what the agent remembers.

Backend routes (mounted at /api/plugins/memory-wiki/, behind the dashboard's normal auth gate):

| Route | Returns |
|---|---|
| GET /overview?subject_limit=&day_limit= | subjects, daily logs, recent sessions, notes |
| GET /subjects?q=&limit= | subject list, optional substring filter |
| GET /subjects/{slug} | one subject (404 when unknown) |
| GET /days?limit= | daily logs |
| GET /days/{date} | one YYYY-MM-DD log (404 when unknown) |

Profile scoping is handled by the host (?profile=<name> on any REST call); the routes resolve
HERMES_HOME per request.

Install

From the Nous plugin catalog (pinned, reviewed commit):

hermes plugins install hermes-memory-wiki --enable

Or directly from this repository:

hermes plugins install hermes-memory-wiki --enable

Then start (or restart) the dashboard — hermes dashboard — and open the Memory Wiki tab. The
plugin must be in plugins.enabled (the --enable flag or hermes plugins enable memory-wiki
does that); the web server never imports backend code from plugins you have not enabled.

Uninstall: hermes plugins remove memory-wiki.

Requires Hermes Agent ≥ 0.21 (dashboard plugin SDK with fetchJSON).

Native Desktop UI (opt-in)

This package includes desktop/plugin.js, a native /memory-wiki page with a sidebar entry
and Open Memory Wiki command. It uses Desktop’s UI kit and the existing backend; no app
rebuild, iframe, or web dashboard is needed. Subjects and daily logs are deterministic views
of session history, not LLM-generated wiki pages or Hindsight memories. Persistent Memory
shows read-only agent notes and user profile entries. Session buttons open native history
when the host supports openSession.

Use a current Hermes Desktop with the unified-package disk-plugin SDK. Install the backend
with the command above on the machine running the gateway and enable it for the desired
profile (hermes plugins enable memory-wiki). Restart that gateway so its API routes mount.

The Desktop half must be installed on the client machine. For a local unified-package
install, Desktop discovers plugins/memory-wiki/desktop/plugin.js and copies it into its
local desktop-plugins/memory-wiki/ directory. In Capabilities → Plugins, use Rescan
if needed, then enable Memory Wiki: it ships with defaultEnabled: false. The Python
backend enable switch is separate from the Desktop toggle.

For a remote gateway, installing the backend on the server does not install the UI on
the client. Install the same reviewed package locally with Desktop’s Install from Git
Desktop target, or copy this directory’s desktop/plugin.js to
$HERMES_HOME/desktop-plugins/memory-wiki/plugin.js on the client. Enable the Desktop plugin
and the server backend separately. Reads use the active connection and profile; switching
resets the page’s search and detail selection.

For checkout development, a locally linked unified package watches desktop/plugin.js for
hot reload. An ordinary installed package needs Rescan after edits to refresh Desktop’s
copy. Disable/re-enable or hot reload removes the page contributions and clears its queries.
No production installation is part of the development/test commands below.

This checkout’s Desktop addition is not a catalog release. After review and merge, a new
catalog commit pin is required before catalog installs receive it.

Layout

hermes-memory-wiki/
├── plugin.yaml                  # plugin manifest (name: memory-wiki)
├── __init__.py                  # register(ctx) — no tools/hooks; UI/backend plugin
├── dashboard/
│   ├── manifest.json            # tab declaration (/memory-wiki, icon Database)
│   ├── plugin_api.py            # FastAPI router, mounted at /api/plugins/memory-wiki/
│   ├── memory_wiki_core.py      # stdlib-only aggregation over SessionDB rows
│   ├── src/index.jsx            # UI source (JSX, uses window.__HERMES_PLUGIN_SDK__)
│   └── dist/index.js            # committed build artefact the dashboard loads
├── desktop/plugin.js            # native Desktop disk plugin, plain ESM (no build)
├── tests/                       # node:test DOM tests and pytest backend tests
└── package.json                 # `npm run build` → dashboard/dist/index.js (esbuild)

Development

Use Node.js 22.12+ for the native DOM tests.

npm ci                      # build/test dependencies only; runtime React comes from Desktop
npm run build               # rebuild dashboard/dist/index.js
npm run check               # dashboard and emitted Desktop ESM syntax
npm test                    # node:test DOM behavior against desktop/plugin.js
HERMES_AGENT_REPO=~/.hermes/hermes-agent \
  ~/.hermes/hermes-agent/.venv/bin/python -m pytest tests/ -o "addopts="

Desktop tests use a test-only SDK boundary with the native component prop contracts and a
small query lifecycle shim; they mount the actual production plugin in React/jsdom. They do
not replace a live Desktop integration check of host routing, theme rendering, or session
opening. No runtime dependencies are added to the disk file.

dashboard/dist/index.js is a plain IIFE; the dashboard caches it aggressively, so after a
rebuild restart the server or navigate away and back. Adding a manifest at runtime needs
GET /api/dashboard/plugins/rescan; changing plugin_api.py needs a server restart.

Credits

  • Abdullah Raja (@Araja119) — original author of the Memory Wiki
    (aggregation engine, API and dashboard page) in hermes-agent PR
    #31244. Authorship is preserved via
    Co-authored-by trailers on the commits that carry that code.
  • Teknium / Nous Research — salvage and hardening in
    #89940 (Persistent Memory audit panel),
    and the conversion into this standalone plugin.
  • The "show curated memory in the dashboard" idea was independently proposed earlier by
    @scotty87 in hermes-agent #33043.

License

MIT — see LICENSE.

README from the reviewed commit 54afaf5; it updates when the author re-pins.

More by NousResearch

26 plugins by NousResearch in the catalog.

NousResearchaccent-pickerOKLCH accent colour picker for the Hermes Desktop status bar: drag it and the whole theme retints live, with palette commands to reset to the theme default or copy the current colour. A theme-authoring tool; the colour is scratch state and is never persisted. Desktop-only (desktop/plugin.js inside the plugin SDK surface); no agent tools, hooks, middleware or env vars.OfficialDesktop app592NousResearchadvanced-delegationTwo extra delegation modes for `delegate_task`, next to the built-in default. Model routes (`delegation.backend: model_map`): the agent picks a named model route per subagent from a list you define (e.g. fast, deep, local). Profile routes (`delegation.backend: profile_routes`): the agent runs a subagent as one of your Hermes profiles, with that profile's own model, credentials, skills and SOUL.md. Only route names and their one-line descriptions reach the model. Adds `hermes delegation config` (pick the mode and edit its routes; `--show` prints the setup) and the `/delegation` slash command (save a mode for the next session, or `--now` to apply it to the current chat). Needs Hermes 0.22.5 or newer, the first release with pluggable delegation providers; Hermes 0.22.0 to 0.22.4 refuses to install it, and on a core older than 0.22.0 it installs, logs one warning and does nothing. Disclosure — no Python dependencies and no network or model calls of its own; subagents run through core's `delegate_task` on the routes you configured. Writes only `delegation.backend` and `delegation.backends.*` (model_map / profile_routes) in the active profile's config.yaml, through core's config writer. A model route's optional `api_key` is stored in config.yaml in plain text (`provider:` keeps keys in .env / auth.json). Listing a profile under profile routes lets this profile's subagents use that profile's credentials, SOUL.md and terminal policy.Officialtools592NousResearchagent-importers`hermes import-agent`: import an OpenClaw (~/.openclaw, or legacy ~/.clawdbot / ~/.moltbot), Claude Code (~/.claude), Codex CLI (~/.codex), Cursor (~/.cursor), Grok Bot (a self-export the Bot writes from a prompt the importer prints) or OpenBot desktop (its openbot.db) setup into Hermes in one command; always previews first and asks before applying. Claude Code / Codex / Cursor: instructions, Cursor rules and memories become memory entries, Bash permission rules become command allow/deny lists, MCP servers land in config.yaml, skills are copied, and `--sync` re-imports sources that changed. OpenClaw (core's former `hermes claw migrate`; the plugin keeps that spelling, `hermes claw cleanup` and the openclaw-migration skill): persona, memories, skills, model and messaging settings, MCP servers and agent behaviour. Formerly built into Hermes core; `hermes setup` offers to install it when it finds one of these agents, and profiles with a registered sync source are migrated automatically. Disclosure — no Python dependencies, no network calls and no model calls. Claude Code / Codex / Cursor: reads those agents' local config trees (never their credential files; secret-looking MCP env vars and headers are stripped and listed) and writes only into the active profile (memories/MEMORY.md with a backup, config.yaml, skills/ and import-sync.json). OpenClaw: reads the OpenClaw dir (openclaw.json, its .env, workspace files such as SOUL.md / MEMORY.md / USER.md, skills); API keys and bot tokens come over only with --migrate-secrets (allowlisted names, shown in the preview). It writes into the active profile (config.yaml, .env, SOUL.md, memories/, skills/openclaw-imports/, a migration/openclaw/<time>/ report with item backups, and a backups/pre-migration-*.zip restore point), plus a workspace dir only when --workspace-target names one. It runs local pgrep / systemctl / tasklist checks to warn when OpenClaw or a Hermes gateway is still running, and `hermes claw cleanup` renames the OpenClaw dir to *.pre-migration after a confirmation. Grok Bot / OpenBot: instructions become SOUL.md, memories and user facts become memory entries, skills land in skills/<source>-imports/, scheduled routines become paused cron jobs (--activate-routines to start them) and event routines a notes file; credential-looking export keys refuse the file, and secret MCP env vars and headers are stripped and listed. OpenBot's database is opened read-only (or read from a scratch copy that is deleted after the read).Officialtools592NousResearchblenderOfficial Blender Lab MCP server over stdio, pinned to upstream v1.0.3, with a Blender workflow skill. Needs Git and uv; Blender 5.1+ is not needed at install. The skill opens Blender itself when a task needs it and, after you agree, installs Blender and Blender Lab's MCP add-on. First startup downloads Python dependencies; prepare the uv environment before connecting. Disclosure — tools execute arbitrary Python in Blender with your privileges; the skill starts Blender with online access for that session only (your saved preference is unchanged), and the add-on's local server on port 9876 has no password, so any program on this computer can use it while Blender is open; only after you agree does the skill download Blender from download.blender.org (about 400 MB, about 1.5 GB unpacked), check it against blender.org's sha256 list and install it in your own folder without administrator rights (Linux ~/.local/opt, macOS ~/Applications, Windows %LOCALAPPDATA%\Programs\Blender Foundation; never over an existing Blender), and download the v1.0.3 add-on, check its hash and install or enable it; first start downloads the pinned Blender Lab MCP server and its Python dependencies with uv. Server discovery does not prove scene readiness.Officialtools592