Compatibility
What OpenMem supports per coding agent and per memory provider, as of branch feat/openmem-context-layer (2026-10-29). Each cell records the strongest evidence that exists, not intent.
| Mark | Meaning |
|---|---|
| ✅ | Verified live against a real agent or server |
| 🧪 | Implemented and covered by automated tests; not yet verified live |
| ◐ | Partial or best effort; see the note |
| ❌ | Not supported |
Coding agents
Section titled “Coding agents”install-coding-agent wires the first five columns. Hermes, Gemini CLI, Amp and Cline get the unified MCP through install-mcp and their own MCP configuration; nothing else.
| Feature | Claude Code | Codex CLI | Cursor CLI | OpenCode 1.x | OpenCode 2.x |
|---|---|---|---|---|---|
Unified memory_* MCP |
🧪 ¹⁴ | 🧪 | 🧪 ¹⁴ | 🧪 ¹⁴ | ❌ ¹ |
| OpenMem skill | 🧪 | 🧪 | 🧪 | 🧪 | ❌ ¹ |
| Startup banner + recall | 🧪 | 🧪 ² | 🧪 ³ | 🧪 ²² | 🧪 ¹⁵ ²² |
Session registration (sessions/<sid>.json) |
🧪 | 🧪 | 🧪 ³ | 🧪 ⁴ | ✅ ¹⁵ ¹⁶ |
| Per-prompt recall | 🧪 | 🧪 | 🧪 ³ | 🧪 | ✅ ¹⁵ |
| Turn retention (Stop / idle) | 🧪 | ◐ ⁵ | ◐ ⁶ | 🧪 | ✅ ¹⁵ ¹⁷ |
/smart-compact trim flag |
🧪 ⁷ | 🧪 | 🧪 | 🧪 | ✅ ¹⁵ ¹⁸ |
| Context proxy (trim, tool-result compression) | ✅ ⁸ | ✅ ⁹ | ❌ ¹⁰ | ◐ ¹¹ | ✅ native ¹⁵ ¹⁹ |
| Agent compaction replaced by pointer + recall | ❌ | ❌ | ❌ | ❌ | ✅ ¹⁵ ([compaction] native) |
[agents] integration toggle |
🧪 ²¹ | 🧪 ²¹ | 🧪 ²¹ | 🧪 ²¹ | 🧪 ²⁰ |
rtk command rewriting (rtk init) |
🧪 ¹² | 🧪 ¹² | 🧪 ¹² | 🧪 ¹² | ❌ ¹³ |
- Not built for OpenCode 2. OpenCode 2 replaced the plugin API (migration guide) and its config shape (
"plugins","providers"); the installer’s MCP and skill wiring for OpenCode was written for OpenCode 1 and has not been checked against OpenCode 2. - Codex runs non-managed hooks only after review in
/hooks(Codex hooks). - Cursor hooks now go under
"hooks"in~/.cursor/hooks.json(Cursor’s documented shape). Earlier OpenMem releases wrote them at the top level, where Cursor does not read them. - The plugin registers on
session.createdand, whencontext-proxy.envexists, sendsx-openmem-session-idthroughchat.headers, so the proxy keys OpenCode trims by the real session id. Neither is verified in a live OpenCode session. - Codex does not guarantee a stable transcript format; unknown rows are skipped.
- Cursor Stop retention parses the observed local
agent-transcriptsJSONL shape; live hooktranscript_pathlinkage is unverified. - Detects the typed
/smart-compact, the expanded<command-name>tag, and anopenmem:smart-compactmarker; which form Claude Code passes to UserPromptSubmit is unverified. - Verified with
claude -pon a Claude subscription through LiteLLM v1.106.6: OAuth forwarding, streaming, signed thinking blocks, trims on resumed sessions, compressed tool results, recall injection, prompt-cache reads after a trim. Wiring throughinstall-coding-agent --context-proxy(settings.jsonenv) is test-covered only. - The
context-proxyservice is pinned to the dev buildghcr.io/berriai/litellm:v1.109.0-dev.1, the only LiteLLM release with PR #41522 (ChatGPT-subscription pass-through,/backend-api/codex/{models,responses}); v1.106.6 and v1.108.0-rc.1 lack it. Codex keeps its ChatGPT login through a custom[model_providers.openmem](requires_openai_auth = true,base_url = http://127.0.0.1:<port>/backend-api/codex, the LiteLLM key inhttp_headers);openai_base_urlalone cannot work, because the pass-through requiresx-litellm-api-keybeside the ChatGPT bearer and Codex 0.162.0 ignores header overrides on the built-inopenaiprovider (merge_configured_model_providers,codex-rs/model-provider-info/src/lib.rs). Verified once live (2026-10-29): Codex 0.162.0 with ChatGPT login, a tempCODEX_HOMEwired byinstallContextProxy, onecodex exec "reply with OK"against a throwaway container built from compose.yaml. Codex answeredOK; the proxy loggedGET /backend-api/codex/modelsandPOST /backend-api/codex/responses(200); the hook stored the turn insessions/<codex session id>.db(prompt_cache_keyis the session id) and recorded the reported 13,876 prompt tokens. Trims, tool-result compression and recall were not exercised live (one short turn); they ran in the dev image against a fake upstream (proxy/tests/image/run.py). Remote compaction is off for a custom provider (ProviderCapabilities,codex-rs/model-provider/src/capabilities.rs), so Codex compacts locally. Wiring throughinstall-coding-agentis test-covered only. - Whether Cursor CLI accepts a custom model base URL is unverified.
- The installer sets
provider.anthropic.options.baseURLandheaders; whether OpenCode appliesheadersto its built-in Anthropic provider is unverified. Chat Completions and Responses trimming is unit-tested only. - Tested with a fake
rtkthat records its arguments; flags taken from rtk’s README and source. No real rtk binary was run. - Tracked upstream in rtk-ai/rtk#3463.
- MCP connection checks recorded in
REVAMP.md(Claude Code, OpenCode; Cursor listed nine tools) ran against the earlier nine-tool list. The current 18 tools add the page, status, initiative andsmart_compact_*tools, which were checked through the facade only, not listed or called inside any agent. - Checked once live with OpenCode 2.2.1 (
@opencode/cli-linux-x64, run from a temp directory with tempHOME/XDG dirs andopencode run --standalone) against a loopback fake OpenAI-compatible model and a fake Hindsight API. Requests reached the fake model with the memory system part, the trimmed messages, the pointer plus recall plus ingest note, and the byte-identical sticky prefix on later turns. A sandbox helper plugin triggered compaction throughctx.session.compact; OpenCode stored the plugin’s summary as a completed compaction and made no summary model call. Hindsight was a fake server: recall content, retention and the ingest note never touched a real Hindsight. Not checked against a real model provider either.scripts/tests/test_opencode2_plugin.mjsandtest_context_trim.mjscover the same paths with a fakectx. - OpenCode 2.2.1 loaded the location’s plugins after
opencode runhad created the session, so nosession.createdevent arrived. The plugin registers on the firstpromptorcontexthook call instead. - Retention runs from the
experimental.idlesession hook (typed in@opencode/plugin2.2.1; not in the server docs), withsession.execution.succeeded,session.statusidle andsession.idleevents as fallbacks. OpenCode 2.2.1 published neithersession.statusnorsession.idleto the plugin. - Typed
/smart-compactthroughopencode runarrived as prompt text, and the next request was trimmed. The plugin also registers asmart-compactcommand throughctx.command.transform; that path is test-covered only. - OpenCode 2 is never pointed at the context proxy; the plugin trims in its
contexthook (context proxy). The trim was checked live (footnote 15); tool-result compression is test-covered only, including byte parity with the proxy’scompress_text. - The installer runs
opencode --version(major 2 →"plugins"directory entry, anything else →"plugin"file entry), removes the other shape and skips proxy wiring for OpenCode 2. Tested with a fakeopencodeonPATH. The installer itself was not run against a real OpenCode 2 install; the live check configured the plugin directory by hand. openmemmode removes the upstream Hindsight hooks, OpenCode plugin entry,hindsightMCP server (only when it runs the upstreamdist/mcp-server.js) andhindsight-coding-agentskill. Locations come from reading@vectorize-io/hindsight-coding-agents0.8.3dist/installer.js; tested against seeded files, not a live upstream install.- At 2c1a245 neither OpenCode plugin emitted a startup banner; banners are being added on this branch and are not yet verified live. For OpenCode 2, per-prompt recall through the prompt hook reached the model live (footnote 15).
Copilot and Pi are not in OpenMem’s agent registry. rtk supports both; Pi can point at the context proxy only if it accepts a custom Anthropic base URL (unverified).
Memory providers
Section titled “Memory providers”| Capability | Hindsight | mem0 | Cognee |
|---|---|---|---|
memory_recall / memory_search |
✅ | 🧪 | 🧪 |
memory_add |
🧪 | 🧪 | 🧪 |
memory_reflect |
✅ native /reflect |
🧪 search + optional LiteLLM synthesis | 🧪 search + optional LiteLLM synthesis |
memory_consolidate |
🧪 | ❌ no-op | 🧪 cognify |
memory_pages_list / search / read |
✅ | ❌ supported: false |
❌ supported: false |
memory_capture_initiative |
🧪 | ❌ supported: false |
❌ supported: false |
memory_status (ingest drained, per-operation) |
✅ | 🧪 always ready (synchronous ingest) | ❌ supported: false |
smart_compact_search / smart_compact_get |
🧪 local files, provider-independent | 🧪 | 🧪 |
| Proxy recall injection after a trim | ✅ | ❌ | ❌ |
memory_export / memory_import (PMM) |
🧪 | 🧪 | 🧪 |
“✅” for Hindsight means the call succeeded against the live server on this machine (28 banks, 41,701 facts); memory_recall and memory_reflect evidence is from REVAMP.md, the page and status tools from this branch. mem0 and Cognee rows are covered by facade tests with stubbed HTTP.
Hindsight model backends (wizard step 3)
Section titled “Hindsight model backends (wizard step 3)”| Backend | Status |
|---|---|
Ollama in Compose (profile ollama) |
✅ retain, reflect and consolidate answered through LiteLLM v1.106.6 |
| Ollama on the host | 🧪 |
| lemond on the host | 🧪 |
| Custom OpenAI-compatible URL | 🧪 |
| Claude subscription via Meridian | 🧪 stub server only; see Meridian guide |