By ehfazrezwan
Persistent agentic memory for Claude Code and Claude Cowork. Multi-user support: each user has personal memory (only they can read it) plus access to a shared team knowledge pool. In Claude Code, plugin hooks auto-capture conversations + per-tool observations and recall context on session start; in Claude Cowork (which does not run plugin hooks), the cross-platform recall/remember/save-session/project skills drive the same loop through the MCP connector. Exposes 8 MCP tools (recall_memories, remember, remember_conversation, get_project_context, search_knowledge_graph, list_memories, list_projects, delete_memories).
Manually compile the current session's PostToolUse observation buffer into Neuralscape memories. Use when the user types `/neuralscape:capture` or asks to "flush memories now" / "save what we've done so far".
Read a JSONL buffer of captured tool observations and extract significant memories using the Neuralscape memory model v2. Use this when a UserPromptSubmit, SessionStart, or `/neuralscape:capture` instruction asks you to compile observations from a buffer file path.
Show the current Neuralscape plugin configuration (URL, user_id, API-key state) and how identity is resolved on this platform. Use when the user asks "what's my neuralscape config", "where is neuralscape pointing", "am I logged in to neuralscape", or wants to verify their settings. Works in both Claude Code and Claude Cowork.
Check that Neuralscape is reachable and show the current plugin configuration. Use when the user asks "is neuralscape working", "is my memory service up", "what URL is neuralscape using", or any health/connectivity question. Works in both Claude Code and Claude Cowork.
List the user's Neuralscape projects and pick (or create) the one to scope memory to for this session. Use when the user says "switch project", "what projects do I have", "set project to X", or when a recall/remember needs a project and none is active. Especially useful in Claude Cowork, which has no working directory to infer a project from. MCP-driven — works in both platforms.
External network access
Connects to servers outside your machine
Based on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
This plugin requires configuration values that are prompted when the plugin is enabled. Sensitive values are stored in your system keychain.
URLBase URL of your Neuralscape API (e.g. https://neuralscape.example.com or http://localhost:8199).
${user_config.URL}API_KEYFor multi-user deployments, this is your per-user token issued by the admin via `scripts/issue_user_token.py --user <name>`. The token encodes your user_id; the server reads it from the token, not from the body. For legacy single-user deployments, this is the shared NEURALSCAPE_API_KEY. Leave empty for local dev.
${user_config.API_KEY}USER_IDStable identifier used to scope memories to you. When using a per-user token, this must match the user_id encoded in the token (or be left empty — the token wins). Required for legacy shared-key auth.
${user_config.USER_ID}COMPILE_AGE_MINBuffer age (oldest entry) that triggers in-session compilation. Default: 30.
${user_config.COMPILE_AGE_MIN}COMPILE_THRESHOLDBuffer size that triggers in-session compilation via UserPromptSubmit. Default: 25.
${user_config.COMPILE_THRESHOLD}A production-grade memory system for AI coding assistants and personal agents. Neuralscape gives any LLM-powered agent persistent, structured memory across sessions and projects — remembering user preferences, project conventions, technical decisions, and learned facts.
Built on mem0 (vector storage + LLM deduplication) and Graphiti (temporal knowledge graph), exposed via REST API and MCP server. Memory writes are processed asynchronously by background workers via ARQ + Redis.
Looking for the comprehensive reference? See
docs/neuralscape/for 12 pages covering architecture, schemas, plugin internals, deployment, and more. Start at00-overview.mdor jump straight to01-getting-started.mdfor the full setup walkthrough.
# 1. Copy env template and add your Gemini API key
cp .env.example .env
# Edit .env: set GOOGLE_API_KEY=your-key
# 2. Start the full stack
docker compose up --build -d
# 3. Verify
docker compose ps
# Should show: neo4j, redis, qdrant, neuralscape, neuralscape-worker
curl http://localhost:8199/health
# → {"status":"ok","service":"neuralscape-memory","checks":{"redis":"ok","vector_store":"ok","graph_store":"ok"}}
# 4. Test async memory storage
curl -X POST http://localhost:8199/v1/memories/raw \
-H "Content-Type: application/json" \
-d '{"content": "Prefers dark mode", "user_id": "test", "category": "preference"}'
# → {"status":"accepted","task_id":"...","poll_url":"/v1/memories/status/..."}
# 5. Install the Claude Code / Cowork plugin (optional but recommended)
# From inside Claude Code:
# /plugin marketplace add ehfazrezwan/neuralscape
# /plugin install neuralscape@neuralscape-plugins
# Cowork: Customize → Browse plugins → Install. Same catalog, GUI flow.
# The plugin will prompt for your service URL, API key (optional), and user_id.
# Stop with: docker compose down
# Start Redis and Qdrant (via Docker or locally)
docker run -d --name redis -p 6379:6379 redis:7-alpine
docker run -d --name qdrant -p 6333:6333 qdrant/qdrant:v1.13.2
cd neuralscape-service
# Create .env file
cat > .env << 'EOF'
GOOGLE_API_KEY=your-gemini-api-key
NEO4J_URI=neo4j://127.0.0.1:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=your-neo4j-password
NEO4J_DATABASE=memory
QDRANT_URL=http://localhost:6333
EOF
# Install dependencies
uv sync
# Start the ARQ worker (terminal 1)
uv run arq worker.WorkerSettings
# Start the API server (terminal 2)
uv run python main.py
# → Listening on http://0.0.0.0:8199
# Run unit tests (no external services needed)
uv run pytest tests/test_service.py -v
# Run integration tests (requires all services running)
uv run pytest tests/test_async_pipeline.py -v -s
The neuralscape plugin gives Claude Code automatic, persistent memory: lifecycle hooks plus nine user-facing slash commands (plus an internal compile-observations helper the hooks/capture invoke) plus the eight Neuralscape MCP tools auto-wired on install.
Claude Cowork: Cowork does not run plugin hooks (#27398), so the automatic inject/capture loop below does not fire there. Cowork is supported via a remote MCP OAuth connector plus a standing-context "memory protocol" that drives recall/capture through the MCP tools. See COWORK.md — that is the supported Cowork path, not this hook-based one.
[Claude Code or Cowork]
↓ SessionStart hook (sync — pulls context from /v1/context/, injects as additionalContext)
↓ Stop hook (async — flushes new turns, commits offset, triggers compile)
[neuralscape-plugin/] ← TypeScript plugin (auto-detects Claude Code / Cowork / OpenClaw / generic)
↓ HTTP calls
[neuralscape-service/] ← Python service (extraction, storage, graph, vault dual-write)
npx claudepluginhub ehfazrezwan/neuralscape --plugin neuralscapeEvidence-gated AI coding workflow: scan → analyze → plan → TDD → execute → fix → verify → review, powered by Codebase Memory MCP >= 0.9.0 with optional Serena LSP intelligence. Includes blast-radius planning, test/cycle gates, independent review, and Windows Git Bash hook auto-resolution.
Harness-native ECC plugin for engineering teams - 67 agents, 279 skills, 94 legacy command shims, reusable hooks, rules, MCP conventions, and operator workflows for Claude Code plus adjacent agent harnesses
Claude harness - A harness for solo developers (Vibecoders) to handle full-cycle contract development.
Core skills library for Claude Code: TDD, debugging, collaboration patterns, and proven techniques
Reliable automation, in-depth debugging, and performance analysis in Chrome using Chrome DevTools and Puppeteer
v9.54.1 — Reliability wave: tangle contextual review correction loop with hard round ceiling, progress-supervised review rounds (per-agent stall watch, descendant-tree kills), council diversity and agy pin fixes, marketplace generator source-of-truth fix, provider troubleshooting runbook and cost-expectations docs. Run /octo:setup.