Pensyve
Memory serverOfficial Major 7 Apps LLC project
Created by Major 7 Apps LLC
Published in major7apps/pensyve. Publisher page
100 GitHub stars
What it is
Universal memory runtime for AI agents
AutoGineer overview, from the brain’s own files
Pensyve is an open-source memory runtime designed to provide AI agents with persistent, cross-session recall. It functions as a memory layer that stores facts, conversations, observations, and action outcomes outside of the language model itself. The system is built in Rust and utilizes SQLite for local storage, with optional PostgreSQL support. It supports semantic search via locally run embedding models and provides multiple interfaces, including a Python SDK, an MCP server for integration with tools like Claude Code and Cursor, and an HTTP gateway for REST-based access. Pensyve is designed to be self-hosted, requiring no external accounts or API keys for local operation.
How it works
Memory model: Hybrid
AutoGineer overview, from the brain’s own files
Pensyve operates as a memory server that stores data in a local SQLite database or a PostgreSQL instance. It organizes information into four categories: facts (semantic memory), conversations (episodic memory), action outcomes (procedural memory), and observations. The system uses embedding models to enable semantic search across these records. Agents interact with Pensyve through various SDKs or the MCP protocol to save and retrieve information, which is then injected into the agent's prompt to provide context across different sessions and processes.
| Folder | Role | Files |
|---|---|---|
| .github | agent-config | 10 |
| docs | docs | 15 |
| scripts | scripts | 3 |
| tests | tests | 11 |
| .agents | folder | 1 |
| .claude-plugin | folder | 1 |
| benchmarks | folder | 8 |
| integrations | folder | 324 |
| loadtest | folder | 3 |
| pensyve-benchmarks | folder | 17 |
| pensyve-cli | folder | 3 |
| pensyve-core | folder | 90 |
| pensyve-go | folder | 10 |
| pensyve-mcp | folder | 6 |
| pensyve-mcp-gateway | folder | 36 |
| pensyve-mcp-tools | folder | 5 |
| pensyve-python | folder | 19 |
| pensyve-ts | folder | 11 |
| pensyve-wasm | folder | 4 |
| pensyve_server | folder | 3 |
| results | folder | 6 |
Requirements
Runtimes: Python >=3.10, Rust
Databases: PostgreSQL, SQLite
Works with: Claude Code, OpenAI Codex, GitHub Copilot, Cursor, Kiro, OpenCode, Amp, Cline, JetBrains Junie, Devin (ex-Windsurf)
Set it up
This brain runs code automatically: 8 hooks (claude-code, codex). Review integrations/claude-code/hooks/hooks.json, integrations/codex-plugin/hooks/hooks.json before opening the folder in Claude Code. No step below turns a hook on for you.
integrations/claude-code/hooks/hooks.json:cat "${CLAUDE_PLUGIN_ROOT}/hooks/session-start.md"integrations/claude-code/hooks/hooks.json:cat "${CLAUDE_PLUGIN_ROOT}/hooks/post-tool-write-edit.md"integrations/claude-code/hooks/hooks.json:cat "${CLAUDE_PLUGIN_ROOT}/hooks/post-tool-bash.md"integrations/claude-code/hooks/hooks.json:cat "${CLAUDE_PLUGIN_ROOT}/hooks/pre-compact.md"integrations/claude-code/hooks/hooks.json:cat "${CLAUDE_PLUGIN_ROOT}/hooks/stop.md"integrations/claude-code/hooks/hooks.json:cat "${CLAUDE_PLUGIN_ROOT}/hooks/user-prompt-submit.md"integrations/codex-plugin/hooks/hooks.json:cat "${PLUGIN_ROOT}/hooks/session-start.md"integrations/codex-plugin/hooks/hooks.json:cat "${PLUGIN_ROOT}/hooks/user-prompt-submit.md"
- Not scanned by AutoGineerThe author’s MCP configuration (README.md) also starts it in a way AutoGineer does not offer. Read that file: AutoGineer did not scan that path; what it runs is listed under “This brain runs”. https://github.com/major7apps/pensyve/blob/d2c56fa44d1ee7b2d504f0008c6b9c860bc7d25f/README.md
- Not scanned by AutoGineerThe author’s MCP configuration (smithery.yaml) also starts it in a way AutoGineer does not offer. Read that file: AutoGineer did not scan that path; what it runs is listed under “This brain runs”. https://github.com/major7apps/pensyve/blob/d2c56fa44d1ee7b2d504f0008c6b9c860bc7d25f/smithery.yaml
- Not scanned by AutoGineerThe author’s README also describes installing it as the PyPI package pensyve. Read its install section: AutoGineer did not scan that path. https://github.com/major7apps/pensyve/blob/d2c56fa44d1ee7b2d504f0008c6b9c860bc7d25f/README.md#python-quick-start
- Not scanned by AutoGineerThe author also offers a container image (ghcr.io/major7apps/pensyve-mcp:5.0.0). https://github.com/major7apps/pensyve/tree/d2c56fa44d1ee7b2d504f0008c6b9c860bc7d25f
Created by Major 7 Apps LLC. Published in major7apps/pensyve. Licence: Apache License 2.0.
Usage
AutoGineer overview, from the brain’s own files
- Add persistent memory to Python-based AI agents using the Python SDK.
- Connect AI coding assistants like Claude Code, Cursor, or Codex to a shared memory store via the MCP server.
- Share a centralized memory store across multiple services using the HTTP gateway.
- Integrate with LangChain or LangGraph frameworks for enhanced agent memory capabilities.
- Perform semantic search and retrieval of past conversations or facts via the command-line interface.
- “Save a fact about the user's preference for dark mode.”
- The agent stores the fact in the local SQLite database, allowing it to recall this preference in future sessions.
- “Recall previous editor settings for the current project.”
- The agent retrieves relevant facts or conversation history from the memory store and uses them to inform its current task.
Documentation by Major 7 Apps LLC
Pensyve
Image: CI Image: License: Apache 2.0 Image: Python 3.10+ Image: Rust 1.94+
Pensyve is an open-source runtime for persistent AI agent memory. It stores facts, conversations, observations, and action outcomes so an agent can retrieve them in later sessions. You can use it through Python, a Model Context Protocol (MCP) server, a command-line tool, or a REST API.
The Rust engine uses SQLite for local storage and runs embedding models locally to search by meaning. TypeScript and Go clients connect to a gateway you run yourself. Local use does not require a Pensyve account or API key. Your application or client integration calls Pensyve to save and retrieve memories.
Choose a setup
| Use case | Start here |
|---|---|
| Add persistent memory to a Python agent | Python quick start |
| Give Claude Code, Cursor, or Codex access to memory tools | MCP server and client setup guides |
| Share a memory store through TypeScript, Go, or REST | HTTP gateway |
| Use a LangChain or LangGraph adapter | Python integration or TypeScript integration |
Project status
Pensyve Cloud closed on October 1, 2026. The open-source project continues in this repository under the Apache 2.0 license, with the engine, SDKs, integrations, and documentation available here.
Pensyve is in maintenance mode. Releases cover security fixes and dependency updates, with no new features planned. See the maintenance policy for contribution and support expectations. If you have a saved Cloud export, the self-hosting guide explains how to use it with your own gateway.
What you can do
Store facts about users, projects, or other named entities, and record conversations as episodes.
Search memories using text matching, embeddings, and relationships between entities.
Record observations and action outcomes, and use consolidation to promote repeated facts and update memory retention.
Keep data in local SQLite storage, or run the HTTP gateway with SQLite or PostgreSQL.
Embedding models may download when first loaded unless they are already cached. Running without network access requires preparing the model files first. See the model setup and deployment guide.
How agent memory works
Pensyve stores memory outside the language model. Your application saves facts or conversations, searches for relevant records, and adds the results to a later prompt. Reusing the same storage path and namespace lets the agent retrieve information across processes and sessions. Saving a memory does not train the language model or change its weights.
The store holds four kinds of records: facts (semantic memory), conversations (episodic memory), action outcomes (procedural memory), and observations. Your integration decides what to record and when to retrieve it. Recording a conversation does not automatically turn it into a successful procedure. See how storage and retrieval work and the usage recipes for the APIs and their limits.
Python quick start
Python 3.10 or newer is required.
pip install pensyveCreate a local store, save a fact, and retrieve it:
import pensyve
p = pensyve.Pensyve(path="./memories", namespace="my-agent")
user = p.entity("user", kind="user")
p.remember(
entity=user,
fact="Prefers dark mode and vim keybindings",
confidence=0.95,
)
for memory in p.recall("editor preferences", entity=user):
print(memory.content)Reuse the same path and namespace in a later process to retrieve saved memories. The Python SDK runs the engine in your process and does not need the HTTP gateway.
You can also record a conversation with the same p and user:
with p.episode(user) as episode:
episode.message("user", "Use dark mode in my editor")
episode.message("agent", "I updated the editor settings")
episode.outcome("success")
groups = p.recall_grouped("editor settings", limit=10)
for group in groups:
for memory in group.memories:
print(memory.content)recall_grouped() groups results by source session for use in an agent's
prompt. See the Python SDK guide and
recipes for more examples.
MCP server
Pensyve's local MCP memory server lets clients such as Claude Code, Codex, and Cursor store and retrieve memories across sessions. From a checkout of this repository, install the server with Rust 1.94 or newer:
git clone https://github.com/major7apps/pensyve.git
cd pensyve
cargo install --path pensyve-mcp --lockedMake sure Cargo's binary directory is on your client's PATH, then add a
stdio server entry to its MCP configuration:
{
"mcpServers": {
"pensyve": {
"command": "pensyve-mcp",
"args": ["--stdio"],
"env": {
"PENSYVE_NAMESPACE": "my-project"
}
}
}
}The server provides tools such as pensyve_remember, pensyve_recall,
pensyve_observe, and pensyve_inspect. It stores data locally and needs no
API key. The configuration file location depends on your client. See the
MCP setup guide and
integration guides.
HTTP gateway
Run the gateway to access Pensyve over REST or MCP HTTP, including from the TypeScript and Go SDKs. From the repository root, start a local instance:
HOST=127.0.0.1 PENSYVE_API_KEYS=psy_local_example \
cargo run --release -p pensyve-mcp-gatewayIn another terminal, save and recall a fact:
curl http://localhost:3000/v1/remember \
-H "Authorization: Bearer psy_local_example" \
-H "Content-Type: application/json" \
-d '{"entity":"user","fact":"Prefers Python","confidence":0.95}'
curl http://localhost:3000/v1/recall \
-H "Authorization: Bearer psy_local_example" \
-H "Content-Type: application/json" \
-d '{"query":"programming language","entity":"user"}'The MCP HTTP endpoint is http://localhost:3000/mcp. Use the same API key in
your client's Authorization: Bearer header.
The example key is for local testing. For a deployment, choose your own key
with the required psy_ prefix and configure HTTPS and allowed hosts. See
the self-hosting guide,
gateway configuration, and
security documentation.
SDKs and integrations
The TypeScript and Go SDKs require a running gateway. Configure its URL and, when authentication is enabled, an API key from that gateway.
| Interface | Installation or guide |
|---|---|
| Python | pip install pensyve, SDK guide |
| TypeScript | npm install @pensyve/sdk, SDK guide |
| Go | go get github.com/major7apps/pensyve/pensyve-go/v5@latest, SDK guide |
| Claude Code | Plugin setup |
| Cursor | MCP setup and rules |
| Codex | Plugin setup |
| LangChain and LangGraph | Python adapter, TypeScript adapter |
| Other clients and frameworks | Integration index |
Command-line tool
From the repository root, install the CLI and inspect its commands:
cargo install --path pensyve-cli --locked
pensyve --help
pensyve status
pensyve recall "editor preferences" --entity userThe binary is named pensyve. Its default output is JSON, and --format text
selects text output. The CLI uses its own default local storage location;
it does not automatically open the ./memories directory from the Python
example. See the CLI source and command definitions
for storage and namespace options.
Documentation
| Guide | Contents |
|---|---|
| Documentation index | Choose a setup, find API guides, and identify historical plans |
| Getting started | Setup by client or SDK |
| Self-hosting | Gateway deployment, model files, backups, and saved Cloud exports |
| Recipes | Recall, facts, episodes, observations, and other API examples |
| Architecture | Storage, retrieval, and component boundaries |
| Security | Authentication, namespace isolation, and execution limits |
| Reliability | Tests and runtime guarantees |
| Changelog | Release history and breaking changes |
Development and contributions
Start with CONTRIBUTING.md for prerequisites and setup. From the repository root:
uv sync --extra dev
make build
make checkmake build compiles Rust and builds the Python extension. make check
runs the Rust and Python lint and test commands. TypeScript and Go have
separate checks documented in the contribution guide.
Issues and pull requests follow the maintenance policy. Report security issues through private vulnerability reporting.
License
Pensyve is licensed under Apache 2.0.
docs/ARCHITECTURE.md
Pensyve Architecture
Pensyve stores agent memories outside an LLM's context window. Your application or MCP client saves facts and episode messages, retrieves relevant records, and passes those records to the model when needed. Storing memories does not train the model or automatically add them to every prompt.
Pensyve runs locally or on your own server under Apache 2.0. See the maintenance policy for the current project status and the getting started guide for installation.
System Overview
┌─────────────────────────────────────────────────────────────────┐
│ Consumers │
│ ┌──────────┐ ┌──────────┐ ┌──────────────┐ ┌──────────┐ │
│ │ Python │ │ MCP │ │ HTTP Gateway │ │ TypeScript│ │
│ │ SDK │ │ Server │ │ REST + MCP │ │ SDK │ │
│ │(PyO3) │ │(stdio) │ │(Rust/Axum) │ │(HTTP) │ │
│ └────┬─────┘ └────┬─────┘ └──────┬───────┘ └────┬─────┘ │
│ │ │ │ │ │
│ pensyve-python pensyve-mcp pensyve-mcp-gateway pensyve-ts │
├───────┼─────────────┼────────────┼─────────────┼────────────────┤
│ └─────────────┴──────┬─────┘ │ │
│ │ │ │
│ ┌───────┴───────┐ (REST calls) │
│ │ pensyve-core │ │ │
│ │ (Rust rlib) │◄───────────┘ │
│ └───────┬───────┘ │
│ │ │
│ ┌─────────────────────────┼─────────────────────────┐ │
│ │ Core Engine │ │
│ │ │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────────────┐│ │
│ │ │ Storage │ │Embedding │ │ Retrieval Engine ││ │
│ │ │ (SQLite │ │ (ONNX │ │ (Vector + BM25 + ││ │
│ │ │ + FTS5) │ │ fastembed│ │ Graph + Fusion) ││ │
│ │ └──────────┘ └──────────┘ └──────────────────┘│ │
│ │ │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────────────┐│ │
│ │ │ FSRS │ │Procedural│ │ Consolidation ││ │
│ │ │ Decay │ │ Bayesian │ │ (promotion) ││ │
│ │ └──────────┘ └──────────┘ └──────────────────┘│ │
│ │ │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────────────┐│ │
│ │ │ Bounded │ │ Graph │ │ Reranker ││ │
│ │ │ Search │ │ (petgraph│ │ (cross-encoder) ││ │
│ │ └──────────┘ └──────────┘ └──────────────────┘│ │
│ └────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘Subproject Map
| Project | Language | Type | Depends On |
|---|---|---|---|
pensyve-core | Rust | Library (rlib) | — |
pensyve-python | Rust + Python | PyO3 cdylib | pensyve-core |
pensyve-mcp | Rust | Binary (stdio) | pensyve-core, pensyve-mcp-tools |
pensyve-mcp-tools | Rust | Library (rlib) | pensyve-core |
pensyve-mcp-gateway | Rust | Binary (Axum HTTP) | pensyve-core, pensyve-mcp-tools |
pensyve-cli | Rust | Binary (pensyve) | pensyve-core |
pensyve-benchmarks | Rust | Bench harness | pensyve-core |
pensyve-ts | TypeScript | npm package (bun) | REST API (HTTP) |
pensyve-go | Go | Go module | REST API (HTTP) |
pensyve-wasm | Rust | cdylib (wasm-bindgen) | — (standalone, not in workspace) |
integrations/vscode | TypeScript | VS Code extension | REST API (HTTP) |
integrations/claude-code | Markdown + JSON | Claude Code plugin | MCP server |
pensyve_server | Python | Shared Python utilities | pensyve (Python SDK) |
integrations/ | Python, TypeScript, configuration | Framework adapters and client setup | Python SDK, REST, or MCP |
Core Engine Modules (pensyve-core/src/)
| Module | Responsibility |
|---|---|
storage/sqlite.rs | SQLite with WAL mode, FTS5 for BM25, multimodal content types, ACL table |
storage/postgres.rs | Postgres backend (feature-gated) with pgvector, tsvector FTS, JSONB |
embedding.rs | ONNX embeddings via fastembed; stored as raw f32 BLOBs |
vector.rs | Cosine-similarity primitives; shipping runtimes use storage-backed search rather than a resident corpus index |
graph.rs | Entity relationship graph via petgraph; BFS traversal for proximity scoring |
retrieval/engine.rs | RecallEngine combines ranked signals with reciprocal rank fusion (RRF); cross-encoder reranking requires explicit configuration |
decay.rs | FSRS forgetting curve: R(t, S) = (1 + t/(9*S))^(-1) |
consolidation/mod.rs | Bounded episodic-to-semantic promotion and decay updates |
procedural.rs | Beta-binomial Bayesian reliability for action-outcome procedures |
extraction/mod.rs | Pattern-based extraction helpers; use depends on the calling pipeline |
observation.rs | Optional extraction of structured observations from episode messages |
observability.rs | Atomic metrics counters, Prometheus text export, tracing instrumentation |
mesh.rs | RBAC with Role (Owner/Writer/Reader), Visibility (Private/Shared/Public), ACL entries |
types.rs | Data model including ContentType enum (Text/Code/Image/ToolOutput/Structured) |
Storage is abstracted via StorageTrait, allowing SQLite and Postgres to be swapped transparently.
HTTP Gateway (pensyve-mcp-gateway/)
Single Rust/Axum binary serving REST (/v1/*) and MCP (/mcp) on port 3000:
| Module | Responsibility |
|---|---|
rest.rs | REST API handlers (recall, remember, entities, stats, inspect, usage) |
auth.rs | API key validation (local + remote with caching) and optional JWT validation (EdDSA, operator's own issuer) |
rate_limit.rs | Per-tenant sliding-window rate limit and daily quota (PENSYVE_RATE_LIMIT, PENSYVE_DAILY_QUOTA) |
usage_counter.rs | Per-(user, month, operation kind) counter behind GET /v1/usage |
tenant.rs | Multi-tenant state management |
cache.rs | Optional Redis cache for recall responses (REDIS_URL) |
Data Model
Entities
Namespace (isolation boundary)
├── Entities (agent | user | team | tool)
├── Episodes (interactions with participant entities and an outcome)
└── Memories
├── Episodic (messages/events linked to an episode and entities)
├── Semantic (subject-predicate-object facts with temporal validity)
├── Procedural (stored procedures with trial counts and reliability)
└── Observation (structured facts derived from episode messages)Procedural memories belong to a namespace and have no entity linkage. Python
episode messages and MCP pensyve_observe calls create episodic memories.
Structured Observation records are a separate type produced by an explicitly
configured observation extractor.
Memory Lifecycle
1. INGEST
Python episode message or MCP observe → Episodic memory
Explicit remember call → Semantic memory
Configured observation extractor → Structured observation records
When semantic search is active → Embed via ONNX
→ Save source + immutable embedding generation atomically
2. RETRIEVE
Query → Embed query
→ Storage-backed exact vector search (cosine similarity)
→ BM25 search (FTS5 lexical matching)
→ Graph traversal (petgraph BFS from entity)
→ Reciprocal rank fusion (available ranked signals)
→ Cross-encoder reranking (top-20; only when a reranker is configured)
→ Best-effort FSRS reinforcement of returned episodic memories
→ Return ranked results
3. CONSOLIDATE (explicit call or supported post-episode trigger)
→ Promote clusters of similar episodic records to semantic memories
→ Recompute episodic retrievability and reduce stability below the threshold
→ Reduce reliability for sufficiently stale, low-reliability procedures
→ Return completion status and counts; retained rows are not deletedPython callers invoke p.consolidate() explicitly. MCP episode closure schedules
consolidation in the background. An episode outcome alone does not create a
procedure or update its Bayesian trial counts. The archived result counter
reports decay updates below the threshold; consolidation does not move rows to
a separate archive or guarantee a bound on database size.
Retrieval Scoring Formula
The engine uses reciprocal rank fusion, which adds each contributing signal's
weight / (k + rank) for a candidate. It adjusts k for the candidate count
and excludes rankings with no discriminating signal. The default signal slots
and weights are:
slot 1: vector_similarity (1.0)
slot 2: bm25_score (0.8)
slot 3: activation (1.0) — ACT-R base-level activation
slot 4: spreading_activation (0.8) — graph BFS
slot 5: intent_alignment (0.5) — query-type routing
slot 6: confidence (0.5) — reliability
slot 7: entity_affinity (1.2) — entity-scoped boost
slot 8: ppr (1.0) — Personalized PageRank (Phase 2C, opt-in)Signal availability depends on the stored data and configured engine features. When Personalized PageRank contributes, the engine disables the graph BFS weight for that query to avoid counting graph evidence twice. Cross-encoder reranking is disabled by default in the Python SDK, CLI, and MCP server.
Local models and network access
SQLite stores memory locally, and ONNX inference runs locally. Uncached models may download from Hugging Face when first loaded. Prepare the model cache before running without internet access. The stdio MCP server resolves embedding provenance during startup, which loads its model even when the embedder was constructed lazily. The Python SDK and HTTP gateway also load embedding models during construction or startup. Optional LLM extraction and remote clients use their configured endpoints. See the MCP model configuration and self-hosting guide for deployment details.
Bounded Retrieval and Embedding Generations
All shipping Rust entry points use StorageTrait retrieval. They do not hydrate a
namespace corpus or retain a per-tenant VectorIndex. SQLite streams exact cosine
scoring with at most one decoded row vector live outside the top-k heap; Postgres
performs the equivalent exact ranking in SQL. Filters for namespace, agent/user,
entity, supersession state, and embedding generation are applied before limits.
An embedding is identified by immutable canonical provenance (model, revision, dimensions, normalization, distance metric, and content policy), not by a mutable model label. Source and generation writes share a transaction. A namespace exposes only its active generation to semantic retrieval, so mock, legacy-unknown, old-real, and target-real vectors cannot mix. Missing or mismatched active provenance degrades explicitly to lexical-only retrieval; it never ranks a partial vector population.
SQLite and Postgres implement the same storage contract and ordering. The enforced bounds are:
| Work | Hard bound |
|---|---|
| Vector candidates returned | 100 |
| Lexical candidates returned | 100 |
| Fused references | 200 |
| Hydrated payload | 200 references and 4 MiB |
| SQLite vectors scanned by one exact query | 50,000 |
| General memory page | 256 rows |
| Consolidation comparison page | 64 rows |
| Promotion cluster | 4,096 members |
| Gateway recall admission | 8 concurrent reservations and 64 MiB |
| Gateway tenant metadata cache | 1,024 entries, 30-minute idle expiry |
Embedding replacement is a one-session-per-namespace migration: one target generation is backfilled in 256-row pages, verified for complete coverage, then activated separately. Rollback returns the namespace to lexical-only operation. Activation is not an automatic model-selection or deployment decision.
Consolidation pages sources and decay work, compares only bounded 64-row windows, and rejects promotion clusters above 4,096 members. This replaces the former corpus-wide working-set assumption.
Storage Schema
SQLite uses WAL mode. Core tables include namespaces, entities, episodes, episodic_memories, semantic_memories, procedural_memories, observation_memories, edges, and memory_fts (an FTS5 virtual table).
UUIDs stored as TEXT
Embeddings stored as BLOB (raw f32 bytes)
Metadata stored as JSON TEXT
Temporal validity via
valid_at/invalid_aton semantic memories and edges
Key Algorithms
FSRS Memory Decay
Forgetting curve: R(t, S) = (1 + t / (9 * S))^(-1)
Recall attempts to reinforce the stability of returned episodic memories and record their access. Consolidation recomputes episodic retrievability from elapsed time and reduces stability below the configured threshold. Semantic memories are not changed by the current decay pass.
Bayesian Procedural Reliability
Beta-binomial posterior: reliability = (successes + 1) / (trials + 2)
The core's procedural::update_reliability function starts with a 0.5 prior.
Callers supply trial outcomes to update reliability. The core also provides a
should_prune helper with caller-selected thresholds, but shipping episode and
consolidation paths do not automatically create or prune procedures.
Consolidation
The current implementation promotes clusters of at least two similar episodic
records, using cosine similarity greater than 0.8. The records need not come from
different episodes. Confidence is min(member_count * 0.3, 1.0); the promoted
record uses the latest member's content. Similarity and mention count do not
establish that a fact is true.
The retrieval engine, consolidation engine, and procedural helpers define the current behavior.
Tooling
| Tool | Purpose |
|---|---|
| clippy (pedantic) | Rust linting |
| rustfmt | Rust formatting |
| ruff | Python linting + formatting |
| pyright | Python type checking |
| eslint | TypeScript linting |
| uv | Python package management |
| bun | TypeScript package management |
| maturin | PyO3 build tool |
| fastembed | ONNX embedding + reranking |
| llama-cpp-python | Local LLM inference |
512 files · 482 not served here
- .agents/plugins/marketplace.json (not served here)
- .claude-plugin/marketplace.json (not served here)
- .env.example (not served here)
- .github/FUNDING.yml (not served here)
- .github/ISSUE_TEMPLATE/bug_report.md (not served here)
- .github/ISSUE_TEMPLATE/feature_request.md (not served here)
- .github/ISSUE_TEMPLATE/question.md (not served here)
- .github/dependabot.yml (not served here)
- .github/workflows/ci.yml (not served here)
- .github/workflows/claude-code-review.yml (not served here)
- .github/workflows/claude.yml (not served here)
- .github/workflows/publish-mcp-registry.yml (not served here)
- .github/workflows/release.yml (not served here)
- .gitignore (not served here)
- AGENTS.md
- ATTRIBUTION.md
- AUTOGINEER-RUNS.md
- CHANGELOG.md
- CLAUDE.md
- CODE_OF_CONDUCT.md
- CONTRIBUTING.md
- Cargo.lock (not served here)
- Cargo.toml (not served here)
- LICENSE
- MAINTENANCE.md
- Makefile (not served here)
- README.md
- SECURITY.md
- benchmarks/README.md (not served here)
- benchmarks/__init__.py (not served here)
- benchmarks/eval-dataset/README.md (not served here)
- benchmarks/eval-dataset/scenarios.json (not served here)
- benchmarks/synthetic/__init__.py (not served here)
- benchmarks/synthetic/evaluate.py (not served here)
- benchmarks/synthetic/generate.py (not served here)
- benchmarks/synthetic/run.py (not served here)
- clippy.toml (not served here)
- conftest.py (not served here)
- docs/ARCHITECTURE.md
- docs/GETTING_STARTED.md (not served here)
- docs/README.md
- docs/RECIPES.md
- docs/RELIABILITY.md
- docs/SECURITY.md
- docs/guides/openclaw.md (not served here)
- docs/images/architecture.png (not served here)
- docs/images/logo.png (not served here)
- docs/reviews/2026-10-04-search-audit.md (not served here)
- docs/reviews/2026-10-04-search-baseline.json (not served here)
- docs/self-host.md (not served here)
- docs/superpowers/plans/2026-08-04-forget-safety-completion.md (not served here)
- docs/superpowers/plans/2026-08-04-paraphrase-recall.md (not served here)
- docs/superpowers/specs/2026-08-04-open-issues-remediation-design.md (not served here)
- glama.json (not served here)
- integrations/README.md (not served here)
- integrations/amazon-q/.amazonq/mcp.json.example (not served here)
- integrations/amazon-q/.amazonq/mcp.json.local.example (not served here)
- integrations/amazon-q/.amazonq/rules/context-loader.md (not served here)
- integrations/amazon-q/.amazonq/rules/entity-detection.md (not served here)
- integrations/amazon-q/.amazonq/rules/memory-informed-debug.md (not served here)
- integrations/amazon-q/.amazonq/rules/memory-informed-design.md (not served here)
- integrations/amazon-q/.amazonq/rules/memory-informed-longitudinal-work.md (not served here)
- integrations/amazon-q/.amazonq/rules/memory-informed-refactor.md (not served here)
- integrations/amazon-q/.amazonq/rules/memory-reflex.md (not served here)
- integrations/amazon-q/.amazonq/rules/session-memory.md (not served here)
- integrations/amazon-q/CHANGELOG.md (not served here)
- integrations/amazon-q/README.md (not served here)
- integrations/amazon-q/scripts/lint-mcp-refs.sh (not served here)
- integrations/antigravity-plugin/CHANGELOG.md (not served here)
- integrations/antigravity-plugin/LICENSE
- integrations/antigravity-plugin/README.md (not served here)
- integrations/antigravity-plugin/mcp_config.json (not served here)
- integrations/antigravity-plugin/plugin.json (not served here)
- integrations/antigravity-plugin/rules/context-loader.md (not served here)
- integrations/antigravity-plugin/rules/entity-detection.md (not served here)
- integrations/antigravity-plugin/rules/memory-informed-debug.md (not served here)
- integrations/antigravity-plugin/rules/memory-informed-design.md (not served here)
- integrations/antigravity-plugin/rules/memory-informed-longitudinal-work.md (not served here)
- integrations/antigravity-plugin/rules/memory-informed-refactor.md (not served here)
- integrations/antigravity-plugin/rules/memory-reflex.md (not served here)
- integrations/antigravity-plugin/rules/session-memory.md (not served here)
- integrations/antigravity-plugin/scripts/lint-mcp-refs.sh (not served here)
- integrations/antigravity-plugin/scripts/test-lint-mcp-refs.sh (not served here)
- integrations/antigravity-plugin/skills/context-loader/SKILL.md (not served here)
- integrations/antigravity-plugin/skills/forget/SKILL.md (not served here)
- integrations/antigravity-plugin/skills/inspect/SKILL.md (not served here)
- integrations/antigravity-plugin/skills/memory-informed-refactor/SKILL.md (not served here)
- integrations/antigravity-plugin/skills/memory-review/SKILL.md (not served here)
- integrations/antigravity-plugin/skills/recall/SKILL.md (not served here)
- integrations/antigravity-plugin/skills/remember/SKILL.md (not served here)
- integrations/antigravity-plugin/skills/session-memory/SKILL.md (not served here)
- integrations/autogen/CHANGELOG.md (not served here)
- integrations/autogen/LICENSE
- integrations/autogen/README.md (not served here)
- integrations/autogen/SUBSTRATE_PROMPT.md (not served here)
- integrations/autogen/__init__.py (not served here)
- integrations/autogen/examples/pensyve_agent.py (not served here)
- integrations/autogen/pensyve_autogen.py (not served here)
- integrations/autogen/pensyve_capture.py (not served here)
- integrations/autogen/pyproject.toml (not served here)
- integrations/autogen/scripts/lint-mcp-refs.sh (not served here)
- integrations/autogen/src/__init__.py (not served here)
- integrations/autogen/src/_vendor/__init__.py (not served here)
- integrations/autogen/src/_vendor/memory_capture_core.py (not served here)
- integrations/autogen/tests/__init__.py (not served here)
- integrations/autogen/tests/test_pensyve_autogen.py (not served here)
- integrations/autogen/uv.lock (not served here)
- integrations/build.sh (not served here)
- integrations/claude-code/.claude-plugin/marketplace.json (not served here)
- integrations/claude-code/.claude-plugin/plugin.json (not served here)
- integrations/claude-code/LICENSE
- integrations/claude-code/README.md (not served here)
- integrations/claude-code/agents/context-researcher.md (not served here)
- integrations/claude-code/agents/memory-curator.md (not served here)
- integrations/claude-code/commands/consolidate.md (not served here)
- integrations/claude-code/commands/forget.md (not served here)
- integrations/claude-code/commands/inspect.md (not served here)
- integrations/claude-code/commands/memory-status.md (not served here)
- integrations/claude-code/commands/recall.md (not served here)
- integrations/claude-code/commands/remember.md (not served here)
- integrations/claude-code/commands/using-pensyve.md (not served here)
- integrations/claude-code/hooks/hooks.json (not served here)
- integrations/claude-code/hooks/post-tool-bash.md (not served here)
- integrations/claude-code/hooks/post-tool-write-edit.md (not served here)
- integrations/claude-code/hooks/pre-compact.md (not served here)
- integrations/claude-code/hooks/session-start.md (not served here)
- integrations/claude-code/hooks/stop.md (not served here)
- integrations/claude-code/hooks/user-prompt-submit.md (not served here)
- integrations/claude-code/pensyve-plugin.local.md (not served here)
- integrations/claude-code/skills/context-loader/SKILL.md (not served here)
- integrations/claude-code/skills/memory-informed-debug/SKILL.md (not served here)
- integrations/claude-code/skills/memory-informed-design/SKILL.md (not served here)
- integrations/claude-code/skills/memory-informed-longitudinal-work/SKILL.md (not served here)
- integrations/claude-code/skills/memory-informed-refactor/SKILL.md (not served here)
- integrations/claude-code/skills/memory-review/SKILL.md (not served here)
- integrations/claude-code/skills/session-memory/SKILL.md (not served here)
- integrations/claude-code/skills/shared/entity-detection.md (not served here)
- integrations/claude-code/skills/shared/memory-reflex.md (not served here)
- integrations/cline/.clinerules/context-loader.md (not served here)
- integrations/cline/.clinerules/entity-detection.md (not served here)
- integrations/cline/.clinerules/memory-informed-debug.md (not served here)
- integrations/cline/.clinerules/memory-informed-design.md (not served here)
- integrations/cline/.clinerules/memory-informed-longitudinal-work.md (not served here)
- integrations/cline/.clinerules/memory-informed-refactor.md (not served here)
- integrations/cline/.clinerules/memory-reflex.md (not served here)
- integrations/cline/.clinerules/session-memory.md (not served here)
- integrations/cline/CHANGELOG.md (not served here)
- integrations/cline/README.md (not served here)
- integrations/cline/cline_mcp_settings.json.example (not served here)
- integrations/cline/scripts/lint-mcp-refs.sh (not served here)
- integrations/codex-plugin/.agents/mcp.json.example (not served here)
- integrations/codex-plugin/.agents/plugins/marketplace.json (not served here)
- integrations/codex-plugin/.codex-plugin/plugin.json (not served here)
- integrations/codex-plugin/.mcp.json (not served here)
- integrations/codex-plugin/AGENTS.md (not served here)
- integrations/codex-plugin/CHANGELOG.md (not served here)
- integrations/codex-plugin/LICENSE
- integrations/codex-plugin/README.md (not served here)
- integrations/codex-plugin/assets/pensyve-icon.svg (not served here)
- integrations/codex-plugin/assets/pensyve-logo.svg (not served here)
- integrations/codex-plugin/commands/pensyve.md (not served here)
- integrations/codex-plugin/docs/ARCHITECTURE.md (not served here)
- integrations/codex-plugin/hooks/hooks.json (not served here)
- integrations/codex-plugin/hooks/session-start.md (not served here)
- integrations/codex-plugin/hooks/user-prompt-submit.md (not served here)
- integrations/codex-plugin/scripts/lint-mcp-refs.sh (not served here)
- integrations/codex-plugin/skills/context-loader/SKILL.md (not served here)
- integrations/codex-plugin/skills/memory-informed-refactor/SKILL.md (not served here)
- integrations/codex-plugin/skills/memory-review/SKILL.md (not served here)
- integrations/codex-plugin/skills/mention-workflow/SKILL.md (not served here)
- integrations/codex-plugin/skills/pensyve/SKILL.md (not served here)
- integrations/codex-plugin/skills/pensyve/agents/openai.yaml (not served here)
- integrations/codex-plugin/skills/session-memory/SKILL.md (not served here)
- integrations/continue/.continue/rules/context-loader.md (not served here)
- integrations/continue/.continue/rules/entity-detection.md (not served here)
- integrations/continue/.continue/rules/memory-informed-debug.md (not served here)
- integrations/continue/.continue/rules/memory-informed-design.md (not served here)
- integrations/continue/.continue/rules/memory-informed-longitudinal-work.md (not served here)
- integrations/continue/.continue/rules/memory-informed-refactor.md (not served here)
- integrations/continue/.continue/rules/memory-reflex.md (not served here)
- integrations/continue/.continue/rules/session-memory.md (not served here)
- integrations/continue/CHANGELOG.md (not served here)
- integrations/continue/README.md (not served here)
- integrations/continue/config.yaml.example (not served here)
- integrations/continue/scripts/lint-mcp-refs.sh (not served here)
- integrations/crewai/CHANGELOG.md (not served here)
- integrations/crewai/LICENSE
- integrations/crewai/README.md (not served here)
- integrations/crewai/SUBSTRATE_PROMPT.md (not served here)
- integrations/crewai/__init__.py (not served here)
- integrations/crewai/examples/pensyve_crew.py (not served here)
- integrations/crewai/pensyve_capture.py (not served here)
- integrations/crewai/pensyve_crewai.py (not served here)
- integrations/crewai/pyproject.toml (not served here)
- integrations/crewai/scripts/lint-mcp-refs.sh (not served here)
- integrations/crewai/src/__init__.py (not served here)
- integrations/crewai/src/_vendor/__init__.py (not served here)
- integrations/crewai/src/_vendor/memory_capture_core.py (not served here)
- integrations/crewai/tests/__init__.py (not served here)
- integrations/crewai/tests/test_pensyve_crewai.py (not served here)
- integrations/crewai/uv.lock (not served here)
- integrations/cursor/.cursor/mcp.json.example (not served here)
- integrations/cursor/.cursor/rules/context-loader.mdc (not served here)
- integrations/cursor/.cursor/rules/entity-detection.mdc (not served here)
- integrations/cursor/.cursor/rules/memory-informed-debug.mdc (not served here)
- integrations/cursor/.cursor/rules/memory-informed-design.mdc (not served here)
- integrations/cursor/.cursor/rules/memory-informed-longitudinal-work.mdc (not served here)
- integrations/cursor/.cursor/rules/memory-informed-refactor.mdc (not served here)
- integrations/cursor/.cursor/rules/memory-reflex.mdc (not served here)
- integrations/cursor/.cursor/rules/session-memory.mdc (not served here)
- integrations/cursor/CHANGELOG.md (not served here)
- integrations/cursor/README.md (not served here)
- integrations/cursor/scripts/lint-mcp-refs.sh (not served here)
- integrations/cursor/scripts/smoketest-mcp.sh (not served here)
- integrations/google-adk/CHANGELOG.md (not served here)
- integrations/google-adk/README.md (not served here)
- integrations/google-adk/SUBSTRATE_PROMPT.md (not served here)
- integrations/google-adk/examples/pensyve_agent.py (not served here)
- integrations/google-adk/scripts/lint-mcp-refs.sh (not served here)
- integrations/hermes/AGENTS.md (not served here)
- integrations/hermes/CHANGELOG.md (not served here)
- integrations/hermes/LICENSE
- integrations/hermes/README.md (not served here)
- integrations/hermes/__init__.py (not served here)
- integrations/hermes/hermes.mcp.json.example (not served here)
- integrations/hermes/scripts/lint-mcp-refs.sh (not served here)
- integrations/jetbrains/CHANGELOG.md (not served here)
- integrations/jetbrains/README.md (not served here)
- integrations/jetbrains/instructions/context-loader.md (not served here)
- integrations/jetbrains/instructions/entity-detection.md (not served here)
- integrations/jetbrains/instructions/memory-informed-debug.md (not served here)
- integrations/jetbrains/instructions/memory-informed-design.md (not served here)
- integrations/jetbrains/instructions/memory-informed-longitudinal-work.md (not served here)
- integrations/jetbrains/instructions/memory-informed-refactor.md (not served here)
- integrations/jetbrains/instructions/memory-reflex.md (not served here)
- integrations/jetbrains/instructions/session-memory.md (not served here)
- integrations/jetbrains/jetbrains-mcp.json.example (not served here)
- integrations/jetbrains/scripts/lint-mcp-refs.sh (not served here)
- integrations/kiro/.kiro/mcp.json.example (not served here)
- integrations/kiro/.kiro/steering/context-loader.md (not served here)
- integrations/kiro/.kiro/steering/entity-detection.md (not served here)
- integrations/kiro/.kiro/steering/memory-informed-debug.md (not served here)
- integrations/kiro/.kiro/steering/memory-informed-design.md (not served here)
- integrations/kiro/.kiro/steering/memory-informed-longitudinal-work.md (not served here)
- integrations/kiro/.kiro/steering/memory-informed-refactor.md (not served here)
- integrations/kiro/.kiro/steering/memory-reflex.md (not served here)
- integrations/kiro/.kiro/steering/session-memory.md (not served here)
- integrations/kiro/CHANGELOG.md (not served here)
- integrations/kiro/README.md (not served here)
- integrations/kiro/scripts/lint-mcp-refs.sh (not served here)
- integrations/langchain-ts/CHANGELOG.md (not served here)
- integrations/langchain-ts/LICENSE
- integrations/langchain-ts/README.md (not served here)
- integrations/langchain-ts/SUBSTRATE_PROMPT.md (not served here)
- integrations/langchain-ts/bun.lock (not served here)
- integrations/langchain-ts/examples/pensyve-agent.ts (not served here)
- integrations/langchain-ts/package-lock.json (not served here)
- integrations/langchain-ts/package.json (not served here)
- integrations/langchain-ts/scripts/lint-mcp-refs.sh (not served here)
- integrations/langchain-ts/src/_vendor/memory-capture-core.ts (not served here)
- integrations/langchain-ts/src/capture-handler.ts (not served here)
- integrations/langchain-ts/src/index.test.ts (not served here)
- integrations/langchain-ts/src/index.ts (not served here)
- integrations/langchain-ts/tsconfig.json (not served here)
- integrations/langchain-ts/vitest.config.ts (not served here)
- integrations/langchain/CHANGELOG.md (not served here)
- integrations/langchain/LICENSE
- integrations/langchain/README.md (not served here)
- integrations/langchain/SUBSTRATE_PROMPT.md (not served here)
- integrations/langchain/__init__.py (not served here)
- integrations/langchain/examples/pensyve_agent.py (not served here)
- integrations/langchain/pensyve_capture.py (not served here)
- integrations/langchain/pensyve_langchain.py (not served here)
- integrations/langchain/pyproject.toml (not served here)
- integrations/langchain/scripts/lint-mcp-refs.sh (not served here)
- integrations/langchain/src/__init__.py (not served here)
- integrations/langchain/src/_vendor/__init__.py (not served here)
- integrations/langchain/src/_vendor/memory_capture_core.py (not served here)
- integrations/langchain/tests/__init__.py (not served here)
- integrations/langchain/tests/conftest.py (not served here)
- integrations/langchain/tests/test_pensyve_langchain.py (not served here)
- integrations/langchain/uv.lock (not served here)
- integrations/neovim/CHANGELOG.md (not served here)
- integrations/neovim/README.md (not served here)
- integrations/neovim/instructions/context-loader.md (not served here)
- integrations/neovim/instructions/entity-detection.md (not served here)
- integrations/neovim/instructions/memory-informed-debug.md (not served here)
- integrations/neovim/instructions/memory-informed-design.md (not served here)
- integrations/neovim/instructions/memory-informed-longitudinal-work.md (not served here)
- integrations/neovim/instructions/memory-informed-refactor.md (not served here)
- integrations/neovim/instructions/memory-reflex.md (not served here)
- integrations/neovim/instructions/session-memory.md (not served here)
- integrations/neovim/neovim-mcp.json.example (not served here)
- integrations/neovim/scripts/lint-mcp-refs.sh (not served here)
- integrations/openclaw-plugin/AGENTS.md (not served here)
- integrations/openclaw-plugin/CHANGELOG.md (not served here)
- integrations/openclaw-plugin/LICENSE
- integrations/openclaw-plugin/README.md (not served here)
- integrations/openclaw-plugin/openclaw.mcp.json.example (not served here)
- integrations/openclaw-plugin/openclaw.plugin.json (not served here)
- integrations/openclaw-plugin/package-lock.json (not served here)
- integrations/openclaw-plugin/package.json (not served here)
- integrations/openclaw-plugin/scripts/lint-mcp-refs.sh (not served here)
- integrations/openclaw-plugin/src/index.test.ts (not served here)
- integrations/openclaw-plugin/src/index.ts (not served here)
- integrations/openclaw-plugin/tsconfig.json (not served here)
- integrations/openclaw-plugin/vitest.config.ts (not served here)
- integrations/opencode-plugin/AGENTS.md (not served here)
- integrations/opencode-plugin/CHANGELOG.md (not served here)
- integrations/opencode-plugin/LICENSE
- integrations/opencode-plugin/README.md (not served here)
- integrations/opencode-plugin/opencode.mcp.json.example (not served here)
- integrations/opencode-plugin/package-lock.json (not served here)
- integrations/opencode-plugin/package.json (not served here)
- integrations/opencode-plugin/scripts/lint-mcp-refs.sh (not served here)
- integrations/opencode-plugin/src/index.test.ts (not served here)
- integrations/opencode-plugin/src/index.ts (not served here)
- integrations/opencode-plugin/tsconfig.json (not served here)
- integrations/opencode-plugin/vitest.config.ts (not served here)
- integrations/pydantic-ai/CHANGELOG.md (not served here)
- integrations/pydantic-ai/README.md (not served here)
- integrations/pydantic-ai/SUBSTRATE_PROMPT.md (not served here)
- integrations/pydantic-ai/examples/pensyve_agent.py (not served here)
- integrations/pydantic-ai/scripts/lint-mcp-refs.sh (not served here)
- integrations/shared/memory-capture-core.test.ts (not served here)
- integrations/shared/memory-capture-core.ts (not served here)
- integrations/shared/memory_capture_core.py (not served here)
- integrations/shared/package-lock.json (not served here)
- integrations/shared/package.json (not served here)
- integrations/shared/pensyve-client.test.ts (not served here)
- integrations/shared/pensyve-client.ts (not served here)
- integrations/shared/pensyve_client.py (not served here)
- integrations/shared/tests/conftest.py (not served here)
- integrations/shared/tests/test_memory_capture_core.py (not served here)
- integrations/shared/vitest.config.ts (not served here)
- integrations/vscode-copilot/.github/copilot-instructions.md (not served here)
- integrations/vscode-copilot/CHANGELOG.md (not served here)
- integrations/vscode-copilot/README.md (not served here)
- integrations/vscode-copilot/scripts/lint-mcp-refs.sh (not served here)
- integrations/vscode-copilot/vscode-mcp.json.example (not served here)
- integrations/vscode/.gitignore (not served here)
- integrations/vscode/.vscodeignore (not served here)
- integrations/vscode/CHANGELOG.md (not served here)
- integrations/vscode/LICENSE
- integrations/vscode/README.md (not served here)
- integrations/vscode/instructions/context-loader.md (not served here)
- integrations/vscode/instructions/entity-detection.md (not served here)
- integrations/vscode/instructions/memory-informed-debug.md (not served here)
- integrations/vscode/instructions/memory-informed-design.md (not served here)
- integrations/vscode/instructions/memory-informed-longitudinal-work.md (not served here)
- integrations/vscode/instructions/memory-informed-refactor.md (not served here)
- integrations/vscode/instructions/memory-reflex.md (not served here)
- integrations/vscode/instructions/session-memory.md (not served here)
- integrations/vscode/package-lock.json (not served here)
- integrations/vscode/package.json (not served here)
- integrations/vscode/resources/icon.png (not served here)
- integrations/vscode/resources/icon.svg (not served here)
- integrations/vscode/scripts/lint-mcp-refs.sh (not served here)
- integrations/vscode/src/capture.ts (not served here)
- integrations/vscode/src/client.test.ts (not served here)
- integrations/vscode/src/client.ts (not served here)
- integrations/vscode/src/commands.ts (not served here)
- integrations/vscode/src/extension.ts (not served here)
- integrations/vscode/src/memory-capture-core.ts (not served here)
- integrations/vscode/src/sidebar.ts (not served here)
- integrations/vscode/tsconfig.json (not served here)
- integrations/windsurf/.windsurf/mcp_config.json.example (not served here)
- integrations/windsurf/.windsurf/rules/context-loader.md (not served here)
- integrations/windsurf/.windsurf/rules/entity-detection.md (not served here)
- integrations/windsurf/.windsurf/rules/memory-informed-debug.md (not served here)
- integrations/windsurf/.windsurf/rules/memory-informed-design.md (not served here)
- integrations/windsurf/.windsurf/rules/memory-informed-longitudinal-work.md (not served here)
- integrations/windsurf/.windsurf/rules/memory-informed-refactor.md (not served here)
- integrations/windsurf/.windsurf/rules/memory-reflex.md (not served here)
- integrations/windsurf/.windsurf/rules/session-memory.md (not served here)
- integrations/windsurf/CHANGELOG.md (not served here)
- integrations/windsurf/README.md (not served here)
- integrations/windsurf/scripts/lint-mcp-refs.sh (not served here)
- llms.txt (not served here)
- loadtest/Cargo.lock (not served here)
- loadtest/Cargo.toml (not served here)
- loadtest/src/main.rs (not served here)
- pensyve-benchmarks/.gitignore (not served here)
- pensyve-benchmarks/Cargo.toml (not served here)
- pensyve-benchmarks/fixtures/paraphrase_corpus.json (not served here)
- pensyve-benchmarks/results/paraphrase_baseline.json (not served here)
- pensyve-benchmarks/src/bin/judge_eval.rs (not served here)
- pensyve-benchmarks/src/bin/monte_carlo_eval.rs (not served here)
- pensyve-benchmarks/src/bin/paraphrase_eval.rs (not served here)
- pensyve-benchmarks/src/bin/real_content_eval.rs (not served here)
- pensyve-benchmarks/src/bin/sensitivity_sweep.rs (not served here)
- pensyve-benchmarks/src/corpus.rs (not served here)
- pensyve-benchmarks/src/fixture.rs (not served here)
- pensyve-benchmarks/src/judge.rs (not served here)
- pensyve-benchmarks/src/lib.rs (not served here)
- pensyve-benchmarks/src/metrics.rs (not served here)
- pensyve-benchmarks/src/resilience.rs (not served here)
- pensyve-benchmarks/src/sensitivity.rs (not served here)
- pensyve-benchmarks/src/stats.rs (not served here)
- pensyve-cli/Cargo.toml (not served here)
- pensyve-cli/src/main.rs (not served here)
- pensyve-cli/tests/embedding_space_storage.rs (not served here)
- pensyve-core/Cargo.toml (not served here)
- pensyve-core/benches/cognitive_engine.rs (not served here)
- pensyve-core/src/a2a.rs (not served here)
- pensyve-core/src/activation.rs (not served here)
- pensyve-core/src/classifier.rs (not served here)
- pensyve-core/src/config.rs (not served here)
- pensyve-core/src/consolidation/dmem.rs (not served here)
- pensyve-core/src/consolidation/gate.rs (not served here)
- pensyve-core/src/consolidation/mod.rs (not served here)
- pensyve-core/src/consolidation/typed_slots.rs (not served here)
- pensyve-core/src/decay.rs (not served here)
- pensyve-core/src/embedding.rs (not served here)
- pensyve-core/src/embedding_migration.rs (not served here)
- pensyve-core/src/embedding_space.rs (not served here)
- pensyve-core/src/extraction/dep_parse.rs (not served here)
- pensyve-core/src/extraction/mod.rs (not served here)
- pensyve-core/src/feedback.rs (not served here)
- pensyve-core/src/gdpr.rs (not served here)
- pensyve-core/src/graph.rs (not served here)
- pensyve-core/src/lib.rs (not served here)
- pensyve-core/src/mesh.rs (not served here)
- pensyve-core/src/multimodal.rs (not served here)
- pensyve-core/src/namespace_export.rs (not served here)
- pensyve-core/src/network_policy.rs (not served here)
- pensyve-core/src/observability.rs (not served here)
- pensyve-core/src/observation.rs (not served here)
- pensyve-core/src/ocr.rs (not served here)
- pensyve-core/src/peer_card.rs (not served here)
- pensyve-core/src/procedural.rs (not served here)
- pensyve-core/src/recall_grouped.rs (not served here)
- pensyve-core/src/reranker.rs (not served here)
- pensyve-core/src/retrieval/cards/composite.rs (not served here)
- pensyve-core/src/retrieval/cards/mod.rs (not served here)
- pensyve-core/src/retrieval/cards/multi_session.rs (not served here)
- pensyve-core/src/retrieval/cards/peer_card_adapter.rs (not served here)
- pensyve-core/src/retrieval/cards/single_session_user.rs (not served here)
- pensyve-core/src/retrieval/cards/supersession.rs (not served here)
- pensyve-core/src/retrieval/contradictions.rs (not served here)
- pensyve-core/src/retrieval/diversity.rs (not served here)
- pensyve-core/src/retrieval/engine.rs (not served here)
- pensyve-core/src/retrieval/intent_router.rs (not served here)
- pensyve-core/src/retrieval/mod.rs (not served here)
- pensyve-core/src/retrieval/ppr.rs (not served here)
- pensyve-core/src/retrieval/query_classifier.rs (not served here)
- pensyve-core/src/retrieval/vendi.rs (not served here)
- pensyve-core/src/rrf.rs (not served here)
- pensyve-core/src/salience.rs (not served here)
- pensyve-core/src/snapshot.rs (not served here)
- pensyve-core/src/storage/bounded.rs (not served here)
- pensyve-core/src/storage/consolidation_workspace.rs (not served here)
- pensyve-core/src/storage/mod.rs (not served here)
- pensyve-core/src/storage/postgres.rs (not served here)
- pensyve-core/src/storage/postgres/live_rls.rs (not served here)
- pensyve-core/src/storage/postgres/scoped_pool.rs (not served here)
- pensyve-core/src/storage/postgres_schema.sql (not served here)
- pensyve-core/src/storage/sqlite.rs (not served here)
- pensyve-core/src/surprise.rs (not served here)
- pensyve-core/src/sync.rs (not served here)
- pensyve-core/src/types.rs (not served here)
- pensyve-core/src/vector.rs (not served here)
- pensyve-core/tests/adversarial.rs (not served here)
- pensyve-core/tests/forget_snapshot_scope.rs (not served here)
- pensyve-core/tests/network_policy_fail_closed.rs (not served here)
- pensyve-core/tests/test_bounded_consolidation.rs (not served here)
- pensyve-core/tests/test_bounded_storage.rs (not served here)
- pensyve-core/tests/test_composite_card.rs (not served here)
- pensyve-core/tests/test_consolidation_concurrent_runs.rs (not served here)
- pensyve-core/tests/test_consolidation_idempotency.rs (not served here)
- pensyve-core/tests/test_consolidation_policy_and_cancel.rs (not served here)
- pensyve-core/tests/test_consolidation_supersession_guard.rs (not served here)
- pensyve-core/tests/test_diversity.rs (not served here)
- pensyve-core/tests/test_embedding_migration.rs (not served here)
- pensyve-core/tests/test_embedding_space.rs (not served here)
- pensyve-core/tests/test_extractor_cancellation.rs (not served here)
- pensyve-core/tests/test_gate_wiring.rs (not served here)
- pensyve-core/tests/test_intent_router.rs (not served here)
- pensyve-core/tests/test_migration_idempotency.rs (not served here)
- pensyve-core/tests/test_ms_card_v2.rs (not served here)
- pensyve-core/tests/test_multi_session_card.rs (not served here)
- pensyve-core/tests/test_namespace_scoping.rs (not served here)
- pensyve-core/tests/test_no_network_invariants.rs (not served here)
- pensyve-core/tests/test_pensyve_handle_policy_propagation.rs (not served here)
- pensyve-core/tests/test_retrieval_card_trait.rs (not served here)
- pensyve-core/tests/test_schema_v2_migration.rs (not served here)
- pensyve-core/tests/test_schema_v4_migration.rs (not served here)
- pensyve-core/tests/test_schema_v5_migration.rs (not served here)
- pensyve-core/tests/test_schema_v6_migration.rs (not served here)
- pensyve-core/tests/test_single_session_user_card.rs (not served here)
- pensyve-core/tests/test_supersession_card.rs (not served here)
- pensyve-core/tests/test_typed_slots.rs (not served here)
- pensyve-go/LICENSE
- pensyve-go/README.md (not served here)
- pensyve-go/client.go (not served here)
- pensyve-go/client_test.go (not served here)
- pensyve-go/episode.go (not served here)
- pensyve-go/errors.go (not served here)
- pensyve-go/go.mod (not served here)
- pensyve-go/retry.go (not served here)
- pensyve-go/retry_test.go (not served here)
- pensyve-go/types.go (not served here)
- pensyve-mcp-gateway/Cargo.toml (not served here)
- pensyve-mcp-gateway/Dockerfile (not served here)
- pensyve-mcp-gateway/README.md (not served here)
- pensyve-mcp-gateway/entrypoint.sh (not served here)
- pensyve-mcp-gateway/models/manifest.sha256 (not served here)
- pensyve-mcp-gateway/models/revisions.env (not served here)
- pensyve-mcp-gateway/scripts/fetch-model-bundle.sh (not served here)
- pensyve-mcp-gateway/scripts/test-model-bundle.sh (not served here)
- server.json
- smithery.yaml
Advantages
- Provides persistent, cross-session memory that functions independently of the language model's training. evidence: README.md
- Supports multiple integration methods including Python, MCP, and REST API for flexibility across different agent architectures. evidence: README.md
Limitations
- Embedding models may require initial download, and running without network access requires pre-caching model files. evidence: README.md
- The project is in maintenance mode, meaning no new features are planned, with updates limited to security and dependency maintenance. evidence: README.md
Security
Risk level: No risk found
This brain runs
Agent instructions that run or fetch something (48)
AGENTS.md:**`README.md`** — overview, install, quick-start examples.AGENTS.md:**`docs/GETTING_STARTED.md`** — first-run walkthrough for new contributors.AGENTS.md:make build # Full build (Rust + PyO3 into .venv)AGENTS.md:make test # Rust + Python testsAGENTS.md:make lint # clippy --workspace + ruff check + pyrightAGENTS.md:make format # cargo fmt + ruff formatAGENTS.md:make check # Rust + Python lint and tests; run SDK checks separatelyAGENTS.md:.venv/bin/pytest tests/python/ -v # Python tests (requires `make build` first)AGENTS.md:cargo run -p pensyve-mcp-gateway # HTTP gateway (port 3000)AGENTS.md:cargo run -p pensyve-cli -- recall "q" # CLIAGENTS.md:cargo run -p pensyve-mcp # MCP stdio serverAGENTS.md:Python env setup: `uv sync --extra dev && uv run maturin develop --manifest-path pensyve-python/Cargo.toml`AGENTS.md:Use `git add` with specific filenames.AGENTS.md:Run `make check` before pushing.integrations/antigravity-plugin/skills/context-loader/SKILL.md:If the user explicitly opts into cross-entity discovery, run targeted recall queries with `types: ["episodic", "procedural", "semantic"]`, `limit: 5`, and label the results as top matches ranked by relevance/RRF score.integrations/antigravity-plugin/skills/memory-informed-refactor/SKILL.md:Run multiple `pensyve_recall` queries to gather comprehensive context about the target within the shared recall budget:integrations/antigravity-plugin/skills/memory-review/SKILL.md:If no entity is specified, run a broad `pensyve_recall` query with `"*"` (limit: 50) to discover entities, then inspect the top entities found.integrations/antigravity-plugin/skills/session-memory/SKILL.md:Then run `pensyve_recall` with a query matching the sanitized candidate fact.integrations/claude-code/skills/context-loader/SKILL.md:Run the following `pensyve_recall` queries to gather session context:integrations/claude-code/skills/memory-informed-design/SKILL.md:If the design process revealed a reusable way to evaluate similar decisions (e.g., "run spike vs.integrations/claude-code/skills/memory-informed-longitudinal-work/SKILL.md:| What you learned | Type | Example | |---|---|---| | Per-run outcome (what this run showed) | episodic | "Run N+1: V7r accuracy improved +3.5% with new threshold" | | Stable truth about the system | semantic | "Haiku classifier plateaus above temp 0.3" | | Reusable experiment procedure …[+83 chars]integrations/claude-code/skills/memory-informed-longitudinal-work/SKILL.md:When a run ends with an unresolved question ("X improved but we don't know why"), capture it as an episodic observation with open-question provenance:integrations/claude-code/skills/memory-informed-longitudinal-work/SKILL.md:Before Stop fires, briefly summarize (inline, 3-5 lines): what this run taught us vs.integrations/claude-code/skills/memory-informed-refactor/SKILL.md:Run multiple `pensyve_recall` queries to gather comprehensive context about the target:integrations/claude-code/skills/memory-review/SKILL.md:If no entity is specified, run a broad `pensyve_recall` query with `"*"` (limit: 50) to discover entities, then inspect the top entities found.integrations/claude-code/skills/memory-review/SKILL.md:**Consolidation**: Suggest running `/consolidate` (this skill does not run consolidation directly).integrations/claude-code/skills/session-memory/SKILL.md:Before storing, run `pensyve_recall` with a query matching the candidate fact to check for duplicates.integrations/codex-plugin/AGENTS.md:| What you learned | Type | Call | |---|---|---| | Per-run outcome | episodic | `pensyve_observe(..., content: "[proactive/in-flight/tier-1] Run N+1: ...", source_entity: "codex", about_entity: <entity>, content_type: "text")` | | Stable truth | semantic | `pensyve_remember(entity, fac …[+280 chars]integrations/codex-plugin/AGENTS.md:Before wrapping: summarize what this run taught vs.integrations/codex-plugin/skills/context-loader/SKILL.md:Run the following `pensyve_recall` queries to gather session context:integrations/codex-plugin/skills/memory-informed-refactor/SKILL.md:Run multiple `pensyve_recall` queries to gather comprehensive context about the target:integrations/codex-plugin/skills/memory-review/SKILL.md:If no entity is specified, run a broad `pensyve_recall` query with `"*"` (limit: 50) to discover entities, then inspect the top entities found.integrations/codex-plugin/skills/session-memory/SKILL.md:Before storing, run `pensyve_recall` with a query matching the candidate fact to check for duplicates.integrations/hermes/AGENTS.md:| What you learned | Type | Call | |---|---|---| | Per-run outcome | episodic | `pensyve_observe(..., content: "[proactive/in-flight/tier-1] Run N+1: ...", source_entity: "hermes", about_entity: <entity>, content_type: "text")` | | Stable truth | semantic | `pensyve_remember(entity, fa …[+282 chars]integrations/hermes/AGENTS.md:Before wrapping: summarize what this run taught vs.integrations/openclaw-plugin/AGENTS.md:| What you learned | Type | Call | |---|---|---| | Per-run outcome | episodic | `pensyve_observe(..., content: "[proactive/in-flight/tier-1] Run N+1: ...", source_entity: "openclaw", about_entity: <entity>, content_type: "text")` | | Stable truth | semantic | `pensyve_remember(entity, …[+286 chars]integrations/openclaw-plugin/AGENTS.md:Before wrapping: summarize what this run taught vs.integrations/opencode-plugin/AGENTS.md:| What you learned | Type | Call | |---|---|---| | Per-run outcome | episodic | `pensyve_observe(..., content: "[proactive/in-flight/tier-1] Run N+1: ...", source_entity: "opencode", about_entity: <entity>, content_type: "text")` | | Stable truth | semantic | `pensyve_remember(entity, …[+286 chars]integrations/opencode-plugin/AGENTS.md:Before wrapping: summarize what this run taught vs.pensyve-ts/CLAUDE.md:Use `bun <file>` instead of `node <file>` or `ts-node <file>`pensyve-ts/CLAUDE.md:Use `bun test` instead of `jest` or `vitest`pensyve-ts/CLAUDE.md:Use `bun build <file.html|file.ts|file.css>` instead of `webpack` or `esbuild`pensyve-ts/CLAUDE.md:Use `bun install` instead of `npm install` or `yarn install` or `pnpm install`pensyve-ts/CLAUDE.md:Use `bun run <script>` instead of `npm run <script>` or `yarn run <script>` or `pnpm run <script>`pensyve-ts/CLAUDE.md:Use `bunx <package> <command>` instead of `npx <package> <command>`pensyve-ts/CLAUDE.md:Use `bun test` to run tests.pensyve-ts/CLAUDE.md:Then, run index.tspensyve-ts/CLAUDE.md:bun --hot ./index.ts
MCP servers (2)
README.md(pensyve):pensyve-mcp --stdiointegrations/codex-plugin/.mcp.json(pensyve):pensyve-mcp --stdio
Hooks (8)
integrations/claude-code/hooks/hooks.json(SessionStart):cat "${CLAUDE_PLUGIN_ROOT}/hooks/session-start.md"integrations/claude-code/hooks/hooks.json(PostToolUse):cat "${CLAUDE_PLUGIN_ROOT}/hooks/post-tool-write-edit.md"integrations/claude-code/hooks/hooks.json(PostToolUse):cat "${CLAUDE_PLUGIN_ROOT}/hooks/post-tool-bash.md"integrations/claude-code/hooks/hooks.json(PreCompact):cat "${CLAUDE_PLUGIN_ROOT}/hooks/pre-compact.md"integrations/claude-code/hooks/hooks.json(Stop):cat "${CLAUDE_PLUGIN_ROOT}/hooks/stop.md"integrations/claude-code/hooks/hooks.json(UserPromptSubmit):cat "${CLAUDE_PLUGIN_ROOT}/hooks/user-prompt-submit.md"integrations/codex-plugin/hooks/hooks.json(SessionStart):cat "${PLUGIN_ROOT}/hooks/session-start.md"integrations/codex-plugin/hooks/hooks.json(UserPromptSubmit):cat "${PLUGIN_ROOT}/hooks/user-prompt-submit.md"
Attribution and licence
- Created by
- Major 7 Apps LLC
- Declared authors
- Major7 Apps (declared in pyproject.toml)
- Publisher
- Major 7 Apps LLC (Official Major 7 Apps LLC project)
- Source
- major7apps/pensyve · commit d2c56fa
- Licence
- Apache License 2.0 (files served here)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Major 7 Apps LLC.
Install from source
482 of its files are not served here, so there is no ZIP. major7apps/pensyve at d2c56fa