{"repo":"MemPalace/mempalace","free":true,"listed":false,"github":"https://github.com/MemPalace/mempalace","clone":"git clone https://github.com/MemPalace/mempalace.git","description":"The best-benchmarked open-source AI memory system. And it's free.","language":"Python","stars":58409,"topics":["ai","chromadb","llm","mcp","memory","python"],"license":"MIT","category":"dev_tool","readme_excerpt":"<div align=\"center\">\n\n<img src=\"assets/mempalace_logo.png\" alt=\"MemPalace\" width=\"240\">\n\n# MemPalace\n\nLocal-first AI memory. Verbatim storage, pluggable backend, 96.6% R@5 raw on LongMemEval — zero API calls.\n\n[![][version-shield]][release-link]\n[![][python-shield]][python-link]\n[![][license-shield]][license-link]\n[![][discord-shield]][discord-link]\n\n</div>\n\n> [!CAUTION]\n> **Beware of impostor sites.** MemPalace has no other official websites. The **only** official sources are this **[GitHub repository](https://github.com/MemPalace/mempalace)**, the **[PyPI package](https://pypi.org/project/mempalace/)**, and the docs at **[mempalaceofficial.com](https://mempalaceofficial.com)**. Any other domain (including `.tech`, `.net`, or other `.com` variants) is an impostor and may distribute malware. Details and timeline: [docs/HISTORY.md](docs/HISTORY.md).\n\n> [!IMPORTANT]\n> **Claude Code sessions expire in 30 days without auto-save hooks wired.** [Read this →](https://github.com/MemPalace/mempalace/discussions/1388)\n>\n> Need the shortest recovery/setup path? Use the [Claude Code retention setup checklist](https://mempalaceofficial.com/guide/claude-code-retention.html).\n\n---\n\n## What it is\n\nMemPalace stores your conversation history as verbatim text and retrieves\nit with semantic search. It does not summarize, extract, or paraphrase.\nThe index is structured — people and projects become *wings*, topics\nbecome *rooms*, and original content lives in *drawers* — so searches\ncan be scoped rather than run against a flat corpus.\n\nThe retrieval layer is pluggable. The current default is ChromaDB; the\ninterface is defined in [`mempalace/backends/base.py`](mempalace/backends/base.py)\nand alternative backends can be dropped in without touching the rest of\nthe system.\n\nNothing leaves your machine unless you opt in.\n\nArchitecture, concepts, and mining flows:\n[mempalaceofficial.com/concepts/the-palace](https://mempalaceofficial.com/concepts/the-palace.html).\n\n---\n\n## Install\n\nMemPalace ships a CLI, so install it in an isolated environment to avoid\nPEP 668 errors on Debian/Ubuntu/Homebrew Pythons and to keep mempalace's\ndeps (`chromadb`, `numpy`, `grpcio`, …) from conflicting with anything\nelse in your global site-packages.\n\nWe recommend [`uv`](https://docs.astral.sh/uv/) — `uv tool install` puts\nthe `mempalace` CLI in an isolated environment on your PATH:\n\n```bash\nuv tool install mempalace\nmempalace init ~/projects/myapp\n```\n\n[`pipx`](https://pipx.pypa.io/) works the same way if you prefer it:\n`pipx install mempalace`.\n\nPrefer plain `pip` only inside an activated virtualenv where you\nexplicitly want `import mempalace` available:\n\n```bash\npython -m venv .venv && source .venv/bin/activate\npip install mempalace\n```\n\n### Docker\n\nA container image is also available for running the MCP server or the CLI\nwithout a local Python toolchain. Multi-arch (amd64 + arm64), so it runs\nnatively on Apple Silicon:\n\n```bash\ndocker pull ghcr.io/mempalace/mempalace:latest\n```\n\nEverything persists under `/data` — palace, config, and the cached embedding\nmodel — so mount a volume there and reuse it across runs:\n\n```bash\n# MCP server over stdio — note the `-i` flag (JSON-RPC needs stdin)\ndocker run -i --rm -v mempalace-data:/data ghcr.io/mempalace/mempalace\n\n# Run any CLI command instead. The container only sees what you mount, so\n# mount the directory you want to mine — read-only is enough, mining never\n# writes to the source.\ndocker run --rm -v mempalace-data:/data -v /path/to/project:/work:ro \\\n  ghcr.io/mempalace/mempalace mine /work\ndocker run --rm -v mempalace-data:/data ghcr.io/mempalace/mempalace search \"why GraphQL\"\n```\n\nThe first command that needs embeddings downloads the model into `/data`\n(~80 MB for the default `minilm`, ~300 MB for `embeddinggemma`). It is a\none-off as long as the volume persists, but it does mean the first call is\nslow and needs network — worth knowing before assuming a hung container.\n\nWire it into an MCP client (e.g. Claude Code) as a stdio server. Mount\nanything you want the server to be able to mine — it cannot reach your\ntranscripts otherwise:\n\n```json\n{\n  \"mcpServers\": {\n    \"mempalace\": {\n      \"command\": \"docker\",\n      \"args\": [\n        \"run\", \"-i\", \"--rm\",\n        \"-v\", \"mempalace-data:/data\",\n        \"-v\", \"/absolute/path/to/.claude/projects:/transcripts:ro\",\n        \"ghcr.io/mempalace/mempalace\"\n      ]\n    }\n  }\n}\n```\n\nUse a real absolute path there — `~` and `$HOME` are not expanded by every\nMCP client. Paths are container paths from then on: mine `/transcripts`, not\n`~/.claude/projects`.\n\n**Mount permissions on Linux.** The image runs as uid 1000 and bind mounts\nkeep their host ownership, so a mounted directory has to be readable by that\nuid — an ordinary `0755` checkout is fine, a `0700` directory is not, and the\nfailure surfaces as `PermissionError: [Errno 13]` rather than anything about\nDocker. Docker Desktop maps uids on macOS and Windows, so this only bites on\nLinux. Do **not** work around it with `--user`: `/data` is owned by uid 1000\ninside the image, so another uid cannot write the palace at all.\n\n`docker compose run --rm mcp` works too (see `docker-compose.yml`), and\n`deploy/docker-compose.server.yml` stands up the team server. To build the\nimage yourself instead of pulling — required for the GPU variant, which is not\npublished:\n\n```bash\ndocker build -t mempalace .                                  # CPU\ndocker build --build-arg EXTRAS=\"extract,spellcheck\" -t mempalace .\ndocker build -f Dockerfile.gpu -t mempalace:gpu .            # CUDA; run with --gpus all\n```\n\nThe GPU image is x86_64-only: `onnxruntime-gpu` publishes no aarch64 Linux\nwheels, so that last build fails on an ARM host (including Apple Silicon) with\na dependency-resolution error rather than an obvious one.\n\nNote that a build from a clone uses whatever branch you checked out; `develop`\nis the default branch, so pull the published image if you want the released\nversion.\n\n## Storage backends\n\nChromaDB is the default and needs no configuration. MemPalace also ships a\npluggable backend contract, exercised across deliberately different substrates\nso the contract is never accidentally shaped around one vendor. Every\nnon-default backend is opt-in.\n\n| Backend | Mode | Install | Namespaces | Lexical | Configure with |\n| ------- | ---- | ------- | :--------: | :-----: | -------------- |\n| `chroma` _(default)_ | Local (embedded) | bundled | – | ✓ | – |\n| `sqlite_exact` | Local (exact) | bundled | – | ✓ | – |\n| `milvus` | Local (Lite) · Server opt-in | `mempalace[milvus]` | ✓ | ✓ | `MEMPALACE_MILVUS_URI` |\n| `qdrant` | Server (REST) | bundled | ✓ | ✓ | `MEMPALACE_QDRANT_URL` |\n| `pgvector` | Server (Postgres) | `mempalace[pgvector]` | ✓ | ✓ | `MEMPALACE_PGVECTOR_DSN` |\n\nSelect with `--backend <name>`, `MEMPALACE_BACKEND=<name>`, or\n`\"backend\": \"<name>\"` in `config.json`. See\n[Storage backends](/guide/configuration#storage-backends) for connection\nvariables, namespace behavior, and deployment notes.\n\n## Quickstart\n\n```bash\n# Mine content into the palace\nmempalace mine ~/projects/myapp                    # project files\nmempalace mine ~/.claude/projects/ --mode convos   # Claude Code sessions (scope with --wing per project)\n\n# Search\nmempalace search \"why did we switch to GraphQL\"\n\n# Load context for a new session\nmempalace wake-up\n```\n\nFor Claude Code, Gemini CLI, [Antigravity](https://mempalaceofficial.com/guide/antigravity.html),\nMCP-compatible tools, and local models, see\n[mempalaceofficial.com/guide/getting-started](https://mempalaceofficial.com/guide/getting-started.html).\n\n---\n\n## Benchmarks\n\nAll numbers below are reproducible from this repository with the commands\nin [`benchmarks/BENCHMARKS.md`](benchmarks/BENCHMARKS.md). Full\nper-question result files are committed under `benchmarks/results_*`.\n\n**LongMemEval — retrieval recall (R@5, 500 questions):**\n\n| Mode | R@5 | LLM required |\n|---|---|---|\n| Raw (semantic search, no heuristics, no LLM) | **96.6%** | None |\n| Hybrid v4, held-out 450q (tuned on 50 dev, not seen during training) | **98.4%** | None |\n| Hybrid v4 + LLM rerank (full 500) | ≥99% | Any capable model |\n\nThe raw 96.6% requires no API key, no cloud, and no LLM at any stage. The\nhybrid pipeline adds keyword boosting, temporal-proximity boosting, and\npreference-pattern extraction; the held-out 98.4% is the honest\ngeneralisable figure.\n\nThe rerank pipeline promotes the best candidate out of the top-20\nretrieved sessions using an LLM reader. It works with any reasonably\ncapable model — we have reproduced it with Claude Haiku, Claude Sonnet,\nand minimax-m2.7 via Ollama Cloud (no Anthropic dependency). The gap\nbetween raw and reranked is model-agnostic; we do not headline a \"100%\"\nnumber because the last 0.6% was reached by inspecting specific wrong\nanswers, which `benchmarks/BENCHMARKS.md` flags as teaching to the test.\n\n**Other benchmarks (full results in [`benchmarks/BENCHMARKS.md`](benchmarks/BENCHMARKS.md)):**\n\n| Benchmark | Metric | Score | Notes |\n|---|---|---|---|\n| LoCoMo (session, top-10, no rerank) | R@10 | 60.3% | 1,986 questions |\n| LoCoMo (hybrid v5, top-10, no rerank) | R@10 | 88.9% | Same set |\n| ConvoMem (all categories, 250 items) | Avg recall | 92.9% | 50 per category |\n| MemBench (ACL 2025, 8,500 items) | R@5 | 80.3% | All categories |\n\nWe deliberately do not include a side-by-side comparison against Mem0,\nMastra, Hindsight, Supermemory, or Zep. Those projects publish different\nmetrics on different splits, and placing retrieval recall next to\nend-to-end QA accuracy is not an honest comparison. See each project's\nown research page for their published numbers.\n\n**Reproducing every result:**\n\n```bash\ngit clone https://github.com/MemPalace/mempalace.git\ncd mempalace\nuv sync --extra dev   # or: pip install -e \".[dev]\"\n# see benchmarks/README.md for dataset download commands\nuv run python benchmarks/longmemeval_bench.py /path/to/longmemeval_s_cleaned.json\n```\n\n---\n\n## Knowledge graph\n\nMemPalace includes a temporal entity-r","default_branch":"develop","files":555,"tree":[".agents/plugins/marketplace.json",".antigravity-plugin/README.md",".antigravity-plugin/hooks.json.tmpl",".antigravity-plugin/mcp_config.json",".antigravity-plugin/plugin.json",".antigravity-plugin/rules/mempalace-recall.md",".antigravity-plugin/skills/mempalace-recall/SKILL.md",".antigravity-plugin/skills/mempalace/SKILL.md",".claude-plugin/.mcp.json",".claude-plugin/README.md",".claude-plugin/commands/help.md",".claude-plugin/commands/init.md",".claude-plugin/commands/mine.md",".claude-plugin/commands/search.md",".claude-plugin/commands/status.md",".claude-plugin/hooks/hooks.json",".claude-plugin/hooks/mempal-precompact-hook.sh",".claude-plugin/hooks/mempal-session-end-hook.sh",".claude-plugin/hooks/mempal-stop-hook.sh",".claude-plugin/marketplace.json",".claude-plugin/plugin.json",".claude-plugin/skills/mempalace-recall/SKILL.md",".claude-plugin/skills/mempalace/SKILL.md",".codex-plugin/README.md",".codex-plugin/hooks.json",".codex-plugin/hooks/mempal-hook.sh",".codex-plugin/plugin.json",".codex-plugin/skills/help/SKILL.md",".codex-plugin/skills/init/SKILL.md",".codex-plugin/skills/mine/SKILL.md",".codex-plugin/skills/search/SKILL.md",".codex-plugin/skills/status/SKILL.md",".cursor-plugin/README.md",".cursor-plugin/marketplace.json",".cursor-plugin/mcp.json",".cursor-plugin/plugin.json",".devcontainer/devcontainer.json",".devcontainer/post-create.sh",".dockerignore",".github/CODEOWNERS",".github/ISSUE_TEMPLATE/bug_report.md",".github/ISSUE_TEMPLATE/feature_request.md",".github/PULL_REQUEST_TEMPLATE.md",".github/dependabot.yml",".github/workflows/bump-plugin-version.yml.disabled",".github/workflows/ci.yml",".github/workflows/deploy-docs.yml",".github/workflows/docker-publish.yml",".github/workflows/publish.yml",".github/workflows/version-guard.yml",".gitignore",".mcp.json",".pre-commit-config.yaml",".python-version","AGENTS.md","CHANGELOG.md","CLAUDE.md","CONTRIBUTING.md","Dockerfile","Dockerfile.gpu","LICENSE","MISSION.md","README.md","ROADMAP.md","SECURITY.md","assets/mempalace_logo.png","benchmarks/BENCHMARKS.md","benchmarks/HYBRID_MODE.md","benchmarks/README.md","benchmarks/convomem_bench.py","benchmarks/lme_split_50_450.json","benchmarks/locomo_bench.py","benchmarks/longmemeval_bench.py","benchmarks/membench_bench.py","benchmarks/mine_bench.py","benchmarks/model_eval/README.md","benchmarks/model_eval/__init__.py","benchmarks/model_eval/candidates.yaml","benchmarks/model_eval/datasets/README.md","benchmarks/model_eval/datasets/calibration/dataset.de.jsonl","benchmarks/model_eval/datasets/calibration/dataset.es.jsonl","benchmarks/model_eval/datasets/calibration/dataset.fr.jsonl","benchmarks/model_eval/datasets/calibration/dataset.hi.jsonl","benchmarks/model_eval/datasets/calibration/dataset.it.jsonl","benchmarks/model_eval/datasets/calibration/dataset.jsonl","benchmarks/model_eval/datasets/calibration/dataset.ko.jsonl","benchmarks/model_eval/datasets/calibration/dataset.pt-BR.jsonl","benchmarks/model_eval/datasets/calibration/dataset.ru.jsonl","benchmarks/model_eval/datasets/calibration/dataset.zh.jsonl","benchmarks/model_eval/datasets/calibration/labels.jsonl","benchmarks/model_eval/datasets/entity_extraction/dataset.de.jsonl","benchmarks/model_eval/datasets/entity_extraction/dataset.es.jsonl","benchmarks/model_eval/datasets/entity_extraction/dataset.fr.jsonl","benchmarks/model_eval/datasets/entity_extraction/dataset.hi.jsonl","benchmarks/model_eval/datasets/entity_extraction/dataset.it.jsonl","benchmarks/model_eval/datasets/entity_extraction/dataset.jsonl","benchmarks/model_eval/datasets/entity_extraction/dataset.ko.jsonl","benchmarks/model_eval/datasets/entity_extraction/dataset.pt-BR.jsonl","benchmarks/model_eval/datasets/entity_extraction/dataset.ru.jsonl","benchmarks/model_eval/datasets/entity_extraction/dataset.zh.jsonl","benchmarks/model_eval/datasets/entity_extraction/labels.jsonl","benchmarks/model_eval/datasets/memory_extraction/dataset.de.jsonl","benchmarks/model_eval/datasets/memory_extraction/dataset.es.jsonl","benchmarks/model_eval/datasets/memory_extraction/dataset.fr.jsonl","benchmarks/model_eval/datasets/memory_extraction/dataset.hi.jsonl","benchmarks/model_eval/datasets/memory_extraction/dataset.it.jsonl","benchmarks/model_eval/datasets/memory_extraction/dataset.jsonl","benchmarks/model_eval/datasets/memory_extraction/dataset.ko.jsonl","benchmarks/model_eval/datasets/memory_extraction/dataset.pt-BR.jsonl","benchmarks/model_eval/datasets/memory_extraction/dataset.ru.jsonl","benchmarks/model_eval/datasets/memory_extraction/dataset.zh.jsonl","benchmarks/model_eval/datasets/memory_extraction/labels.jsonl","benchmarks/model_eval/datasets/memory_extraction/labels.ko.jsonl","benchmarks/model_eval/datasets/room_classification/dataset.de.jsonl","benchmarks/model_eval/datasets/room_classification/dataset.es.jsonl","benchmarks/model_eval/datasets/room_classification/dataset.fr.jsonl","benchmarks/model_eval/datasets/room_classification/dataset.hi.jsonl","benchmarks/model_eval/datasets/room_classification/dataset.it.jsonl","benchmarks/model_eval/datasets/room_classification/dataset.jsonl","benchmarks/model_eval/datasets/room_classification/dataset.ko.jsonl","benchmarks/model_eval/datasets/room_classification/dataset.pt-BR.jsonl","benchmarks/model_eval/datasets/room_classification/dataset.ru.jsonl","benchmarks/model_eval/datasets/room_classification/dataset.zh.jsonl","benchmarks/model_eval/datasets/room_classification/labels.jsonl","benchmarks/model_eval/datasets/room_classification/room_lists.jsonl","benchmarks/model_eval/metrics.py","benchmarks/model_eval/orchestrator.py","benchmarks/model_eval/reports/2026-05-10-analysis.md","benchmarks/model_eval/reports/2026-05-10-z690-ex-glacial.md","benchmarks/model_eval/reports/2026-05-13-multilingual.md","benchmarks/model_eval/reports/README.md","benchmarks/model_eval/results/.gitignore","benchmarks/model_eval/results/2026-05-10-cloud-z690-ex-glacial.csv","benchmarks/model_eval/results/2026-05-10-spotcheck-qwen3.csv","benchmarks/model_eval/results/2026-05-10-z690-ex-glacial.csv","benchmarks/model_eval/results/2026-05-11-cloud-z690-ex-glacial.csv","benchmarks/model_eval/results/2026-05-11-modern-z690-ex-glacial.csv","benchmarks/model_eval/results/README.md","benchmarks/model_eval/runner.py","benchmarks/model_eval/summarize.py","benchmarks/model_eval/tasks/__init__.py","benchmarks/model_eval/tasks/calibration/__init__.py","benchmarks/model_eval/tasks/calibration/prompts.py","benchmarks/model_eval/tasks/calibration/score.py","benchmarks/model_eval/tasks/entity_extraction/__init__.py","benchmarks/model_eval/tasks/entity_extraction/prompts.py","benchmarks/model_eval/tasks/entity_extraction/score.py","benchmarks/model_eval/tasks/memory_extraction/__init__.py","benchmarks/model_eval/tasks/memory_extraction/prompts.py","benchmarks/model_eval/tasks/memory_extraction/score.py","benchmarks/model_eval/tasks/room_classification/__init__.py","benchmarks/model_eval/tasks/room_classification/prompts.py","benchmarks/model_eval/tasks/room_classification/score.py","benchmarks/model_eval/translate_datasets.py","benchmarks/results_convomem_raw_top10_20260414_1649.json","benchmarks/results_locomo_hybrid_session_top10_20260414_1649.json","benchmarks/results_locomo_raw_session_top10_20260414_1634.json","benchmarks/results_membench_hybrid_all_movie_top5_20260414_1656.json","benchmarks/results_mempal_hybrid_v4_held_out_session_20260414_1634.jsonl","benchmarks/results_mempal_hybrid_v4_llmrerank_session_20260414_1654.jsonl","benchmarks/results_mempal_hybrid_v4_llmrerank_session_20260414_1659.jsonl","benchmarks/results_mempal_raw_session_20260414_1629.jsonl","commands/mempalace-help.md","commands/mempalace-init.md","commands/mempalace-mine.md","commands/mempalace-search.md","commands/mempalace-status.md","deploy/docker-compose.server.yml","deploy/mempalace-server.service","deploy/server.env.example","docker-compose.yml","docker-entrypoint.sh","docs/CLOSETS.md","docs/HISTORY.md","docs/RELEASING.md","docs/authored-at.md","docs/format-coverage.md","docs/hook-write-routing.md","docs/recovery/index-metadata-recovery.md","docs/recovery/wing-name-migration.md","docs/rfcs/001-storage-backend-plugin-spec.md","docs/rfcs/002-source-adapter-plugin-spec.md","docs/rfcs/003-agent-logstream-coordination.md","docs/rfcs/004-replicated-palace.md","docs/rfcs/005-agent-identity-routing.md","docs/schema.sql","docs/virtual-line-numbering.md","docs/write-routing-policy.md","examples/HOOKS_TUTORIAL.md","examples/antigravity/README.md","examples/antigravity/hooks.json","examples/antigravity/mcp_config.json","examples/basic_mining.py","examples/convo_import.py","examples/cursor/README.md","examples/cursor/hooks.json","examples/cursor/hooks.minimal.json","examples/cursor/rules/README.md","examples/cursor/rules/mempalace-recall-always.mdc","examples/cursor/rules/mempalace-recall.mdc","examples/gemini_cli_setup.md","examples/mcp_setup.md","examples/mx3_public_shim_embeddings_rerank.md","examples/mx3_public_shim_embeddings_rerank.py","hooks/README.md","hooks/antigravity/INVESTIGATION.md","hooks/antigravity/README.md","hooks/antigravity/STDIN_SHAPE.md","hooks/antigravity/install.sh","hooks/antigravity/lib/common.sh","hooks/antigravity/mempal_save_hook_antigravity.sh","hooks/antigravity/mempal_wake_hook_antigravity.sh","hooks/cursor/README.md","hooks/cursor/STDIN_SHAPE.md","hooks/cursor/install.sh","hooks/cursor/lib/common.sh","hooks/cursor/mempal_precompact_hook_cursor.sh","hooks/cursor/mempal_save_hook_cursor.sh","hooks/cursor/mempal_wake_hook_cursor.sh","hooks/mempal_precompact_hook.sh","hooks/mempal_save_hook.sh","hooks/mempal_session_end_hook.sh","integrations/openclaw/SKILL.md","integrations/shared/coordination-protocol.md","integrations/shared/recall-protocol.md","landing/index.html","landing/mempalace_logo.png","mcp.json","mempalace/README.md","mempalace/__init__.py","mempalace/__main__.py","mempalace/_stdio.py","mempalace/backends/__init__.py","mempalace/backends/_sidecar.py","mempalace/backends/base.py","mempalace/backends/chroma.py","mempalace/backends/embedding_wrapper.py","mempalace/backends/milvus.py","mempalace/backends/pgvector.py","mempalace/backends/qdrant.py","mempalace/backends/registry.py","mempalace/backends/sqlite_exact.py","mempalace/backups.py","mempalace/cli.py","mempalace/closet_llm.py","mempalace/collision_scan.py","mempalace/config.py","mempalace/convo_miner.py","mempalace/convo_scanner.py","mempalace/corpus_origin.py","mempalace/daemon.py","mempalace/data/coca_content_words.json","mempalace/data/known_systems.json","mempalace/date_window.py","mempalace/dedup.py","mempalace/dialect.py","mempalace/diary_ingest.py","mempalace/dynamics.py","mempalace/embedding.py","mempalace/encoding_repair.py","mempalace/entities.py","mempalace/entity_detector.py","mempalace/entity_registry.py","mempalace/exporter.py","mempalace/fact_checker.py","mempalace/format_miner.py","mempalace/general_extractor.py","mempalace/hallways.py","mempalace/hlc.py","mempalace/hook_shell.py","mempalace/hooks_cli.py","mempalace/i18n/__init__.py","mempalace/i18n/be.json","mempalace/i18n/de.json","mempalace/i18n/en.json","mempalace/i18n/es.json","mempalace/i18n/fr.json","mempalace/i18n/hi.json","mempalace/i18n/id.json","mempalace/i18n/it.json","mempalace/i18n/ja.json","mempalace/i18n/ko.json","mempalace/i18n/pt-br.json","mempalace/i18n/ru.json","mempalace/i18n/zh-CN.json","mempalace/i18n/zh-TW.json","mempalace/ids.py","mempalace/instructions/help.md","mempalace/instructions/init.md","mempalace/instructions/mine.md","mempalace/instructions/search.md","mempalace/instructions/status.md","mempalace/instructions_cli.py","mempalace/integrations/__init__.py","mempalace/integrations/hermes/__init__.py","mempalace/knowledge_graph.py","mempalace/layers.py","mempalace/llm_client.py","mempalace/llm_refine.py","mempalace/logstream.py","mempalace/logsync.py","mempalace/mcp_server.py","mempalace/migrate.py","mempalace/miner.py","mempalace/normalize.py","mempalace/onboarding.py","mempalace/palace.py","mempalace/palace_graph.py","mempalace/project_scanner.py","mempalace/py.typed","mempalace/query_sanitizer.py","mempalace/repair.py","mempalace/replica.py","mempalace/room_detector_local.py","mempalace/searcher.py","mempalace/server_registry.py","mempalace/service.py","mempalace/sources/__init__.py","mempalace/sources/base.py","mempalace/sources/context.py","mempalace/sources/registry.py","mempalace/sources/transforms.py","mempalace/spellcheck.py","mempalace/split_mega_files.py","mempalace/sweeper.py","mempalace/sync.py","mempalace/transport.py","mempalace/version.py","mempalace/wal.py","mempalace/write_routing.py","openarena-claim.txt","pyproject.toml","rules/mempalace-recall.mdc","scripts/backfill_authored_at.py","scripts/docker-smoke.sh","scripts/mempalace_repair_encoding.py","skills/mempalace-recall/SKILL.md","skills/mempalace/SKILL.md","tests/_backend_conformance.py","tests/_chroma_palace_helper.py","tests/benchmarks/README.md","tests/benchmarks/__init__.py","tests/benchmarks/benchmark_dialect.py","tests/benchmarks/conftest.py","tests/benchmarks/data_generator.py","tests/benchmarks/report.py","tests/benchmarks/test_chromadb_stress.py","tests/benchmarks/test_ingest_bench.py","tests/benchmarks/test_knowledge_graph_bench.py","tests/benchmarks/test_layers_bench.py","tests/benchmarks/test_mcp_bench.py","tests/benchmarks/test_memory_profile.py","tests/benchmarks/test_palace_boost.py","tests/benchmarks/test_recall_threshold.py","tests/benchmarks/test_search_bench.py","tests/conftest.py","tests/test_antigravity_hooks_install.py","tests/test_antigravity_hooks_shell.py","tests/test_antigravity_plugin_manifest.py","tests/test_backend_conformance.py","tests/test_backends.py","tests/test_backfill_authored_at.py","tests/test_backups.py","tests/test_chroma_collection_lock.py","tests/test_claude_plugin_hook_config.py","tests/test_claude_plugin_hook_wrappers.py","tests/test_clean_lone_surrogates.py","tests/test_clean_nul_bytes.py","tests/test_cli.py","tests/test_cli_hallways.py","tests/test_cli_logstream.py","tests/test_cli_source_adapters.py","tests/test_closet_llm.py","tests/test_closets.py","tests/test_codex_plugin_manifest.py","tests/test_collection_metric_invariant.py","tests/test_collision_scan.py","tests/test_config.py","tests/test_config_extra.py","tests/test_config_palace_path.py","tests/test_convo_miner.py","tests/test_convo_miner_size_cap.py","tests/test_convo_miner_unit.py","tests/test_convo_scanner.py","tests/test_corpus_origin.py","tests/test_corpus_origin_integration.py","tests/test_cursor_hooks_install.py","tests/test_cursor_hooks_shell.py","tests/test_cursor_plugin_manifest.py","tests/test_daemon.py","tests/test_date_window.py","tests/test_dedup.py","tests/test_dialect.py","tests/test_distance_metric.py","tests/test_dynamics.py","tests/test_embedder_identity.py","tests/test_embedding.py","tests/test_embedding_api.py","tests/test_embedding_wrapper.py","tests/test_embeddinggemma.py"],"storefront":"/r/MemPalace","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/MemPalace/mempalace/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}