pi-hmem
HMEM hybrid memory for Pi Agent — FTS + vector + HRR holographic retrieval with knowledge graph, reflection, and shared-namespace tiering
Package details
Install pi-hmem from npm and Pi will load the resources declared by the package manifest.
$ pi install npm:pi-hmem- Package
pi-hmem- Version
0.3.0- Published
- Aug 26, 2026
- Downloads
- 511/mo · 19/wk
- Author
- icefairy
- License
- MIT
- Types
- extension, skill
- Size
- 73.2 KB
- Dependencies
- 0 dependencies · 2 peers
Pi manifest JSON
{
"extensions": [
"./extensions"
],
"skills": [
"./skills"
]
}Security note
Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.
README
pi-hmem — HMEM Hybrid Memory Extension for Pi Agent
Let your Pi Agent have long-term memory and learn from experience.
A Pi extension that connects to the HMEM Server to provide:
- 🧠 Long-term memory — store and retrieve facts, experiences, and insights
- 🔍 Hybrid search — keyword + semantic vector + knowledge graph + time decay
- 🧠 Reflection engine — learns mental models from your interactions
- 🕸️ Knowledge graph — relationships between memories
Install
From npm (recommended)
pi install npm:pi-hmem
From source
pi install /path/to/pi-hmem
Or load directly
pi -e npm:pi-hmem
pi -e /path/to/pi-hmem/extensions/index.ts
Quick Start
Prerequisites
- HMEM Server must be running. See hmem_hermes_agent for setup.
Configuration
Three configuration methods (priority high → low):
1. Environment variables (recommended)
export PIAGENT_HMEM_API_URL="http://localhost:8000"
export PIAGENT_HMEM_API_KEY="your-hmem-api-key"
export PIAGENT_HMEM_NAMESPACE="piagent"
export PIAGENT_HMEM_SHARED_NS="shared" # optional: shared tier memory (user prefs / mental models)
2. Project config file
Create .pi-hmem.json in your project root:
{
"apiUrl": "http://localhost:8000",
"apiKey": "your-hmem-api-key",
"namespace": "my-project",
"sharedNs": "shared"
}
3. Runtime command
/hmem config set apiUrl http://localhost:8002
/hmem config set apiKey your-hmem-api-key
/hmem config set namespace piagent
/hmem config set sharedNs shared
Tiered Shared Memory (graded sharing)
Role-based memory isolation by default: each role keeps its own namespace
(business memories + knowledge graph stay self-contained), while a shared
tier (sharedNs) carries cross-role knowledge — user preferences, common
mental models, environment layout.
- Every
hmem_searchalso queries thesharedNsnamespace (0.8× weight) when set - Shared hits are tagged
_ns/shared: truein results - Business memories always go to your own namespace; write shared-tier content
explicitly with
namespace: "shared"
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ lingjia │ │ dev │ │ wu │ │ create │ ← role namespaces (isolated, graph closed-loop)
└────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘
└──────────────┴──────┬──────┴──────────────┘
┌──────┴──────┐
│ shared │ ← prefs / mental models (queried at 0.8x)
└─────────────┘
Memory Hierarchy
observation ──write──→ experience ──reflect──→ insight ──aggregate──→ mental_model
| Type | Description | Write |
|---|---|---|
observation |
Raw facts, user preferences | ✅ hmem_write |
experience |
Structured experiences (action/context/outcome) | ✅ hmem_write |
insight |
Patterns discovered by reflection | ❌ Auto-generated only |
mental_model |
Abstract behavioral models | ❌ Auto-generated only |
⚠️ Only
observationandexperiencecan be written manually.insightandmental_modelare generated exclusively by thehmem_reflectreflection engine.
Available Tools
| Tool | Description |
|---|---|
hmem_write |
Store a memory (observation or experience) |
hmem_search |
Hybrid semantic search (FTS + vector + local HRR + graph expand) with rerank; supports min_score threshold |
hmem_list |
List recent memories, optionally by type |
hmem_get |
Get a single memory by ID |
hmem_delete |
Delete a memory by ID |
hmem_stats |
Memory statistics |
hmem_reflect |
Trigger reflection engine |
hmem_models |
List mental models and insights |
hmem_graph |
Knowledge graph nodes + edges |
hmem_namespaces |
List all namespaces |
hmem_doc_import |
Import a plain-text document (auto-chunked + vectorized) into a knowledge base |
hmem_doc_list |
List documents in a knowledge base |
hmem_doc_get |
Get full document content (all chunks) |
hmem_doc_delete |
Cascade-delete a document and all its chunks |
hmem_kb_put |
Add a single knowledge entry |
hmem_kb_query |
List knowledge entries (filter by category/doc_id/tags) |
hmem_kb_categories |
Knowledge base category summary |
hmem_kb_create |
Create/activate a knowledge base |
hmem_kb_list |
List all knowledge bases |
hmem_kb_delete |
Delete a knowledge base |
Available Commands
| Command | Description |
|---|---|
/hmem |
Show help |
/hmem config |
Show current configuration |
/hmem config set <key> <value> |
Set configuration |
/hmem stats |
Memory statistics |
/hmem search <query> |
Quick search (limit 5) |
/hmem list [type] |
List memories |
/hmem models |
List mental models |
/hmem reflect |
Trigger reflection |
/hmem namespaces |
List namespaces |
/hmem kb list |
List knowledge bases |
/hmem kb create <ns> |
Create a knowledge base |
/hmem kb delete <ns> |
Delete a knowledge base |
/hmem doc list |
List documents in default namespace |
/hmem doc get <id> |
Get document detail |
/hmem doc delete <id> |
Delete document |
Namespace
Default namespace is piagent-default. Each namespace maps to an independent SQLite database.
- Same namespace → shared memory across sessions/agents
- Different namespace → complete isolation
Multi-Agent Support
Multiple Pi agents using the same namespace will share memories and mental models — enabling collaborative learning.
Architecture
Pi Agent ──HTTP──▶ HMEM Server (FastAPI)
│
/api/v1/memories
/api/v1/search
/api/v1/stats
/api/v1/reflect
/api/v1/mental-models
/api/v1/graph
/api/v1/namespaces
/api/v1/documents ← knowledge base docs
/api/v1/knowledge ← knowledge entries
/api/v1/knowledge-bases ← library management
│
┌──────┴──────┐
│ namespace- │
│ db.db │
└─────────────┘
Memory Lifecycle
hmem_write (observation / experience)
│
▼
hmem_reflect
┌─ Accumulate experiences ─┐
│ LLM clustering │
└─→ insights ─→ mental models
│
▼
hmem_search / auto-prefetch
←─ Patterns guide behavior
Memory Prefetch
The extension auto-fetches relevant memories before each turn based on the user's message content, injecting up to 3 relevant memories into the context. When sharedNs is configured, shared-tier memories are merged into the results at 0.8× weight.
Version History
| Version | Date | Notes |
|---|---|---|
0.3.0 |
2026-08-26 | Knowledge base support: document import/CRUD, knowledge entries, library management (10 new tools) |
0.2.1 |
2026-08-25 | README: tiered-shared-memory docs, v0.2.0 notes |
0.2.0 |
2026-08-25 | Tiered shared memory (sharedNs), min_score threshold, HRR local holographic retrieval integration |
0.1.0 |
2026-08-05 | Initial release: 10 tools, 10 commands, reflection integration, auto-prefetch |
License
MIT