{"id":44952983,"url":"https://github.com/vbcherepanov/claude-total-memory","last_synced_at":"2026-02-22T15:02:01.699Z","repository":{"id":338760760,"uuid":"1159027243","full_name":"vbcherepanov/claude-total-memory","owner":"vbcherepanov","description":"Persistent memory MCP server for Claude Code \u0026 Codex CLI — self-improving agent with 4-tier search, 20 tools","archived":false,"fork":false,"pushed_at":"2026-02-19T10:44:26.000Z","size":148,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-20T14:59:20.542Z","etag":null,"topics":["ai-memory","ai-tools","anthropic","chromadb","claude-code","claude-code-mcp","claude-code-plugin","claude-memory","codex-cli","developer-tools","knowledge-management","llm-tools","mcp","mcp-server","model-context-protocol","persistent-memory","python","self-improving-agent","semantic-search","sqlite"],"latest_commit_sha":null,"homepage":"https://github.com/vbcherepanov/claude-total-memory#quick-start","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vbcherepanov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-16T08:14:09.000Z","updated_at":"2026-02-19T10:44:29.000Z","dependencies_parsed_at":"2026-02-19T12:00:42.594Z","dependency_job_id":null,"html_url":"https://github.com/vbcherepanov/claude-total-memory","commit_stats":null,"previous_names":["vbcherepanov/claude-total-memory"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/vbcherepanov/claude-total-memory","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vbcherepanov%2Fclaude-total-memory","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vbcherepanov%2Fclaude-total-memory/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vbcherepanov%2Fclaude-total-memory/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vbcherepanov%2Fclaude-total-memory/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vbcherepanov","download_url":"https://codeload.github.com/vbcherepanov/claude-total-memory/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vbcherepanov%2Fclaude-total-memory/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29682748,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-21T13:29:26.630Z","status":"ssl_error","status_checked_at":"2026-02-21T13:26:50.125Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-memory","ai-tools","anthropic","chromadb","claude-code","claude-code-mcp","claude-code-plugin","claude-memory","codex-cli","developer-tools","knowledge-management","llm-tools","mcp","mcp-server","model-context-protocol","persistent-memory","python","self-improving-agent","semantic-search","sqlite"],"created_at":"2026-02-18T11:06:27.826Z","updated_at":"2026-02-22T15:02:01.652Z","avatar_url":"https://github.com/vbcherepanov.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# 🧠 Claude Total Memory\n\n### Persistent memory MCP server for Claude Code \u0026 Codex CLI\n\n**Claude forgets everything between sessions. This fixes that.**\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n[![Python 3.10+](https://img.shields.io/badge/Python-3.10%2B-green.svg)](https://python.org)\n[![MCP Server](https://img.shields.io/badge/MCP-Server-purple.svg)](https://modelcontextprotocol.io)\n[![Version](https://img.shields.io/github/v/release/vbcherepanov/claude-total-memory)](https://github.com/vbcherepanov/claude-total-memory/releases)\n[![GitHub stars](https://img.shields.io/github/stars/vbcherepanov/claude-total-memory)](https://github.com/vbcherepanov/claude-total-memory/stargazers)\n\n[Quick Start](#quick-start) · [Features](#features) · [20 MCP Tools](#mcp-tools) · [Dashboard](#web-dashboard) · [Self-Improving Agent](#self-improving-agent)\n\n\u003c/div\u003e\n\n---\n\n## Why This Exists\n\n| Without Memory | With Claude Total Memory |\n|---|---|\n| 🔴 Repeating project context every session | 🟢 Claude recalls your architecture, decisions, conventions |\n| 🔴 Re-discovering the same bug fixes | 🟢 Solutions saved and retrieved automatically |\n| 🔴 Claude makes the same mistakes | 🟢 Self-improving: learns from errors across sessions |\n| 🔴 Knowledge lost at context limit | 🟢 Persistent local database, no cloud, no API keys |\n| 🔴 No idea what happened last session | 🟢 Full session timeline with search |\n\n\u003e **20 MCP tools** · **4-tier search** (FTS5 → semantic → fuzzy → graph) · **Self-improving agent** · **Web dashboard** · **Privacy stripping** · **Works with Claude Code + Codex CLI**\n\n---\n\n## How It Compares\n\n| Feature | Claude Total Memory | [mcp-memory-service](https://github.com/doobidoo/mcp-memory-service) | [memory-mcp](https://github.com/yuvalsuede/memory-mcp) |\n|---|---|---|---|\n| Search tiers | 4 (FTS5 + semantic + fuzzy + graph) | Semantic only | None (file-based) |\n| Self-improving agent | ✅ Error → Insight → Rule pipeline | ❌ | ❌ |\n| Knowledge types | 5 (decision, solution, lesson, fact, convention) | 1 (generic) | 1 (summary) |\n| Privacy stripping | ✅ Auto-redacts keys, tokens, emails | ❌ | ❌ |\n| Knowledge graph | ✅ Typed relations + graph expansion | ❌ | ❌ |\n| Web dashboard | ✅ Stats, graph, live feed, SOUL rules | ❌ | ✅ Basic |\n| Decay scoring | ✅ Exponential + spaced repetition | ❌ | ❌ |\n| Deduplication | ✅ Jaccard + fuzzy | ❌ | ❌ |\n| Branch-aware | ✅ Filter by git branch | ❌ | ❌ |\n| Codex CLI support | ✅ Shared database | ❌ | ❌ |\n| MCP tools | 20 | 10 | 3 |\n| Storage | SQLite + ChromaDB (local) | ChromaDB (local) | JSON files |\n\n---\n\n## Works With\n\n- **[Claude Code](https://docs.anthropic.com/en/docs/claude-code)** — full MCP integration, hooks, auto-triggers\n- **[OpenAI Codex CLI](https://github.com/openai/codex)** — shared memory database, dedicated installer\n- **Any MCP-compatible client** — standard Model Context Protocol server\n\n---\n\n## Features\n\n**Search and Retrieval**\n- 4-tier search pipeline: FTS5 keyword (BM25) -\u003e semantic (ChromaDB) -\u003e fuzzy (SequenceMatcher) -\u003e graph expansion\n- Decay scoring: recent knowledge ranks higher, stale knowledge fades\n- Spaced repetition: frequently recalled knowledge gets boosted\n- 3-level progressive disclosure: compact (~50 tokens/result), summary (150 chars), full -- up to 10x token savings\n- Token cost estimation: each result includes estimated tokens, response includes total_tokens\n- Branch-aware context: knowledge and sessions tagged with git branch, filterable on recall\n\n**Knowledge Management**\n- Five knowledge types: decision, solution, lesson, fact, convention\n- Automatic deduplication via Jaccard + fuzzy similarity (thresholds: 0.85 / 0.90)\n- Version history with supersession chains\n- Knowledge graph with typed relations between records\n- Tag-based browsing and filtering\n\n**Privacy and Security** (new in v4.0)\n- Automatic redaction of sensitive data: API keys, JWTs, passwords, credit card numbers, emails, IP addresses\n- `\u003cprivate\u003e` tag support for explicit content exclusion\n- All redaction happens before database storage -- sensitive data never persists\n\n**Observations** (new in v4.0)\n- Lightweight file change tracking via `memory_observe` -- no dedup, no vector embeddings\n- Six observation types: bugfix, feature, refactor, change, discovery, decision\n- Automatic cleanup after 30 days\n- Ideal for tracking what changed and why during a session\n\n**Self-Improving Agent** (v3.0)\n- Automatic error logging with structured categories and severity levels\n- Pattern detection: 3+ errors of the same category in 30 days triggers an insight suggestion\n- Insight extraction with ExpeL-style voting (importance + confidence scoring)\n- Rule promotion: high-confidence insights become persistent behavioral rules (SOUL)\n- Auto-suspend: rules with success rate below 20% after 10+ applications are suspended\n- Session reflections for meta-observations about strategy and approach\n- Rules loaded at session start, rated after task completion -- a closed feedback loop\n\n**Lifecycle and Maintenance**\n- Retention zones: active -\u003e archived (180d) -\u003e purged (365d)\n- Consolidation: find and merge similar records\n- Full JSON export for backup and migration\n- Session transcript extraction for post-session knowledge mining\n\n**Dashboard**\n- Web UI at `localhost:37737`\n- Statistics, health score, knowledge table with token estimates, session browser\n- Interactive knowledge graph visualization\n- Self-Improvement tab: error patterns, insights, promotion candidates\n- Rules/SOUL tab: active rules, effectiveness metrics, success rates\n- Live Feed tab (new in v4.0): real-time SSE stream of knowledge, errors, and observations\n- Branch filter for knowledge browsing\n- Read-only -- safe to leave running\n\n---\n\n## Quick Start\n\n### Option A: One-Command Install\n\n**macOS / Linux:**\n\n```bash\ngit clone https://github.com/vbcherepanov/claude-total-memory.git\ncd claude-total-memory\nbash install.sh\n```\n\n**Windows (PowerShell):**\n\n```powershell\ngit clone https://github.com/vbcherepanov/claude-total-memory.git\ncd claude-total-memory\npowershell -ExecutionPolicy Bypass -File install.ps1\n```\n\nThe installer creates a Python venv, installs dependencies, downloads the embedding model, and configures Claude Code automatically.\n\n### Option B: Manual Setup\n\n**1. Clone and install dependencies**\n\nmacOS / Linux:\n\n```bash\ngit clone https://github.com/vbcherepanov/claude-total-memory.git\ncd claude-total-memory\npython3 -m venv .venv\nsource .venv/bin/activate\npip install \"mcp[cli]\u003e=1.0.0\" chromadb sentence-transformers\n```\n\nWindows (PowerShell):\n\n```powershell\ngit clone https://github.com/vbcherepanov/claude-total-memory.git\ncd claude-total-memory\npython -m venv .venv\n.venv\\Scripts\\activate\npip install \"mcp[cli]\u003e=1.0.0\" chromadb sentence-transformers\n```\n\n**2. Configure Claude Code**\n\nEdit `~/.claude/settings.json` (macOS/Linux) or `%USERPROFILE%\\.claude\\settings.json` (Windows) and add the MCP server. All paths must be absolute:\n\nmacOS / Linux:\n\n```json\n{\n  \"mcpServers\": {\n    \"memory\": {\n      \"command\": \"/FULL/PATH/TO/claude-total-memory/.venv/bin/python\",\n      \"args\": [\"/FULL/PATH/TO/claude-total-memory/src/server.py\"],\n      \"env\": {\n        \"CLAUDE_MEMORY_DIR\": \"/Users/yourname/.claude-memory\",\n        \"EMBEDDING_MODEL\": \"all-MiniLM-L6-v2\"\n      }\n    }\n  }\n}\n```\n\nWindows:\n\n```json\n{\n  \"mcpServers\": {\n    \"memory\": {\n      \"command\": \"C:/Users/yourname/claude-total-memory/.venv/Scripts/python.exe\",\n      \"args\": [\"C:/Users/yourname/claude-total-memory/src/server.py\"],\n      \"env\": {\n        \"CLAUDE_MEMORY_DIR\": \"C:/Users/yourname/.claude-memory\",\n        \"EMBEDDING_MODEL\": \"all-MiniLM-L6-v2\"\n      }\n    }\n  }\n}\n```\n\n\u003e **Important:** MCP server configuration does not support `~`, `$HOME`, or `%USERPROFILE%` in paths. You must use fully expanded absolute paths. On Windows, use forward slashes (`/`) in JSON paths -- they work correctly with Python.\n\n**3. Verify**\n\nRestart Claude Code. You should see `memory` listed in the MCP servers. Run `memory_stats()` to confirm the connection.\n\n---\n\n## MCP Tools\n\n### Core (5 tools)\n\n| Tool | Description |\n|------|-------------|\n| `memory_recall` | Search all past knowledge. 4-tier search with decay scoring. 3-level detail: compact, summary, full. Branch filtering. Token estimation. |\n| `memory_save` | Save knowledge with type, project, tags, context, and branch. Auto-deduplicates. Privacy stripping. |\n| `memory_update` | Find existing knowledge by search query, supersede it, create a new version. |\n| `memory_search_by_tag` | Browse all active knowledge matching a tag (partial match supported). |\n| `memory_observe` | Lightweight observation tracking for file changes and discoveries. No dedup, no embeddings, 30-day retention. |\n\n### Browsing and Analytics (3 tools)\n\n| Tool | Description |\n|------|-------------|\n| `memory_timeline` | Browse session history by number, date range, or keyword search. |\n| `memory_stats` | View statistics: knowledge counts, health score, storage size, config. |\n| `memory_export` | Export all knowledge as JSON for backup or migration. |\n\n### Lifecycle (3 tools)\n\n| Tool | Description |\n|------|-------------|\n| `memory_consolidate` | Find and merge duplicate/similar records. Supports dry run preview. |\n| `memory_forget` | Apply retention policy: archive stale records, purge old archives. |\n| `memory_delete` | Soft-delete a knowledge record. Removes from search and vector store. |\n\n### Graph and Versioning (2 tools)\n\n| Tool | Description |\n|------|-------------|\n| `memory_relate` | Create typed relations between records (causal, solution, context, related, contradicts). |\n| `memory_history` | View the version chain for a record -- walk through how knowledge evolved. |\n\n### Extraction (1 tool)\n\n| Tool | Description |\n|------|-------------|\n| `memory_extract_session` | Process pending session transcripts. List, read, and mark as complete. |\n\n### Self-Improvement (6 tools, v3.0)\n\n| Tool | Description |\n|------|-------------|\n| `self_error_log` | Log structured errors for pattern analysis. Called automatically on failures -- bash errors, wrong assumptions, API errors, config issues, timeouts, and loops. System detects patterns (3+ same category) and suggests insights. |\n| `self_insight` | Manage insights extracted from error patterns. Supports add/upvote/downvote/edit/list/promote. ExpeL-style voting: upvote increases importance (+1) and confidence (+0.05), downvote decreases them. Auto-archives at importance 0. |\n| `self_rules` | Manage behavioral rules (SOUL). Supports list/fire/rate/suspend/activate/retire/add_manual. Auto-suspend when success_rate \u003c 0.2 after 10+ fires. |\n| `self_patterns` | Analyze error patterns, promotion candidates, rule effectiveness, and improvement trends. Views: error_patterns, insight_candidates, rule_effectiveness, improvement_trend, full_report. |\n| `self_reflect` | Save session reflections for meta-observations about strategy and approach. Not for errors (use self_error_log). For process improvements and what to do differently. |\n| `self_rules_context` | Load active rules at session start. Returns rules filtered by project and scope. Call at beginning of every session, then rate rules after task completion. |\n\n---\n\n## How It Works\n\n### Search Pipeline\n\nWhen `memory_recall` is called, the query passes through four tiers:\n\n```\nQuery: \"docker networking between containers\"\n             |\n             v\n  +---------------------+\n  | Tier 1: FTS5 + BM25 |  Keyword search with relevance ranking\n  +---------------------+\n             |\n             v\n  +---------------------+\n  | Tier 2: Semantic     |  ChromaDB cosine similarity on embeddings\n  +---------------------+\n             |\n             v\n  +---------------------+\n  | Tier 3: Fuzzy        |  SequenceMatcher for typos and partial matches\n  +---------------------+\n             |\n             v\n  +---------------------+\n  | Tier 4: Graph        |  Follow relations from top 5 results (1 hop)\n  +---------------------+\n             |\n             v\n  +---------------------+\n  | Decay + Rank + Boost |  Apply time decay, recall boost, final sort\n  +---------------------+\n             |\n             v\n        Top N results\n```\n\nResults from all tiers are merged. Records found by multiple tiers receive combined scores.\n\n### Decay Scoring\n\nKnowledge decays over time unless confirmed or recalled:\n\n```\nscore = base_score * e^(-days * ln(2) / half_life) + recall_boost\n```\n\n- `half_life`: 90 days (configurable via `DECAY_HALF_LIFE`)\n- `recall_boost`: `min(0.3, recall_count * 0.05)` -- frequently used knowledge stays relevant\n- Records confirmed on last recall get their `last_confirmed` timestamp refreshed\n\n### Retention Zones\n\n```\n                  180 days               365 days\n    Active --------+-----\u003e Archived ------+-----\u003e Purged\n                   |                      |\n        (unrecalled, low confidence)  (all archived)\n```\n\n- **Active**: searchable, fully available\n- **Archived**: removed from search, still in database\n- **Purged**: marked for cleanup\n\nOnly records with `recall_count = 0` and `confidence \u003c 0.8` are candidates for archival.\n\n### Deduplication\n\nOn every `memory_save`, the server checks for existing similar knowledge:\n\n1. FTS5 search for candidate matches (top 5)\n2. Jaccard similarity \u003e 0.85 -- deduplicated\n3. Fuzzy ratio \u003e 0.90 -- deduplicated\n\nWhen a duplicate is found, the existing record's `last_confirmed` timestamp is refreshed instead of creating a new record.\n\n---\n\n## Self-Improving Agent\n\nNew in v3.0. The self-improvement system gives Claude the ability to learn from mistakes across sessions. It follows a three-level pipeline inspired by the ExpeL (Experience and Learning) and Reflexion research patterns.\n\n### Pipeline Overview\n\n```\n  Error occurs (bash fail, wrong assumption, API error, ...)\n       |\n       v\n  +------------------+\n  | self_error_log   |  Log structured error with category, severity, fix\n  +------------------+\n       |\n       | (3+ errors of same category within 30 days)\n       v\n  +------------------+\n  | Pattern Detected |  System flags the pattern automatically\n  +------------------+\n       |\n       v\n  +------------------+\n  | self_insight     |  Extract a generalizable lesson from the pattern\n  | (add)            |  Initial: importance=2, confidence=0.5\n  +------------------+\n       |\n       | Confirmed again? -\u003e upvote (+1 importance, +0.05 confidence)\n       | Wrong? -\u003e downvote (-1 importance, auto-archive at 0)\n       |\n       | (importance \u003e= 5 AND confidence \u003e= 0.8)\n       v\n  +------------------+\n  | self_insight     |  Promote insight to a behavioral rule\n  | (promote)        |\n  +------------------+\n       |\n       v\n  +------------------+\n  | self_rules       |  Rule becomes part of SOUL\n  | (SOUL)           |  Loaded at session start, rated after tasks\n  +------------------+\n       |\n       | success_rate \u003c 0.2 after 10+ fires?\n       v\n  +------------------+\n  | Auto-Suspend     |  Ineffective rules are suspended automatically\n  +------------------+\n```\n\n### Error Categories\n\n| Category | When to Log |\n|----------|------------|\n| `code_error` | Bash command fails, test fails after changes, compilation error |\n| `logic_error` | Incorrect reasoning about code behavior or architecture |\n| `config_error` | Missing config, wrong dependency, environment issue |\n| `api_error` | External API returns 4xx/5xx or unexpected response |\n| `timeout` | Operation hangs, request times out |\n| `loop_detected` | Same fix attempted 3+ times without success |\n| `wrong_assumption` | Assumption about codebase proved incorrect |\n| `missing_context` | Had to ask user because context was insufficient |\n\n### Insight Lifecycle\n\n| Stage | Importance | Confidence | What Happens |\n|-------|-----------|------------|--------------|\n| Created | 2 | 0.50 | Extracted from error pattern, linked to source errors |\n| Upvoted | +1 per vote | +0.05 per vote | Confirmed by encountering the same pattern again |\n| Downvoted | -1 per vote | -0.05 per vote | Contradicted by evidence |\n| Archived | 0 | any | Auto-archived when importance drops to 0 |\n| Promoted | \u003e= 5 | \u003e= 0.80 | Becomes a behavioral rule in the SOUL |\n\n### Rule Statuses\n\n| Status | Meaning |\n|--------|---------|\n| `active` | Loaded at session start, applied during work |\n| `suspended` | Auto-suspended (success_rate \u003c 0.2 after 10+ fires) or manually paused |\n| `retired` | Permanently deactivated, kept for history |\n\n### Session Workflow\n\n1. **Session start**: call `self_rules_context(project=\"...\")` to load active rules\n2. **During work**: call `self_error_log(...)` on every error automatically\n3. **Pattern detected**: the system returns `pattern_detected: true` -- call `self_insight(action='add', ...)`\n4. **Insight confirmed**: call `self_insight(action='upvote', id=N)` when seeing the same pattern\n5. **Promotion ready**: the system returns `promotion_eligible: true` -- call `self_insight(action='promote', id=N)`\n6. **Task complete**: call `self_rules(action='rate', id=N, success=true/false)` for each rule used\n7. **Session end**: call `self_reflect(...)` with meta-observations about the session\n\n### Periodic Analysis\n\nRun `self_patterns(view='full_report')` periodically to see:\n- Most frequent error categories\n- Insights ready for promotion\n- Rule effectiveness rankings\n- Weekly error trend (improving or not)\n\n---\n\n## Web Dashboard\n\nThe installer sets up the dashboard as a system service that starts automatically on login:\n\n- **macOS**: LaunchAgent (`com.claude-total-memory.dashboard`)\n- **Windows**: Scheduled Task (`ClaudeTotalMemoryDashboard`)\n\nOpen [http://localhost:37737](http://localhost:37737) in your browser.\n\nTo start manually (if not using the installer):\n\n```bash\n# macOS / Linux\n.venv/bin/python src/dashboard.py\n\n# Windows\n.venv\\Scripts\\python.exe src\\dashboard.py\n```\n\nDashboard management:\n\n```bash\n# macOS — stop / start / logs\nlaunchctl bootout gui/$(id -u)/com.claude-total-memory.dashboard\nlaunchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.claude-total-memory.dashboard.plist\ntail -f ~/.claude-memory/logs/dashboard.log\n```\n\n```powershell\n# Windows — stop / start / remove\nStop-ScheduledTask -TaskName ClaudeTotalMemoryDashboard\nStart-ScheduledTask -TaskName ClaudeTotalMemoryDashboard\nUnregister-ScheduledTask -TaskName ClaudeTotalMemoryDashboard\n```\n\nThe dashboard provides:\n\n- **Statistics**: total knowledge, sessions, projects, health score, storage size, self-improvement stats\n- **Knowledge table**: searchable and filterable list of all active records with detail modal\n- **Sessions**: chronological session history with knowledge counts\n- **Graph**: interactive force-directed visualization of knowledge relations\n- **Self-Improvement** (new in v3.0): error patterns, insight candidates, promotion pipeline\n- **Rules/SOUL** (new in v3.0): active rules with fire counts, success rates, and status management\n\nThe dashboard is read-only and connects to the same SQLite database used by the MCP server (via WAL mode for safe concurrent access).\n\n---\n\n## Configuration\n\nAll configuration is via environment variables set in the MCP server config:\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `CLAUDE_MEMORY_DIR` | `~/.claude-memory` | Root directory for all storage |\n| `EMBEDDING_MODEL` | `all-MiniLM-L6-v2` | Sentence transformer model for semantic search |\n| `DECAY_HALF_LIFE` | `90` | Days until knowledge score decays to 50% |\n| `ARCHIVE_AFTER_DAYS` | `180` | Days before unrecalled records are archived |\n| `PURGE_AFTER_DAYS` | `365` | Days before archived records are purged |\n| `DASHBOARD_PORT` | `37737` | HTTP port for the web dashboard |\n\n---\n\n## Making Memory Automatic\n\nThe MCP server provides the tools -- but Claude needs **instructions** to use them proactively. There are three layers of configuration, from broadest to most specific:\n\n### Layer 1: Global Rules (all projects)\n\nAdd memory instructions to `~/.claude/CLAUDE.md` so Claude uses memory in **every** project, even ones without their own CLAUDE.md:\n\n```bash\n# Append the template to your global rules\ncat global-rules.md.template \u003e\u003e ~/.claude/CLAUDE.md\n```\n\nOr copy the relevant sections manually. The key instructions are:\n- **Always recall** before starting a task (`memory_recall`)\n- **Always save** after significant actions (`memory_save`) -- without asking\n- **Always log errors** automatically (`self_error_log`) -- without asking\n- **Load rules** at session start (`self_rules_context`)\n- Use the correct knowledge types (decision, solution, lesson, fact, convention)\n\nSee `global-rules.md.template` for the full ready-to-paste block.\n\n### Layer 2: Project CLAUDE.md (per project)\n\nCopy `CLAUDE.md.template` to a specific project's root to add project-specific memory rules:\n\n```bash\ncp CLAUDE.md.template /path/to/your/project/CLAUDE.md\n```\n\nThen replace every `my-project` with your actual project name. This ensures all knowledge is tagged with the correct project for filtered recall later.\n\nThe project template adds:\n- Auto-recall with project filter before every task\n- Auto-save triggers with project name and tags\n- Auto-error-logging triggers for self-improvement\n- Knowledge type reference table\n- Maintenance commands\n\n### Layer 3: Custom Agents (per agent)\n\nIf you use custom agents (`.claude/agents/*.md`), each agent needs its own memory instructions. See `agent-rules.md.template` for three options:\n\n**Option A: Full block** -- add a complete Memory System section to the agent's .md file with recall/save rules and trigger table.\n\n**Option B: Full agent example** -- use the template as a starting point for a new agent that has memory built in.\n\n**Option C: One-liner** -- add a single line to existing agents:\n\n```\nUse memory_recall before tasks and memory_save after decisions/fixes/lessons. Use self_error_log on failures. Project: \"my-project\".\n```\n\n### How the layers work together\n\n```\n~/.claude/CLAUDE.md          -\u003e \"Always use memory_recall and memory_save\"\n                                \"Always log errors with self_error_log\"\n                                (applies to ALL projects)\n\n/your-project/CLAUDE.md      -\u003e \"Project is 'my-app', save with these tags\"\n                                (adds project-specific context)\n\n.claude/agents/backend.md    -\u003e \"You are a backend developer. Use memory.\"\n                                (adds agent-specific behavior)\n```\n\nAll three layers are optional. Each one makes memory more automatic:\n- **Global only**: Claude uses memory everywhere, but without project filtering\n- **Global + Project**: Claude uses memory with proper project tags\n- **All three**: Custom agents also use memory proactively\n\n### What \"automatic\" means\n\nWith proper configuration, Claude will:\n\n1. **At session start** -- search memory for context relevant to the current task and load behavioral rules\n2. **During work** -- save decisions, bug fixes, gotchas, and conventions as they happen\n3. **On every error** -- log failures with category, severity, and fix for pattern analysis\n4. **At session end** -- save a summary of what was accomplished and reflect on the session\n5. **Never ask** \"should I save this?\" -- it just saves automatically\n6. **Never duplicate** -- the server deduplicates via Jaccard + fuzzy similarity\n7. **Learn over time** -- errors become insights, insights become rules, rules improve behavior\n\n### Templates reference\n\n**Claude Code:**\n\n| File | Purpose | Copy to |\n|------|---------|---------|\n| `CLAUDE.md.template` | Project-level memory rules | `/your-project/CLAUDE.md` |\n| `global-rules.md.template` | Global memory rules for all projects | `~/.claude/CLAUDE.md` (append) |\n| `agent-rules.md.template` | Guide for configuring custom agents | Read and apply to `.claude/agents/*.md` |\n\n**Codex CLI:**\n\n| File | Purpose | Copy to |\n|------|---------|---------|\n| `AGENTS.md.template` | Project-level memory rules | `/your-project/AGENTS.md` |\n| `codex-global-rules.md.template` | Global memory rules for all projects | `~/.codex/AGENTS.md` (append) |\n| `codex-skill/` | Memory skill for Codex | `~/.agents/skills/memory/` |\n\n---\n\n## Hooks (Optional)\n\nReady-to-use hooks are provided in the `hooks/` directory:\n\n| Hook | macOS/Linux | Windows | What it does |\n|------|-------------|---------|--------------|\n| SessionStart | `hooks/session-start.sh` | `hooks/session-start.ps1` | Detects project/branch, reminds Claude to use `memory_recall` and `self_rules_context` |\n| Stop | `hooks/on-stop.sh` | `hooks/on-stop.ps1` | Reminds Claude to save knowledge and reflect |\n| PostToolUse:Bash | `hooks/memory-trigger.sh` | `hooks/memory-trigger.ps1` | Suggests `memory_save` after git/docker/npm/pip/go/cargo/composer |\n| PostToolUse:Write | `hooks/auto-capture.sh` | `hooks/auto-capture.ps1` | Suggests `memory_observe` after file changes (new in v4.0) |\n| PostToolUse:Edit | `hooks/auto-capture.sh` | `hooks/auto-capture.ps1` | Same as Write -- tracks file edits (new in v4.0) |\n\n\u003e **Note:** The `install.sh` / `install.ps1` installer automatically registers all hooks in `settings.json`. Manual registration is only needed for custom setups.\n\n**macOS / Linux** -- add to `~/.claude/settings.json`:\n\n```json\n{\n  \"hooks\": {\n    \"SessionStart\": [\n      {\n        \"type\": \"command\",\n        \"command\": \"/FULL/PATH/TO/claude-total-memory/hooks/session-start.sh\"\n      }\n    ],\n    \"Stop\": [\n      {\n        \"type\": \"command\",\n        \"command\": \"/FULL/PATH/TO/claude-total-memory/hooks/on-stop.sh\"\n      }\n    ],\n    \"PostToolUse\": [\n      {\n        \"type\": \"command\",\n        \"command\": \"/FULL/PATH/TO/claude-total-memory/hooks/memory-trigger.sh\",\n        \"matcher\": \"Bash\"\n      },\n      {\n        \"type\": \"command\",\n        \"command\": \"/FULL/PATH/TO/claude-total-memory/hooks/auto-capture.sh\",\n        \"matcher\": \"Write\"\n      },\n      {\n        \"type\": \"command\",\n        \"command\": \"/FULL/PATH/TO/claude-total-memory/hooks/auto-capture.sh\",\n        \"matcher\": \"Edit\"\n      }\n    ]\n  }\n}\n```\n\n**Windows** -- add to `%USERPROFILE%\\.claude\\settings.json`:\n\n```json\n{\n  \"hooks\": {\n    \"SessionStart\": [\n      {\n        \"type\": \"command\",\n        \"command\": \"powershell -ExecutionPolicy Bypass -File C:/Users/yourname/claude-total-memory/hooks/session-start.ps1\"\n      }\n    ],\n    \"Stop\": [\n      {\n        \"type\": \"command\",\n        \"command\": \"powershell -ExecutionPolicy Bypass -File C:/Users/yourname/claude-total-memory/hooks/on-stop.ps1\"\n      }\n    ],\n    \"PostToolUse\": [\n      {\n        \"type\": \"command\",\n        \"command\": \"powershell -ExecutionPolicy Bypass -File C:/Users/yourname/claude-total-memory/hooks/memory-trigger.ps1\",\n        \"matcher\": \"Bash\"\n      },\n      {\n        \"type\": \"command\",\n        \"command\": \"powershell -ExecutionPolicy Bypass -File C:/Users/yourname/claude-total-memory/hooks/auto-capture.ps1\",\n        \"matcher\": \"Write\"\n      },\n      {\n        \"type\": \"command\",\n        \"command\": \"powershell -ExecutionPolicy Bypass -File C:/Users/yourname/claude-total-memory/hooks/auto-capture.ps1\",\n        \"matcher\": \"Edit\"\n      }\n    ]\n  }\n}\n```\n\nYou can also add a session-end hook that calls `extract_transcript.py` to compress the session transcript and queue it for knowledge extraction on the next session start:\n\n```bash\n# macOS / Linux\npython3 /FULL/PATH/TO/claude-total-memory/src/extract_transcript.py \\\n  --transcript \"$TRANSCRIPT_PATH\" \\\n  --session-id \"$SESSION_ID\" \\\n  --output-dir ~/.claude-memory/extract-queue \\\n  --db ~/.claude-memory/memory.db\n```\n\nThe transcript extractor:\n- Compresses transcripts to under 200 KB\n- Redacts sensitive data (API keys, tokens, secrets)\n- Auto-saves a session summary directly to the database\n- Queues the full transcript for detailed extraction via `memory_extract_session`\n\n---\n\n## Storage Structure\n\n```\n~/.claude-memory/\n  memory.db              SQLite database (8 tables: sessions, knowledge, relations,\n                         timeline, errors, insights, rules, observations + FTS5 indexes)\n  raw/                   Raw JSONL session logs\n    mcp_20260215_*.jsonl\n  chroma/                ChromaDB vector store (semantic embeddings)\n  transcripts/           Archived session transcripts\n  extract-queue/         Pending/completed transcript extractions\n    pending-*.json\n    done-*.json\n  backups/               JSON exports from memory_export\n    export_all_*.json\n```\n\nTypical storage sizes after moderate use:\n\n| Component | Approximate Size |\n|-----------|-----------------|\n| SQLite (memory.db) | 1-10 MB |\n| ChromaDB vectors | 10-50 MB |\n| Raw logs | 5-20 MB |\n| Transcripts | 1-10 MB |\n\n---\n\n## Knowledge Types\n\n| Type | When to Use | Example |\n|------|------------|---------|\n| `decision` | Architectural or design choice. **Always include WHY in context.** | \"Chose pgx over database/sql for connection pooling and pgx-specific features\" |\n| `solution` | Bug fix, workaround, or resolution to a problem. | \"Fixed Bitrix24 batch timeout by chunking requests to 50 items with 200ms delay\" |\n| `lesson` | Gotcha, pitfall, or unexpected behavior discovered. | \"Docker Compose v2 requires `depends_on.condition: service_healthy` -- silent failure without it\" |\n| `fact` | Configuration, version, endpoint, or objective information. | \"Production PostgreSQL 18 on port 5433, max_connections=200\" |\n| `convention` | Project pattern, coding standard, or team agreement. | \"All DTOs must be final readonly classes with constructor promotion\" |\n\n---\n\n## Relation Types\n\n| Type | Meaning | Example |\n|------|---------|---------|\n| `causal` | A caused or led to B | \"Timeout error (A) caused us to implement chunking (B)\" |\n| `solution` | B is the solution to A | \"Memory leak (A) was solved by connection pooling (B)\" |\n| `context` | B provides context for A | \"API rate limits (B) explain why we use queues (A)\" |\n| `related` | A and B are related | \"Docker config (A) relates to CI/CD pipeline (B)\" |\n| `contradicts` | A contradicts B | \"Old API docs (A) contradict actual behavior (B)\" |\n\n---\n\n## Architecture\n\nThe server is a single-file MCP server (`src/server.py`, ~2100 lines) built on:\n\n- **MCP SDK** (`mcp` package): protocol implementation and stdio transport\n- **SQLite FTS5**: full-text search with BM25 scoring, triggers for index sync\n- **ChromaDB**: persistent vector store with cosine similarity search\n- **sentence-transformers**: local embedding model (`all-MiniLM-L6-v2`, 384d)\n\nThe database contains 8 tables: `sessions`, `knowledge`, `relations`, `timeline` (core), `observations` (auto-capture), and `errors`, `insights`, `rules` (self-improvement).\n\n```\nClaude Code\n    |\n    | (MCP protocol over stdio)\n    v\n+----------------------------------------------+\n|  MCP Server (server.py) — 20 tools            |\n|                                                |\n|  +--------+  +---------+  +-------+  +------+ |\n|  | Store   |  | Recall  |  | Self- |  | Obs. | |\n|  | (write) |  | (read)  |  | Impr. |  | (cap)| |\n|  +----+----+  +----+----+  +---+---+  +--+---+ |\n|       |            |           |          |    |\n|  +----v------------v-----------v----------v-+  |\n|  |   SQLite (8 tables + FTS5)               |  |\n|  |   + ChromaDB (vectors)                   |  |\n|  |   + Relations Graph                      |  |\n|  |   + Privacy Stripping                    |  |\n|  +------------------------------------------+  |\n+----------------------------------------------+\n```\n\n- **Store**: handles writes -- save, update, delete, consolidate, retention, dedup\n- **Recall**: handles reads -- 4-tier search, timeline browsing, statistics\n- **Self-Improvement**: handles learning -- error logging, pattern detection, insight management, rule lifecycle\n- **Dashboard** (`src/dashboard.py`): standalone HTTP server using Python stdlib, read-only SQLite access\n\nThe server creates a new session ID on each startup and logs all tool calls to raw JSONL files for auditability.\n\n---\n\n## Using with OpenAI Codex CLI\n\nThe same MCP server works with OpenAI Codex CLI. No changes to `server.py` or the dashboard are needed -- the MCP protocol is identical.\n\n### Quick Start (Codex)\n\nIf you already have Claude Total Memory installed for Claude Code:\n\n```bash\nbash install-codex.sh\n```\n\nFresh install:\n\n```bash\ngit clone https://github.com/vbcherepanov/claude-total-memory.git\ncd claude-total-memory\nbash install-codex.sh\n```\n\nWindows:\n\n```powershell\ngit clone https://github.com/vbcherepanov/claude-total-memory.git\ncd claude-total-memory\npowershell -ExecutionPolicy Bypass -File install-codex.ps1\n```\n\nThe Codex installer reuses the same Python venv and memory database. If you already ran `install.sh`, dependencies are not re-downloaded.\n\n### Manual MCP Configuration (Codex)\n\nEdit `~/.codex/config.toml` and add:\n\n```toml\n[mcp_servers.memory]\ncommand = \"/FULL/PATH/TO/claude-total-memory/.venv/bin/python\"\nargs = [\"/FULL/PATH/TO/claude-total-memory/src/server.py\"]\nrequired = true\nstartup_timeout_sec = 15.0\ntool_timeout_sec = 120.0\n\n[mcp_servers.memory.env]\nCLAUDE_MEMORY_DIR = \"/Users/yourname/.claude-memory\"\nEMBEDDING_MODEL = \"all-MiniLM-L6-v2\"\n```\n\nWindows paths use forward slashes in TOML:\n\n```toml\n[mcp_servers.memory]\ncommand = \"C:/Users/yourname/claude-total-memory/.venv/Scripts/python.exe\"\nargs = [\"C:/Users/yourname/claude-total-memory/src/server.py\"]\nrequired = true\n\n[mcp_servers.memory.env]\nCLAUDE_MEMORY_DIR = \"C:/Users/yourname/.claude-memory\"\nEMBEDDING_MODEL = \"all-MiniLM-L6-v2\"\n```\n\n### AGENTS.md Setup (Codex)\n\nCodex CLI uses `AGENTS.md` instead of `CLAUDE.md` for instructions. The setup mirrors the Claude Code approach with three layers:\n\n**Layer 1: Global rules** -- append `codex-global-rules.md.template` to `~/.codex/AGENTS.md`:\n\n```bash\ncat codex-global-rules.md.template \u003e\u003e ~/.codex/AGENTS.md\n```\n\n**Layer 2: Project rules** -- copy `AGENTS.md.template` to your project root:\n\n```bash\ncp AGENTS.md.template /path/to/your/project/AGENTS.md\n# Then replace \"my-project\" with your project name\n```\n\n**Layer 3: Codex Skill** -- the installer copies `codex-skill/` to `~/.agents/skills/memory/` automatically. To install manually:\n\n```bash\nmkdir -p ~/.agents/skills/memory/agents\ncp codex-skill/SKILL.md ~/.agents/skills/memory/\ncp codex-skill/agents/openai.yaml ~/.agents/skills/memory/agents/\n```\n\n\u003e **Note:** Codex supports `AGENTS.override.md` for temporary instruction overrides without editing the base file.\n\n### Shared Memory\n\nBoth Claude Code and Codex CLI point to the same `~/.claude-memory/` database. Knowledge saved by one is instantly available to the other:\n\n```\n                    ~/.claude-memory/\n                    (SQLite + ChromaDB)\n                          |\n              +-----------+-----------+\n              |                       |\n        Claude Code               Codex CLI\n   (~/.claude/settings.json)  (~/.codex/config.toml)\n              |                       |\n              +--- Same server.py ----+\n              +--- Same 20 tools -----+\n              +--- Same dashboard ----+\n```\n\n**Important:** Do not run both CLIs simultaneously. SQLite supports only one writer at a time. Close one CLI before starting the other. The dashboard (read-only) can run alongside either CLI safely.\n\n### Hooks Limitations (Codex)\n\nCodex CLI's hook system is experimental and more limited than Claude Code's. The key difference:\n\n| Hook | Claude Code | Codex CLI |\n|------|-------------|-----------|\n| SessionStart | Stable -- reminds to call `memory_recall` | Not available -- instructions in AGENTS.md compensate |\n| Stop | Stable -- reminds to save knowledge | Not available -- instructions in AGENTS.md compensate |\n| PostToolUse | Stable -- suggests `memory_save` after git/docker | Experimental (`AfterToolUse` in v0.99.0+) |\n| Notification | Stable -- macOS/Windows alerts | `notify` config -- agent-turn-complete only |\n\nBecause of this, the `AGENTS.md.template` and `codex-global-rules.md.template` include stronger, more prominent instructions for manual recall and save steps.\n\nAn optional `hooks/codex-notify.sh` is provided for the `notify` mechanism:\n\n```toml\n# ~/.codex/config.toml\nnotify = [\"/path/to/claude-total-memory/hooks/codex-notify.sh\"]\n```\n\n### Claude Code vs Codex CLI -- Comparison\n\n| Aspect | Claude Code | Codex CLI |\n|--------|-------------|-----------|\n| Instructions file | `CLAUDE.md` | `AGENTS.md` |\n| Global instructions | `~/.claude/CLAUDE.md` | `~/.codex/AGENTS.md` |\n| MCP config | `~/.claude/settings.json` (JSON) | `~/.codex/config.toml` (TOML) |\n| Hooks | 5 stable events | Experimental |\n| Custom agents | `.claude/agents/*.md` | `.agents/skills/` |\n| Installer | `install.sh` / `install.ps1` | `install-codex.sh` / `install-codex.ps1` |\n| Override mechanism | None | `AGENTS.override.md` |\n| MCP tools | All 20 | All 20 (identical) |\n| Dashboard | Shared | Shared |\n| Memory database | `~/.claude-memory/` | `~/.claude-memory/` (same) |\n\n---\n\n## Upgrading from v3.x\n\nIf you are upgrading from v3.x (19 tools) to v4.0 (20 tools):\n\n**1. Update the code**\n\n```bash\ncd /path/to/claude-total-memory\ngit pull origin main\n```\n\n**2. Database migration**\n\nNo manual migration is needed. The server automatically:\n- Adds `branch` column to `sessions` and `knowledge` tables\n- Creates the new `observations` table\n- Adds missing FTS5 DELETE trigger for errors\n- Adds indexes on the `relations` table\n\nYour existing data is untouched.\n\n**3. Dashboard**\n\nThe new tabs (Live Feed, branch filter, token column) and the observations stat card appear automatically. Restart the dashboard:\n\n```bash\n# macOS\nlaunchctl bootout gui/$(id -u)/com.claude-total-memory.dashboard\nlaunchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.claude-total-memory.dashboard.plist\n```\n\n**4. Register new hooks (optional)**\n\nThe new `auto-capture` hooks suggest `memory_observe` after file changes. Either re-run `install.sh` (it registers all hooks automatically) or add manually:\n\n```json\n{\n  \"PostToolUse\": [\n    { \"type\": \"command\", \"command\": \"/path/to/hooks/auto-capture.sh\", \"matcher\": \"Write\" },\n    { \"type\": \"command\", \"command\": \"/path/to/hooks/auto-capture.sh\", \"matcher\": \"Edit\" }\n  ]\n}\n```\n\n**5. Update CLAUDE.md templates (optional)**\n\nCopy the updated `CLAUDE.md.template` to your projects to enable privacy tags and observation instructions.\n\n### What's new in v4.0\n\n- **Privacy stripping**: automatic redaction of API keys, JWTs, passwords, emails, credit cards before storage\n- **`\u003cprivate\u003e` tags**: explicitly exclude sensitive content from knowledge\n- **Branch-aware context**: knowledge tagged with git branch, filterable on recall\n- **3-level progressive disclosure**: compact (~50 tokens/result), summary, full -- up to 10x token savings\n- **Token cost estimation**: each result includes estimated tokens\n- **`memory_observe` tool**: lightweight file change tracking (30-day retention)\n- **SSE Live Feed**: real-time dashboard tab showing knowledge, errors, observations as they happen\n- **Branch filter**: filter knowledge by git branch in the dashboard\n- **Token column**: see token estimates in the knowledge table\n- **BM25 fix**: batch-relative normalization for better ranking\n- **Performance**: optimized search_by_tag, indexed relations table, fixed double dedup\n\n---\n\n## Upgrading from v2.x\n\nIf you are upgrading from v2.x (13 tools) to v3.0 (19 tools):\n\n**1. Update the code**\n\n```bash\ncd /path/to/claude-total-memory\ngit pull origin main\n```\n\nOr re-clone if you prefer a fresh copy.\n\n**2. Install dependencies**\n\nNo new dependencies are required. The self-improvement system uses only SQLite and the existing Python stdlib.\n\n```bash\nsource .venv/bin/activate\npip install -r requirements.txt  # just in case\n```\n\n**3. Database migration**\n\nNo manual migration is needed. The server automatically creates the three new tables (`errors`, `insights`, `rules`) and their FTS5 indexes on first startup. Your existing knowledge, sessions, and relations are untouched.\n\n**4. Dashboard**\n\nThe two new tabs (Self-Improvement, Rules/SOUL) and the self-improvement stat card appear automatically. Restart the dashboard if it is running as a service:\n\n```bash\n# macOS\nlaunchctl bootout gui/$(id -u)/com.claude-total-memory.dashboard\nlaunchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.claude-total-memory.dashboard.plist\n```\n\n```powershell\n# Windows\nRestart-ScheduledTask -TaskName ClaudeTotalMemoryDashboard\n```\n\n**5. Configure self-improvement instructions (optional)**\n\nFor Claude to use the new self-improvement tools automatically, add the self-improvement block to your `CLAUDE.md`. The key instructions are:\n\n- Call `self_rules_context(project=\"...\")` at session start\n- Call `self_error_log(...)` automatically on every error\n- Call `self_insight(action='add', ...)` when pattern detected\n- Call `self_reflect(...)` at session end\n- Rate rules after task completion\n\nSee `global-rules.md.template` for the full ready-to-paste block.\n\n---\n\n## Contributing\n\nContributions are welcome! Feel free to open issues and pull requests.\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'feat: add amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n---\n\n## Star History\n\nIf this project is useful to you, consider giving it a star — it helps others discover it.\n\n[![Star History Chart](https://api.star-history.com/svg?repos=vbcherepanov/claude-total-memory\u0026type=Date)](https://star-history.com/#vbcherepanov/claude-total-memory\u0026Date)\n\n---\n\n## License\n\nMIT License. See [LICENSE](LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvbcherepanov%2Fclaude-total-memory","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvbcherepanov%2Fclaude-total-memory","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvbcherepanov%2Fclaude-total-memory/lists"}