Other languages: Ukrainian | Russian
Use one local stdio MCP server everywhere, then adapt it to each client with the thinnest possible config.
Shared runtime contract:
- server id:
tqmemory - launch command:
turbo-memory-mcp serve - default write scope:
project - default read mode:
hybrid
| Client | Status | Quick connect | Ready file | Notes |
|---|---|---|---|---|
| Claude Code | production-ready | claude mcp add --scope project tqmemory -- turbo-memory-mcp serve |
examples/clients/claude.project.mcp.json | supports project and user MCP scopes |
| Codex | production-ready | codex mcp add tqmemory -- turbo-memory-mcp serve |
examples/clients/codex.config.toml | should be started from the target repository |
| Gemini CLI | production-ready | gemini mcp add tqmemory turbo-memory-mcp serve |
examples/clients/gemini.settings.json | supports settings.json, gemini mcp add, and MCP status checks |
| Cursor | production-ready | use the fixture file | examples/clients/cursor.project.mcp.json | project config is the safest default |
| OpenCode | production-ready | use the fixture file | examples/clients/opencode.config.json | local MCP config under mcp |
| Antigravity | compatibility target | use the fixture file | examples/clients/antigravity.mcp.json | architecture is compatible, but still smoke-test on the real app |
- Supports
claude mcp add ...,.mcp.json, and project or user scopes. - Project scope is preferred when memory must stay repository-specific.
- Use the shared runtime contract without extra wrappers.
- Supports MCP configuration and
codex mcp add .... - Start Codex in the target repository, or set
TQMEMORY_PROJECT_ROOTexplicitly. - Do not add the repository path to MCP
args; the server resolves the project from the process working directory.
- Supports
~/.gemini/settings.json,gemini mcp add ..., andgemini mcp list. - Start Gemini CLI in the target repository, or set
TQMEMORY_PROJECT_ROOTexplicitly if the MCP process starts elsewhere. - For stdio MCP visibility, trust the current folder if Gemini reports the server as configured but not connected.
- Picks up project prompts from
AGENTS.mdandGEMINI.mdwhen the fixture'scontext.fileNameblock is preserved on merge; the supplied fixture already lists both names so multi-agent contracts inAGENTS.mdreach Gemini CLI without a duplicateGEMINI.md.
- Supports project
.cursor/mcp.jsonand user~/.cursor/mcp.json. - Use project config when memory should stay tied to the repository.
- Use user config only when a broader cross-project setup is intentional.
- Supports local MCP definitions under
mcp. - The repository ships a ready-to-merge config object.
- Keep the command local and simple:
["turbo-memory-mcp", "serve"].
- Current documentation and integration reports show a compatible custom MCP flow.
- The repository includes a raw config example.
- Treat Antigravity as supported in architecture, but verify it with a smoke test before calling it production-proven.
Shared project memory works out of the box in the standard local setup.
- No extra sync service is required.
- No export/import handoff is required.
- No client-specific memory backend is required.
Codex, Gemini CLI, and other MCP clients can continue the same project memory when they:
- use the same
tqmemoryserver contract - run on the same machine with the same local storage root
- open the same repository, or resolve the same
TQMEMORY_PROJECT_ROOT
This is shared local memory, not remote cloud sync.
Keep the same contract across every client:
| Item | Standard |
|---|---|
| MCP server name | tqmemory |
| Runtime command | turbo-memory-mcp serve |
| Write scope vocabulary | project, global, hybrid |
| Install guidance | release install first, source install second |
This consistency matters because agents, prompts, docs, and smoke tests all become simpler when the runtime contract never changes from one client to another.
Ship these assets together:
- one ready file for each supported client
- one smoke checklist covering all clients
- one install contract tied to the current release
- one server id and one launch command everywhere
The integration strategy is intentionally boring:
- one server
- one launch command
- one vocabulary for scopes
- thin client-specific wrappers only where the client requires them