Help us improve
Share bugs, ideas, or general feedback.
Share bugs, ideas, or general feedback.
Share bugs, ideas, or general feedback.
By major7apps
Maintain persistent cognitive memory across Claude Code sessions by automatically capturing decisions, patterns, and context, and retrieving relevant memories on demand to avoid repeating mistakes and maintain consistency in large codebases.
npx claudepluginhub major7apps/pensyve --plugin pensyveRun memory consolidation to promote, decay, and archive memories
Delete all memories for an entity from Pensyve
View all memories stored for an entity in Pensyve
Show Pensyve memory namespace statistics and health overview
Search Pensyve memory by semantic similarity and text matching
On-demand research agent that decomposes queries into multiple search angles, runs parallel memory lookups, and synthesizes a structured briefing. Use when deep memory context is needed for a topic, entity, or decision.
Background monitoring agent that identifies memorable events during a session and suggests storing them with user confirmation. Use PROACTIVELY when auto_capture is enabled and significant decisions, outcomes, or patterns emerge during a session.
Session start context priming -- loads relevant memories from Pensyve at the beginning of a session to provide continuity across sessions. Use when switching projects or needing historical context.
Pre-refactor context loading -- queries Pensyve memory for past decisions, failures, and patterns related to a refactoring target, then compiles a briefing. Use when starting a refactor to avoid repeating past mistakes.
Memory hygiene audit -- checks for stale, contradictory, low-confidence, and consolidation-candidate memories, then offers cleanup actions with user confirmation. Use periodically to maintain memory quality.
End-of-session memory capture -- analyzes session for decisions, outcomes, and patterns worth remembering, then stores confirmed items via Pensyve. Use when ending a work session or when the user wants to capture what was learned.
Executes bash commands
Hook triggers when Bash tool is used
Modifies files
Hook triggers on file write and edit operations
Share bugs, ideas, or general feedback.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
Persistent memory for AI coding agents. Survives across sessions and compactions.
Use Memind as persistent memory for Claude Code sessions.
Curated persistent memory for Claude Code. Write gate prevents bloat — only behavior-changing facts get saved. Tiered architecture: daily logs, structured registers, and auto-loaded working memory.
Persistent memory for AI coding agents -- captures tool usage, compresses via LLM, injects context into future sessions. 12 hooks, 41 MCP tools, 4 skills, real-time viewer.
Multi-tiered memory and knowledge base with semantic search, auto-compaction, and built-in evaluation. Works across Claude Code, Copilot CLI, OpenCode, Cline, and Cursor.
Persistent memory for Claude Code — memories survive across sessions, projects, and machines
Uses power tools
Uses Bash, Write, or Edit tools
Uses power tools
Uses Bash, Write, or Edit tools
Share bugs, ideas, or general feedback.

Universal memory runtime for AI agents. Framework-agnostic, protocol-native, offline-first.
User: "I prefer dark mode and use vim keybindings"
Agent: "Got it!"
[next session]
User: "Update my editor settings"
Agent: "What settings would you like to change?"
User: "I ALREADY TOLD YOU"
# Session 1 — agent stores the preference
p.remember(entity=user, fact="Prefers dark mode and vim keybindings", confidence=0.95)
# Session 2 — agent recalls it automatically
memories = p.recall("editor settings", entity=user)
# → [Memory: "Prefers dark mode and vim keybindings" (score: 0.94)]
Your agent stops being amnesiac. Decisions, patterns, and outcomes persist across sessions — and the right context surfaces when it's needed.
| What you need | How Pensyve solves it |
|---|---|
| Agent forgets everything between sessions | Three memory types — episodic (what happened), semantic (what is known), procedural (what works) |
| Agent can't find the right memory | 8-signal fusion retrieval — vector similarity + BM25 + graph + intent + recency + frequency + confidence + type boost |
| Agent repeats failed approaches | Procedural memory — Bayesian tracking on action→outcome pairs surfaces what actually works |
| Memory store grows unbounded | FSRS forgetting curve — memories you use get stronger, unused ones fade naturally. Consolidation promotes repeated facts. |
| Need cloud signup to get started | Offline-first — SQLite + ONNX embeddings. Works on your laptop right now. No API keys needed. |
| Need to scale to production | Postgres backend — feature-gated pgvector for multi-node deployments. Managed service at pensyve.com. |
| Only works with one framework | Framework-agnostic — Python, TypeScript, Go, MCP, REST, CLI. Drop-in adapters for LangChain, CrewAI, AutoGen. |
pip install pensyve # Python (PyPI)
npm install pensyve # TypeScript (npm)
go get github.com/major7apps/pensyve/pensyve-go@latest # Go
Or use the MCP server directly with Claude Code, Cursor, or any MCP client — see MCP Setup.
pip install pensyve
import pensyve
p = pensyve.Pensyve()
user = p.entity("user", kind="user")
# Record a conversation — Pensyve captures it as episodic memory
with p.episode(user) as ep:
ep.message("user", "I prefer dark mode and use vim keybindings")
ep.message("agent", "Got it — I'll remember your editor preferences")
ep.outcome("success")
# Later (even in a new session), the agent recalls what happened
results = p.recall("editor preferences", entity=user)
for r in results:
print(f"[{r.score:.2f}] {r.content}")
When the consumer of recalled memories is another LLM (the dominant
"memory for an AI agent" pattern), recall_grouped() returns memories
already clustered by source session and ordered chronologically — ready
to format as session blocks in a reader prompt.
import pensyve
p = pensyve.Pensyve()
groups = p.recall_grouped("How many projects have I led this year?", limit=50)
# Each group is one conversation session — feed it to a reader directly.
for i, g in enumerate(groups, start=1):
print(f"### Session {i} ({g.session_time}):")
for m in g.memories:
print(f" {m.content}")
No more manual OrderedDict clustering, no more reordering by date string,
no more boilerplate every consumer has to reinvent.
p.remember(entity=user, fact="Prefers Python over JavaScript", confidence=0.9)
# After a debugging session that succeeded:
ep.outcome("success")