Skip to content

feat: Pi and Hermes support#151

Merged
wey-gu merged 3 commits intomainfrom
dev_0615
Apr 1, 2026
Merged

feat: Pi and Hermes support#151
wey-gu merged 3 commits intomainfrom
dev_0615

Conversation

@wey-gu
Copy link
Copy Markdown
Member

@wey-gu wey-gu commented Apr 1, 2026

Note

Low Risk
Low risk: changes are limited to adding new integration metadata and documentation/skill guidance, with no modifications to core runtime or server logic.

Overview
Adds two new integrations to the community registry and docs: a Pi skills package (CLI-driven nmem skills including Working Memory, search, distill, status, and handoff-style save-thread) and a Hermes Agent connector (MCP-based access to memory + thread tools).

Updates the canonical integrations.json registry plus surfaced discovery docs (README.md and the check-integration skill table) so users can detect/install these integrations and follow the new nowledge-mem-pi-package and nowledge-mem-hermes setup/guidance content.

Written by Cursor Bugbot for commit 14511b1. This will update automatically on new commits. Configure here.

Summary by CodeRabbit

  • New Features

    • Added Pi Package integration with five composable working memory skills (read, search, distill, save, status)
    • Added Hermes Agent integration with MCP-based memory tools including search, add, update, delete, and thread operations
  • Documentation

    • Added configuration guides, agent playbooks, and troubleshooting instructions for both Pi and Hermes integrations

wey-gu and others added 3 commits March 31, 2026 21:29
Pi: five composable skills (read-working-memory, search-memory,
distill-memory, save-thread, status) as an npm package for Pi's
Agent Skills Standard. Install via `pi install npm:nowledge-mem-pi`.

Hermes: MCP-based integration with behavioral guidance. Users add
the Nowledge Mem MCP server to ~/.hermes/config.yaml for full tool
access. Includes AGENTS.md template for project-level guidance.

Updated: integrations.json registry, community README table,
check-integration detection table.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…mes integrations

Remove non-existent CLI flags from Pi search-memory skill, fix relative
URLs to absolute for GitHub compatibility, add missing Risks field to
handoff template, remove phantom MCP tools from Hermes README, and add
Update section for consistency with other integrations.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…abilities

Replace localhost with 127.0.0.1 in all Hermes MCP config examples.
Fix relative /docs/integrations URL to absolute for GitHub compatibility.
Set graphExploration to true (memory_neighbors and memory_evolves_chain
are documented). Update threadSave method to mcp-tool since thread_persist
is available.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@wey-gu
Copy link
Copy Markdown
Member Author

wey-gu commented Apr 1, 2026

bugbot run

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 1, 2026

📝 Walkthrough

Walkthrough

This PR adds two new integrations to the Nowledge Mem ecosystem: Pi Package and Hermes Agent. It includes configuration entries in integrations.json, updates to the main README, and comprehensive documentation covering installation, behavioral guidance, and operational skills for both integrations.

Changes

Cohort / File(s) Summary
Integration Registry
README.md, integrations.json
Added Pi and Hermes entries to the integrations table and configuration registry, including transport types (CLI and MCP), capabilities, installation commands, tool naming conventions, and skill/command definitions.
Hermes Integration Docs
nowledge-mem-hermes/AGENTS.md, nowledge-mem-hermes/CHANGELOG.md, nowledge-mem-hermes/README.md
Added documentation for Hermes Agent integration covering setup, MCP tool usage, memory search/save workflows, thread persistence, and troubleshooting guidance; includes v0.1.0 release notes.
Pi Package Integration
nowledge-mem-pi-package/package.json, nowledge-mem-pi-package/AGENTS.md, nowledge-mem-pi-package/CHANGELOG.md, nowledge-mem-pi-package/README.md
Added package manifest, documentation, and behavioral guides for Pi Package integration covering installation via pi package manager, CLI skill usage, working memory operations, memory CRUD workflows, and configuration options.
Pi Skills Documentation
nowledge-mem-pi-package/skills/read-working-memory/SKILL.md, nowledge-mem-pi-package/skills/search-memory/SKILL.md, nowledge-mem-pi-package/skills/distill-memory/SKILL.md, nowledge-mem-pi-package/skills/save-thread/SKILL.md, nowledge-mem-pi-package/skills/status/SKILL.md
Added five skill documentation files defining CLI usage, command-line flags, workflows for memory retrieval/saving/distillation, health checking, and add-vs-update procedures.
Integration Detection Update
nowledge-mem-npx-skills/skills/check-integration/SKILL.md
Added Pi and Hermes Agent detection entries to the integrations recommendation table.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~15 minutes

Possibly related PRs

Poem

🐰 Two new friends join the warren of knowledge today,
Pi skills and Hermes chatter in their special way,
With CLIs and MCPs, they dance and recall,
Threading memories together—the wisdom for all! 🌿✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat: Pi and Hermes support' accurately reflects the main changes, which add integration support for two new tools (Pi and Hermes Agent) across documentation, configuration, and skill files.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch dev_0615

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (2)
nowledge-mem-pi-package/skills/distill-memory/SKILL.md (1)

61-69: Add search command example to "Add vs Update" workflow.

The section advises searching first to avoid duplicates but doesn't show the search command. Including a complete example would make the workflow more actionable.

💡 Suggested enhancement
 ## Add vs Update
 
-Search first to avoid duplicates. If a memory already captures the same concept and the new information refines it, update instead of creating a new entry:
+Search first to avoid duplicates:
+
+```bash
+nmem --json m search "the concept you're about to save"
+```
+
+If a memory already captures the same concept and the new information refines it, update instead of creating a new entry:
 
 ```bash
 nmem --json m update <memory_id> -c "updated content"
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @nowledge-mem-pi-package/skills/distill-memory/SKILL.md around lines 61 - 69,
Add an explicit search example to the "Add vs Update" section so users see the
recommended command before updating or adding; insert a line demonstrating the
search command (nmem --json m search "the concept you're about to save")
immediately before the paragraph that begins "If a memory already captures the
same concept..." in the "Add vs Update" block of SKILL.md so the workflow shows
search, then update (nmem --json m update <memory_id> -c "updated content") if
needed.


</details>

</blockquote></details>
<details>
<summary>nowledge-mem-pi-package/README.md (1)</summary><blockquote>

`75-75`: **Clarify env vars as temporary overrides (not equal primary config).**

Line 75 currently presents environment variables as a peer default path. Please prefer config-file-first wording and frame env vars as temporary shell-level overrides (and mirror this wording in `nowledge-mem-pi-package/AGENTS.md` Line 73).

<details>
<summary>Suggested wording</summary>

```diff
-**Remote setup:** Create `~/.nowledge-mem/config.json` with `{"apiUrl": "...", "apiKey": "..."}`, or set `NMEM_API_URL` and `NMEM_API_KEY` environment variables.
+**Remote setup:** Create `~/.nowledge-mem/config.json` with `{"apiUrl": "...", "apiKey": "..."}`. Use `NMEM_API_URL` and `NMEM_API_KEY` only for temporary shell-level overrides.
Based on learnings: For remote Nowledge Mem instances, store credentials in `~/.nowledge-mem/config.json`; use `NMEM_API_URL` and `NMEM_API_KEY` environment variables only for temporary overrides.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@nowledge-mem-pi-package/README.md` at line 75, Update the README and
AGENTS.md text to prefer the config-file-first wording: state that remote
Nowledge Mem credentials should be stored in ~/.nowledge-mem/config.json and
that NMEM_API_URL and NMEM_API_KEY are supported only as temporary shell-level
overrides (not as equal alternatives); replace the existing line that presents
env vars as a peer default with this config-first phrasing in README and mirror
the same change in AGENTS.md.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@nowledge-mem-pi-package/README.md`:
- Around line 53-55: The fenced code block containing the line "> check my
Nowledge Mem status" needs a language tag to satisfy markdownlint MD040; update
the opening triple-backtick for that block to include a language (e.g., use
"text") so the snippet becomes ```text and the closing triple-backticks remain
unchanged, locating the block by the literal line text "> check my Nowledge Mem
status".

In `@nowledge-mem-pi-package/skills/save-thread/SKILL.md`:
- Around line 31-38: In SKILL.md update the fenced code block at the template
(the triple-backtick block containing "Goal: ... Next: ...") to include a
language identifier (for example change ``` to ```text) so markdown linters and
renderers treat it as plain text; locate the block in SKILL.md and add the
chosen language tag to the opening fence.

---

Nitpick comments:
In `@nowledge-mem-pi-package/README.md`:
- Line 75: Update the README and AGENTS.md text to prefer the config-file-first
wording: state that remote Nowledge Mem credentials should be stored in
~/.nowledge-mem/config.json and that NMEM_API_URL and NMEM_API_KEY are supported
only as temporary shell-level overrides (not as equal alternatives); replace the
existing line that presents env vars as a peer default with this config-first
phrasing in README and mirror the same change in AGENTS.md.

In `@nowledge-mem-pi-package/skills/distill-memory/SKILL.md`:
- Around line 61-69: Add an explicit search example to the "Add vs Update"
section so users see the recommended command before updating or adding; insert a
line demonstrating the search command (nmem --json m search "the concept you're
about to save") immediately before the paragraph that begins "If a memory
already captures the same concept..." in the "Add vs Update" block of SKILL.md
so the workflow shows search, then update (nmem --json m update <memory_id> -c
"updated content") if needed.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 901561fb-cf03-4f8c-b456-78bd61c32523

📥 Commits

Reviewing files that changed from the base of the PR and between 8c1f3b2 and 14511b1.

📒 Files selected for processing (15)
  • README.md
  • integrations.json
  • nowledge-mem-hermes/AGENTS.md
  • nowledge-mem-hermes/CHANGELOG.md
  • nowledge-mem-hermes/README.md
  • nowledge-mem-npx-skills/skills/check-integration/SKILL.md
  • nowledge-mem-pi-package/AGENTS.md
  • nowledge-mem-pi-package/CHANGELOG.md
  • nowledge-mem-pi-package/README.md
  • nowledge-mem-pi-package/package.json
  • nowledge-mem-pi-package/skills/distill-memory/SKILL.md
  • nowledge-mem-pi-package/skills/read-working-memory/SKILL.md
  • nowledge-mem-pi-package/skills/save-thread/SKILL.md
  • nowledge-mem-pi-package/skills/search-memory/SKILL.md
  • nowledge-mem-pi-package/skills/status/SKILL.md

Comment on lines +53 to +55
```
> check my Nowledge Mem status
```
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Add a language tag to the fenced block at Line 53.

This currently triggers markdownlint MD040.

Suggested fix
-```
+```text
 > check my Nowledge Mem status
</details>

<!-- suggestion_start -->

<details>
<summary>📝 Committable suggestion</summary>

> ‼️ **IMPORTANT**
> Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

```suggestion

🧰 Tools
🪛 markdownlint-cli2 (0.22.0)

[warning] 53-53: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@nowledge-mem-pi-package/README.md` around lines 53 - 55, The fenced code
block containing the line "> check my Nowledge Mem status" needs a language tag
to satisfy markdownlint MD040; update the opening triple-backtick for that block
to include a language (e.g., use "text") so the snippet becomes ```text and the
closing triple-backticks remain unchanged, locating the block by the literal
line text "> check my Nowledge Mem status".

Comment on lines +31 to +38
```
Goal: What the session set out to accomplish
Decisions: Key choices made and their rationale
Files: Important files created or modified
Outcome: What was achieved
Risks: Known risks, open questions, or things that could break
Next: Concrete steps for the next session
```
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Add language identifier to fenced code block.

The content format template is missing a language identifier. While this is a template rather than executable code, markdown linters require language tags on fenced code blocks for proper rendering and accessibility.

📝 Proposed fix
-```
+```text
 Goal: What the session set out to accomplish
 Decisions: Key choices made and their rationale
 Files: Important files created or modified
 Outcome: What was achieved
 Risks: Known risks, open questions, or things that could break
 Next: Concrete steps for the next session
</details>

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.22.0)</summary>

[warning] 31-31: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>

</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @nowledge-mem-pi-package/skills/save-thread/SKILL.md around lines 31 - 38, In
SKILL.md update the fenced code block at the template (the triple-backtick block
containing "Goal: ... Next: ...") to include a language identifier (for example
change totext) so markdown linters and renderers treat it as plain text;
locate the block in SKILL.md and add the chosen language tag to the opening
fence.


</details>

<!-- fingerprinting:phantom:triton:puma:c840c290-9259-47ed-af69-c793d6973600 -->

<!-- This is an auto-generated comment by CodeRabbit -->

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant