Skip to content

feat: memory plugin for keep - #5172

Closed
hughpyle wants to merge 3 commits into
NousResearch:mainfrom
keepnotes-ai:feat/keep-memory-plugin
Closed

feat: memory plugin for keep#5172
hughpyle wants to merge 3 commits into
NousResearch:mainfrom
keepnotes-ai:feat/keep-memory-plugin

Conversation

@hughpyle

@hughpyle hughpyle commented Apr 5, 2026

Copy link
Copy Markdown

Summary

Add a keep external memory provider plugin for Hermes.

This integrates keep-skill (PyPI, GitHub) as a first-class Hermes memory provider, exposes Keep's tool surface (keep_flow, keep_help, keep_prompt).

Small changes in Hermes: makes hermes memory setup handle Keep-specific provider configuration, and passes per-turn user information to memory providers.

What changed

Keep memory plugin

  • add a new memory plugin at plugins/memory/keep/
  • expose Keep tools through the Hermes memory provider interface

Hermes updates

  • make hermes memory setup handle provider choice schemas more reliably
  • avoid reporting provider config success when the provider's own config save failed
  • pass user_id and user_name to memory providers so that they can provide correct attribution

Why

Keep is a reflective memory system with:

  • persistent storage, summarization and document extraction
  • structured tagging and relationship edges
  • version history and parts analysis
  • semantic search and contextual retrieval
  • prompt-backed reflection workflows for skill improvement

This plugin lets Hermes use Keep directly as an external memory provider without changes to Hermes core memory-manager behavior.

Manual verification

Tested the Keep setup flow through Hermes:

  • run hermes memory setup
  • select keep
  • confirm Hermes installs keep-skill automatically when needed
  • confirm Keep appears as an available provider
  • Keep requires an embedding provider and works best with a summarization provider as well. Local Ollama can be automatically detected and bootstrapped, other options generally require provider API keys in the environment. See docs for provider coverage.
  • start a new Hermes session
  • confirm the agent can call keep_help, review the returned guidance, and use keep_flow / keep_prompt productively (not just exposing the tool names)
  • confirm messages are visible in keep --store ~/.hermes/keep list (or appropriate path per profile).

@Daniels77777

Copy link
Copy Markdown

I have been using the Keep and Hermes Agent v0.6.0 for 48 hours -> My existence system keeps getting better results.

@hughpyle

hughpyle commented Apr 5, 2026

Copy link
Copy Markdown
Author

Updated behavior: Keep wants to build a graph of user/message relationships, so this PR also extends the Hermes per-turn memory interface to pass user_id, user_name where available.

Still benefits from #7789 for full per-turn attribution but doesn't require that.

@hughpyle
hughpyle force-pushed the feat/keep-memory-plugin branch 3 times, most recently from 427e3b7 to fb43120 Compare April 9, 2026 21:18
@hughpyle

hughpyle commented Apr 9, 2026

Copy link
Copy Markdown
Author

Updated behavior: reverted my user_id changes to the per-turn memory interface, covered by #5895

@hughpyle
hughpyle force-pushed the feat/keep-memory-plugin branch from fb43120 to c2e50d0 Compare April 11, 2026 15:59
@alt-glitch alt-glitch added type/feature New feature or request P3 Low — cosmetic, nice to have comp/plugins Plugin system and bundled plugins tool/memory Memory tool and memory providers labels May 1, 2026
hughpyle added 3 commits May 13, 2026 15:54
Keep provides reflective memory with semantic search, tagging, versioned
session capture, and agent prompts via keep-skill.

Plugin:
- Typed delegate wrapping keep.hermes.KeepMemoryProvider
- Lazy-loaded impl so Hermes lists keep in setup wizard before install
- keep_flow param normalization for chat-surface JSON string quirks
- CLI: hermes keep status

Setup wizard (memory_setup.py):
- Support choice-dict schemas ({label, value, description, default})
- Handle empty_message/empty_hints for unavailable providers
- Distinguish provider config save success from activation save
Tests:
- Keep plugin compatibility: cron skip, param hoisting, JSON string
  params, unknown key passthrough, missing impl error
- Memory setup wizard: choice-dict schemas, save_config failure handling
- Keep CLI: subcommand tree, status output

Docs:
- Add Keep to memory providers documentation page
@hughpyle
hughpyle force-pushed the feat/keep-memory-plugin branch from c2e50d0 to 3f4fb89 Compare May 13, 2026 23:09
@hughpyle

Copy link
Copy Markdown
Author

Aligned with upstream.

@kshitijk4poor

Copy link
Copy Markdown
Collaborator

Thanks for the contribution!

Per the updated CONTRIBUTING.md, new memory providers are no longer accepted as in-tree additions to plugins/memory/:

Memory Providers: CLOSED to new in-tree additions
PRs adding to plugins/memory/ will be closed. Publish as standalone plugin into ~/.hermes/plugins/ or via pip entry point. Must implement MemoryProvider ABC (sync_turn, prefetch, shutdown, optional post_setup).

Closing this in line with that policy. The path forward is to publish it as a standalone plugin so users can install it directly without touching the Hermes source tree. Once it's published, a small docs PR adding it to the Community plugins section of the README is welcome.

Sorry for the bump — appreciate the time you put into this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/plugins Plugin system and bundled plugins P3 Low — cosmetic, nice to have tool/memory Memory tool and memory providers type/feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants