loop-memory
v0.7.0pgvector semantic recall for verified dev-loop lessons (and, optionally, ADR/glossary/research knowledge). Opt-in: installs disabled by default — this is a database dependency, not core loop mechanics.
By paulkim-lansikLicense: MIT0 GitHub starsUpdated yesterday
Directory evidence
- Runtimes
- Claude Code
- Parsed components
- 0 skill or MCP entries
- Source updated
- Sep 22, 2026
- Manifest status
- Canonical path parsed
The directory validates manifest shape and source location. It does not execute the plugin or provide a security endorsement. Review the indexing methodology →
Install loop-memory for Claude Code
claude plugin marketplace add IchenDEV/agent-plugin-mkt
claude plugin marketplace update agent-plugin-marketplace
claude plugin install loop-memory@agent-plugin-marketplacePaste and run these commands in a terminal with Claude Code. They add and refresh the PluginsMP catalog, then install this plugin.
The installer fetches third-party code from the source repository shown on this page. This directory validates manifest structure and source location, but does not perform a security audit; review the manifest, components, and source before installing.
Get the source manually
git clone https://github.com/reach0908/paul-loopClone the source repository, then follow its setup instructions to add the plugin to a compatible client. The plugin root is tools/loop-memory/.
Plugin files
└── .claude-plugin/plugin.json
Plugin manifests1
{
"name": "loop-memory",
"version": "0.7.0",
"description": "pgvector semantic recall for verified dev-loop lessons (and, optionally, ADR/glossary/research knowledge). Opt-in: installs disabled by default — this is a database dependency, not core loop mechanics.",
"author": {
"name": "paulkim-lansik"
},
"homepage": "https://github.com/reach0908/paul-loop",
"repository": "https://github.com/reach0908/paul-loop",
"license": "MIT",
"keywords": [
"memory",
"pgvector",
"recall",
"semantic-search",
"lessons"
],
"defaultEnabled": false,
"dependencies": [
{
"name": "loop-engine",
"version": "^0.15.0"
}
],
"userConfig": {
"openai_api_key": {
"type": "string",
"title": "OpenAI API key",
"description": "Used to embed lessons/knowledge for semantic recall (provider=openai). Leave unset if using Gemini instead. Without either key, the hooks no-op (fail-open).",
"sensitive": true,
"required": false
},
"gemini_api_key": {
"type": "string",
"title": "Gemini API key",
"description": "Used to embed lessons/knowledge for semantic recall (provider=gemini). Leave unset if using OpenAI instead.",
"sensitive": true,
"required": false
},
"loop_database_url": {
"type": "string",
"title": "loop-memory Postgres connection URL",
"description": "pgvector-enabled Postgres to store notes in. Defaults to this plugin's docker-compose.yml (postgresql://postgres:postgres@localhost:5434/loop_memory).",
"required": false
},
"loop_memory_signing_key": {
"type": "string",
"title": "Write-path signing key",
"description": "HMAC-SHA256 key required for store writes and recall. Notes are bound to repository owner, corpus, source, embedding identity and content hash, including knowledge notes. Missing configuration fails closed; see README Threat model.",
"sensitive": true,
"required": false
},
"loop_dotenv_path": {
"type": "string",
"title": "Dotenv file the hooks load keys from",
"description": "Repo-relative (or absolute) path to a dotenv-shaped file the hooks read before their embedding-key gate — Claude Code hands hooks the session process env only and never loads .env files, so a key that lives solely in an (unexported, gitignored) .env would otherwise make both hooks no-op silently. Values already set in the session env or via the options above always win. Default (if unset): .loop/.env. If the path is missing in a feature worktree, the main worktree's copy is used (a gitignored .env is never copied into a new worktree).",
"required": false
},
"loop_adr_dir": {
"type": "string",
"title": "ADR directory (optional knowledge source)",
"description": "Repo-relative path to your ADR directory (e.g. docs/adr). Assumes each file's first line is `# ADR-NNNN: Title` and a `**Status**: Superseded (by ADR-XXXX)`-style marker for deprecation. Leave unset to skip this knowledge source entirely.",
"required": false
},
"loop_context_file": {
"type": "string",
"title": "Glossary file (optional knowledge source)",
"description": "Repo-relative path to a single glossary markdown file, chunked by `**Term**:` paragraphs. Leave unset to skip.",
"required": false
},
"loop_research_dir": {
"type": "string",
"title": "Research directory (optional knowledge source)",
"description": "Repo-relative path to a directory of markdown research docs, chunked by `##` section. Leave unset to skip.",
"required": false
},
"loop_design_dir": {
"type": "string",
"title": "Design-spec directory (optional knowledge source)",
"description": "Repo-relative path to a directory of markdown design-spec docs, chunked by `##` section. Leave unset to skip.",
"required": false
},
"loop_recall_max_distance": {
"type": "number",
"title": "Lessons recall distance cutoff",
"description": "Cosine distance (0=identical..2=opposite) above which a lesson hit is dropped instead of injected. Embedder-dependent — calibrate for your provider. Default (if unset): 0.65, a loose safety net.",
"required": false
},
"loop_knowledge_max_distance": {
"type": "number",
"title": "Knowledge recall distance cutoff",
"description": "Same as loop_recall_max_distance, but for the knowledge corpus (ADR/glossary/research/design) — kept separate since knowledge prose has a different embedding distribution than short lesson signatures. Default (if unset): 0.65.",
"required": false
},
"loop_embed_provider": {
"type": "string",
"title": "Embedding provider",
"description": "openai or gemini. Set explicitly when both provider credentials are present; ambiguous selection fails closed.",
"required": false
},
"loop_embed_model": {
"type": "string",
"title": "Embedding model",
"description": "Explicit provider model override. The resolved model and dimensions are part of store compatibility; changing them requires a deliberate reindex.",
"required": false
}
}
}For maintainers
If you maintain this plugin, link to this source-backed listing from your README so users can review its manifest and indexed components.
[loop-memory on Agent Plugins Marketplace](https://pluginsmp.com/plugins/loop-memory)