Crack525/crossmem
One search across all your Claude Code and Gemini CLI memories — every project, every tool. Local-only CLI + MCP server. No cloud, no API keys.
Platform-specific configuration:
{
"mcpServers": {
"crossmem": {
"command": "npx",
"args": [
"-y",
"crossmem"
]
}
}
}Add the config above to .claude/settings.json under the mcpServers key.
[](https://pypi.org/project/crossmem/) [](https://pypi.org/project/crossmem/) [](https://pypistats.org/packages/crossmem) [](https://github.com/Crack525/crossmem/blob/main/LICENSE)
One search across all your Claude Code and Gemini CLI memories — every project, every tool.
You use AI coding assistants across multiple projects. Each project's memories are locked in a silo — and each tool has its own silo too. You solved credential masking in your backend API three months ago, but when you need it in a new microservice, your AI assistant starts from scratch.
Here's what's happening under the hood:
~/.claude/projects/
├── backend-api/memory/MEMORY.md ← Claude remembers here
├── mobile-app/memory/MEMORY.md ← ...but can't see here
└── data-pipeline/memory/MEMORY.md ← ...or here
~/.gemini/GEMINI.md ← Gemini's memories (separate silo entirely)Every project is a silo. Every tool is a silo. Knowledge doesn't compound — it resets.
$ crossmem ingest
Ingested: 42 memories across 4 projects (Claude Code + Gemini CLI)
$ crossmem search "credential masking"
Found 3 results for "credential masking":
[1] backend-api / Security
Source: MEMORY.md
- Credentials masked in experience_memory before persisting (_mask_actions)...
[2] mobile-app / Security
Source: MEMORY.md
- Credentials masked via _mask_context_credentials() + _mask_text()...
[3] backend-api / Security
Source: GEMINI.md
- Credential masking pattern: _mask_actions for persistence, _mask_text for logs...Three results. Two projects. Two AI tools. One query. The pattern was already solved.
Loading reviews...